Commit 6bbf9622 authored by 吴春's avatar 吴春

提交退款

parent b27b92ea
...@@ -28,15 +28,7 @@ namespace Mall.WebApi.App_Code ...@@ -28,15 +28,7 @@ namespace Mall.WebApi.App_Code
/// 商户小程序处理类 /// 商户小程序处理类
/// </summary> /// </summary>
private Module.User.MiniProgramModule programModule = new Module.User.MiniProgramModule(); private Module.User.MiniProgramModule programModule = new Module.User.MiniProgramModule();
private IHttpContextAccessor _accessor;
/// <summary>
/// 构造函数
/// </summary>
public PayUtil(IHttpContextAccessor accessor)
{
_accessor = accessor;
}
public PayUtil() { } public PayUtil() { }
...@@ -150,16 +142,105 @@ namespace Mall.WebApi.App_Code ...@@ -150,16 +142,105 @@ namespace Mall.WebApi.App_Code
// <summary>
/// 传入订单号OrderNumber,RefundNumber,总金额total_fee(分),RefundFee退款金额(分),
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public BaseResult Refund(PayParam param, RB_MiniProgram_Extend model, IHttpContextAccessor _accessor)
{
App_Code.PayUtil payUtil = new App_Code.PayUtil();
if (param.TotalFee == null || param.RefundFee == null || string.IsNullOrWhiteSpace(param.OrderNumber) || string.IsNullOrWhiteSpace(param.RefundNumber))
{
return new BaseResult() { IsSuccess = false, Message = "参数错误!" };
}
#region 微信退款
var packageReq = new RequestHandler();
packageReq.SetKey(model.WeChatApiSecret);
packageReq.SetParameter("appid", model.MiniAppId);
packageReq.SetParameter("mch_id", model.WeChatPayMerchants);
packageReq.SetParameter("nonce_str", payUtil.GetNoncestr());
//packageReq.SetParameter("transaction_id", param.OrderNumber);
packageReq.SetParameter("out_trade_no", param.OrderNumber);
packageReq.SetParameter("out_refund_no", param.RefundNumber);
packageReq.SetParameter("total_fee", (param.TotalFee.Value).ToString(System.Globalization.CultureInfo.InvariantCulture));
packageReq.SetParameter("refund_fee", param.RefundFee.Value.ToString(System.Globalization.CultureInfo.InvariantCulture));
packageReq.SetParameter("sign", packageReq.CreateMd5Sign(_accessor));
var reqXml = packageReq.ParseXml();
var result = Common.Pay.WeChatPat.HttpHelper.Post(new HttpParam()
{
Url = "https://api.mch.weixin.qq.com/secapi/pay/refund",
PostParam = reqXml,
Encoding = Common.Pay.WeChatPat.HttpHelper.GetRequestEncoding(_accessor.HttpContext.Request),
CertPath = model.WeChatPayCertificateUrl,
CertPwd = model.WeChatApiSecret
});
var xe = XElement.Parse(result, LoadOptions.SetLineInfo);
var returnCode = xe.GetElement("return_code").Value;
//退款成功
if (returnCode.Equals("SUCCESS"))
{
var resultCode = xe.GetElement("result_code").Value;
if (resultCode.Equals("SUCCESS"))
{
var outTradeNo = xe.GetElement("out_trade_no").Value;
//在外面回写订单
return new BaseResult()
{
IsSuccess = true,
Data = new Dictionary<string, string>
{
{"OrderNumber", outTradeNo}
}
};
}
}
else
{//查询退款情况
packageReq = new RequestHandler();
packageReq.SetKey(model.WeChatApiSecret);
packageReq.SetParameter("appid", model.MiniAppId);
packageReq.SetParameter("mch_id", model.WeChatPayMerchants);
packageReq.SetParameter("nonce_str", payUtil.GetNoncestr());
packageReq.SetParameter("sign", packageReq.CreateMd5Sign(_accessor));
packageReq.SetParameter("out_refund_no", param.RefundNumber);
reqXml = packageReq.ParseXml();
result = Common.Pay.WeChatPat.HttpHelper.Post(new HttpParam()
{
Url = "https://api.mch.weixin.qq.com/pay/refundquery",
PostParam = reqXml,
Encoding = Common.Pay.WeChatPat.HttpHelper.GetRequestEncoding(_accessor.HttpContext.Request),
});
xe = XElement.Parse(result, LoadOptions.SetLineInfo);
returnCode = xe.GetElement("return_code").Value;
if (returnCode.Equals("SUCCESS"))
{
}
}
var errCodeDes = xe.GetElement("err_code_des") == null ? "" : xe.GetElement("err_code_des").Value;
var returnMsg = xe.GetElement("return_msg") == null ? "" : xe.GetElement("return_msg").Value;
return new BaseResult() { IsSuccess = false, Message = returnMsg + errCodeDes };
#endregion
}
/// <summary> /// <summary>
/// 获取随机字符串 /// 获取随机字符串
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public string GetNoncestr() public string GetNoncestr()
{ {
var random = new Random(); var random = new Random();
return SecurityHelper.MD5EncryptWeChat(random.Next(1000).ToString(CultureInfo.InvariantCulture), "GBK"); return SecurityHelper.MD5EncryptWeChat(random.Next(1000).ToString(CultureInfo.InvariantCulture), "GBK");
......
...@@ -237,95 +237,7 @@ namespace Mall.WebApi.Controllers.AppletWeChat ...@@ -237,95 +237,7 @@ namespace Mall.WebApi.Controllers.AppletWeChat
// <summary>
/// 传入订单号OrderNumber,RefundNumber,总金额total_fee(分),RefundFee退款金额(分),
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public BaseResult Refund(PayParam param, RB_MiniProgram_Extend model)
{
App_Code.PayUtil payUtil = new App_Code.PayUtil();
if (param.TotalFee == null || param.RefundFee == null || string.IsNullOrWhiteSpace(param.OrderNumber) || string.IsNullOrWhiteSpace(param.RefundNumber))
{
return new BaseResult() { IsSuccess = false, Message = "参数错误!" };
}
#region 微信退款
var packageReq = new RequestHandler();
packageReq.SetKey(model.WeChatApiSecret);
packageReq.SetParameter("appid", model.MiniAppId);
packageReq.SetParameter("mch_id", model.WeChatPayMerchants);
packageReq.SetParameter("nonce_str", payUtil.GetNoncestr());
//packageReq.SetParameter("transaction_id", param.OrderNumber);
packageReq.SetParameter("out_trade_no", param.OrderNumber);
packageReq.SetParameter("out_refund_no", param.RefundNumber);
packageReq.SetParameter("total_fee", (param.TotalFee.Value).ToString(System.Globalization.CultureInfo.InvariantCulture));
packageReq.SetParameter("refund_fee", param.RefundFee.Value.ToString(System.Globalization.CultureInfo.InvariantCulture));
packageReq.SetParameter("sign", packageReq.CreateMd5Sign(_accessor));
var reqXml = packageReq.ParseXml();
var result = Common.Pay.WeChatPat.HttpHelper.Post(new HttpParam()
{
Url = "https://api.mch.weixin.qq.com/secapi/pay/refund",
PostParam = reqXml,
Encoding = Common.Pay.WeChatPat.HttpHelper.GetRequestEncoding(_accessor.HttpContext.Request),
CertPath = model.WeChatPayCertificateUrl,
CertPwd = model.WeChatApiSecret
});
var xe = XElement.Parse(result, LoadOptions.SetLineInfo);
var returnCode = xe.GetElement("return_code").Value;
//退款成功
if (returnCode.Equals("SUCCESS"))
{
var resultCode = xe.GetElement("result_code").Value;
if (resultCode.Equals("SUCCESS"))
{
var outTradeNo = xe.GetElement("out_trade_no").Value;
//在外面回写订单
return new BaseResult()
{
IsSuccess = true,
Data = new Dictionary<string, string>
{
{"OrderNumber", outTradeNo}
}
};
}
}
else {//查询退款情况
packageReq = new RequestHandler();
packageReq.SetKey(model.WeChatApiSecret);
packageReq.SetParameter("appid", model.MiniAppId);
packageReq.SetParameter("mch_id", model.WeChatPayMerchants);
packageReq.SetParameter("nonce_str", payUtil.GetNoncestr());
packageReq.SetParameter("sign", packageReq.CreateMd5Sign(_accessor));
packageReq.SetParameter("out_refund_no", param.RefundNumber);
reqXml = packageReq.ParseXml();
result = Common.Pay.WeChatPat.HttpHelper.Post(new HttpParam()
{
Url = "https://api.mch.weixin.qq.com/pay/refundquery",
PostParam = reqXml,
Encoding = Common.Pay.WeChatPat.HttpHelper.GetRequestEncoding(_accessor.HttpContext.Request),
});
xe = XElement.Parse(result, LoadOptions.SetLineInfo);
returnCode = xe.GetElement("return_code").Value;
if (returnCode.Equals("SUCCESS"))
{
}
}
var errCodeDes = xe.GetElement("err_code_des") == null ? "" : xe.GetElement("err_code_des").Value;
var returnMsg = xe.GetElement("return_msg") == null ? "" : xe.GetElement("return_msg").Value;
return new BaseResult() { IsSuccess = false, Message = returnMsg + errCodeDes };
#endregion
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment