public JsonResult GetPayResult(string d1)
{
WxPayData inputObj = new WxPayData();
inputObj.SetValue("bill_date", d1);
inputObj.SetValue("bill_type", "SUCCESS");// 原先是ALL返回所有订单(不含待买家支付状态的订单,但是退款的订单会产生2条记录,一个是原SUCCESS的和REFUND的) 以下注意ALL与SUCCESS返回的数据字段不一样
WxPayData payData = WxPayApi.DownloadBill(inputObj);
if (payData.GetValues().ContainsKey("return_code"))
{
return Json(payData.ToJson());
}
else
{
string bill_data = payData.GetValues()["result"].ToString();
string[] _bill_data = bill_data.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
WxPayResult result = new WxPayResult();
//交易时间,公众账号ID,商户号,子商户号,设备号,微信订单号,商户订单号,用户标识,交易类型,交易状态,付款银行,货币种类,总金额,企业红包金额,
//微信退款单号,商户退款单号,退款金额,企业红包退款金额,退款类型,退款状态,商品名称,商户数据包,手续费,费率
//result.Header = _bill_data[0];
foreach (var item in _bill_data[0].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
if (item == "交易时间" || item == "用户标识" || item == "微信订单号" || item == "商户订单号" || item == "总金额")
{
result.Header += item + ",";
}
}
result.Header = result.Header.TrimEnd(new char[] { ',' });
result.PayBills = new List<PayBill>();
//交易时间,公众账号ID,商户号,子商户号,设备号,微信订单号,商户订单号,用户标识,交易类型,交易状态,付款银行,货币种类,总金额,企业红包金额,微信退款单号,商户退款单号,退款金额,企业红包退款金额,退款类型,退款状态,商品名称,商户数据包,手续费,费率
//总交易单数,总交易额,总退款金额,总企业红包退款金额,手续费总金额
//foreach (var _bill in _bill_data)
decimal delFee = 0;
int delOrder = 0;
for (int i = 1; i < _bill_data.Length - 2; i++)
{
var _bill = _bill_data[i];
string[] _b = _bill.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
//目前只处理body=XX支付的账单
if (_b[14].TrimStart('`') == "XX支付" && _b[9].TrimStart('`') == "SUCCESS")
{
PayBill _paybill = new PayBill();
_paybill.Time_End = _b[0].TrimStart('`');
_paybill.OpenId = _b[7].TrimStart('`');
_paybill.TradeId = _b[5].TrimStart('`');
if (_b[6].TrimStart('`').Contains("F"))
{
string[] spliteFlowNo = _b[6].TrimStart('`').Split('F');
_paybill.FlowNo = spliteFlowNo[0];
}
else
{
_paybill.FlowNo = _b[6].TrimStart('`');
}
_paybill.TotalFee = _b[12].TrimStart('`');
result.PayBills.Add(_paybill);
}
else
{
//从微信返回的总金额中
delOrder++;//不参与计算的订单数
delFee += Convert.ToDecimal(_b[12].TrimStart('`'));//不参与计算的支付金额
}
}
//汇总值赋值
result.PayTotal = new PayTotal();
result.PayTotal.TotalBill = new PayTotalBill();
result.PayTotal.TotalHeader = _bill_data[_bill_data.Length - 2];
string[] _total = _bill_data[_bill_data.Length - 1].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
if (delOrder > 0)
{
result.PayTotal.TotalBill.zjyds = Convert.ToString(Convert.ToInt32(_total[0].TrimStart('`')) - delOrder);
result.PayTotal.TotalBill.zjye = Convert.ToString((Convert.ToDecimal(_total[1].TrimStart('`')) - delFee));
}
else
{
result.PayTotal.TotalBill.zjyds = _total[0].TrimStart('`');
result.PayTotal.TotalBill.zjye = _total[1].TrimStart('`');
}
result.PayTotal.TotalBill.ztke = _total[2].TrimStart('`');
result.PayTotal.TotalBill.zqyhbtkje = _total[3].TrimStart('`');
result.PayTotal.TotalBill.sxfzje = _total[4].TrimStart('`');
//目前实际上客户不会微信商户后台和在线支付退款 所以暂不考虑退款产生的对账问题
return Json(result);
}
}
共有条评论 网友评论