Commit c281b81f authored by 吴春's avatar 吴春

提交代码

parent 6bbf9622
......@@ -28,13 +28,74 @@ namespace Mall.WebApi.App_Code
/// 商户小程序处理类
/// </summary>
private Module.User.MiniProgramModule programModule = new Module.User.MiniProgramModule();
public PayUtil() { }
/// <summary>
/// 微信小程序支付
/// </summary>
/// <param name="sOrderNo"></param>
/// <param name="sProductName"></param>
/// <param name="dPrice"></param>
/// <param name="CustomerId"></param>
/// <param name="openid"></param>
/// <returns></returns>
public static string GetMinUnifiedOrder(string sOrderNo, string sProductName, decimal dPrice, string CustomerId, string openid, RB_MiniProgram_Extend model, IHttpContextAccessor _accessor)
{
App_Code.PayUtil payUtil = new App_Code.PayUtil();
var req = new Common.Pay.WeChatPat.RequestHandler();
req.SetKey(model.WeChatApiSecret);
//
req.SetParameter("appid", model.MiniAppId);//微信开放平台审核通过的应用APPID
req.SetParameter("mch_id", model.WeChatPayMerchants);//微信支付分配的商户号
req.SetParameter("nonce_str", payUtil.GetNoncestr());//随机字符串,不长于32位
req.SetParameter("body", sProductName);
req.SetParameter("attach", CustomerId);
req.SetParameter("out_trade_no", sOrderNo);
req.SetParameter("total_fee", (dPrice * 100).ToString("f0"));
req.SetParameter("spbill_create_ip", _accessor.HttpContext.Connection.RemoteIpAddress.ToString());
req.SetParameter("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));
req.SetParameter("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));
req.SetParameter("notify_url", Config.sTenpayNotify);
req.SetParameter("trade_type", "JSAPI");
req.SetParameter("openid", openid);
req.SetParameter("sign", req.CreateMd5Sign(_accessor));
var reqXml = req.ParseXml();
var result = Common.Pay.WeChatPat.HttpHelper.Post(new HttpParam()
{
Url = Mall.Common.Pay.WeChatPat.Model.ApiList.UnifiedOrderUrl,
PostParam = reqXml,
Encoding = Common.Pay.WeChatPat.HttpHelper.GetRequestEncoding(_accessor.HttpContext.Request),
});
var xe = XElement.Parse(result, LoadOptions.SetLineInfo);
LogHelper.Write(null, "订单号【" + sOrderNo + "】支付错误:" + xe);
try
{
var prepayId = xe.GetElement("return_code").Value;
var payReq = new RequestHandler();
payReq.SetParameter("appId", model.MiniAppId);
//创建签名
payReq.SetParameter("sign", payReq.CreateMd5Sign(_accessor));
var payReqXml = payReq.ParseXml();
var payReqJson = payReq.ParseJson();
return payReqJson;
}
catch (Exception)
{
var returnCode = xe.GetElement("return_code").Value;
var returnMsg = xe.GetElement("return_msg").Value;
return "{Error:'" + returnCode + returnMsg + "'}";
}
}
......@@ -49,9 +110,8 @@ namespace Mall.WebApi.App_Code
var res = new ResponseHandler();
var tradeType = res.GetParameter("trade_type");
//根据订单号获取微信支付配置信息
RB_MiniProgram model = new RB_MiniProgram(); //2020年5月26号新增逻辑还没有写完
RB_MiniProgram_Extend model = new RB_MiniProgram_Extend();
model = programModule.GetMiniProgramModule(new RB_MiniProgram_Extend { MallBaseId = 0, TenantId =0 });
//if (tradeType.Equals("APP"))
// res.SetKey(EheMall.WeChat.Common.WeChatConfig.GetOpenKey());
//if (tradeType.Equals("MWEB"))
......@@ -143,7 +203,7 @@ namespace Mall.WebApi.App_Code
// <summary>
/// 传入订单号OrderNumber,RefundNumber,总金额total_fee(分),RefundFee退款金额(分),
/// 退款 传入订单号OrderNumber,RefundNumber,总金额total_fee(分),RefundFee退款金额(分),
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
......@@ -234,6 +294,70 @@ namespace Mall.WebApi.App_Code
/// <summary>
/// 企业付款
/// </summary>
/// <param name="sOrderNo"></param>
/// <param name="sProductName"></param>
/// <param name="dPrice"></param>
/// <param name="CustomerId"></param>
/// <param name="openid"></param>
/// <returns></returns>
private string GetTransfersOrder(string sOrderNo, string sProductName, decimal dPrice, string CustomerId, string openid, RB_MiniProgram_Extend model, IHttpContextAccessor _accessor)
{
App_Code.PayUtil payUtil = new App_Code.PayUtil();
var req = new Common.Pay.WeChatPat.RequestHandler();
req.SetKey(model.WeChatApiSecret);
//
req.SetParameter("mch_appid", model.MiniAppId);//微信开放平台审核通过的应用APPID
req.SetParameter("mchid", model.WeChatPayMerchants);//微信支付分配的商户号
req.SetParameter("nonce_str", payUtil.GetNoncestr());//随机字符串,不长于32位
req.SetParameter("sign", req.CreateMd5Sign(_accessor));
req.SetParameter("partner_trade_no", sProductName);//商户订单号,需保持唯一性(只能是字母或者数字,不能包含有其它字符)
req.SetParameter("openid", openid);
req.SetParameter("check_name", "NO_CHECK");
req.SetParameter("amount", (dPrice * 100).ToString("f0"));
req.SetParameter("desc", "赞羊商城佣金提现");
var reqXml = req.ParseXml();
var result = Common.Pay.WeChatPat.HttpHelper.Post(new HttpParam()
{
Url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers",
PostParam = reqXml,
Encoding = Common.Pay.WeChatPat.HttpHelper.GetRequestEncoding(_accessor.HttpContext.Request),
CertPath = model.WeChatPayCertificateUrl,
CertPwd = model.WeChatApiSecret
});
var xe = XElement.Parse(result, LoadOptions.SetLineInfo);
LogHelper.Write(null, "订单号【" + sOrderNo + "】支付错误:" + xe);
try
{
var prepayId = xe.GetElement("prepay_id").Value;
var payReq = new RequestHandler();
payReq.SetKey(model.WeChatApiSecret);
payReq.SetParameter("appId", model.MiniAppId);
// req.SetParameter("mch_id", EheMall.WeChat.Common.WeChatConfig.GetOpenMchID());//微信支付分配的商户号
payReq.SetParameter("timeStamp", payUtil.GetTimestamp());
payReq.SetParameter("nonceStr", payUtil.GetNoncestr());
payReq.SetParameter("package", "prepay_id=" + prepayId);
payReq.SetParameter("signType", "MD5");
//创建签名
payReq.SetParameter("sign", payReq.CreateMd5Sign(_accessor));
var payReqXml = payReq.ParseXml();
var payReqJson = payReq.ParseJson();
return payReqJson;
}
catch (Exception)
{
var returnCode = xe.GetElement("return_code").Value;
var returnMsg = xe.GetElement("return_msg").Value;
return "{Error:'" + returnCode + returnMsg + "'}";
}
}
/// <summary>
......@@ -250,7 +374,7 @@ namespace Mall.WebApi.App_Code
/// 获取时间戳
/// </summary>
/// <returns></returns>
public string GetTimestamp()
public string GetTimestamp()
{
var ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
return Convert.ToInt64(ts.TotalSeconds).ToString(CultureInfo.InvariantCulture);
......@@ -262,7 +386,7 @@ namespace Mall.WebApi.App_Code
/// <param name="instr"></param>
/// <param name="charset">默认值:utf-8</param>
/// <returns></returns>
public string UrlEncode(string instr, string charset)
public string UrlEncode(string instr, string charset)
{
if (instr == null || instr.Trim() == "")
return "";
......
......@@ -19,7 +19,7 @@ namespace Mall.WebApi.Controllers.AppletWeChat
private static object _lock = new object();
UserCommonModule userCommonModule = new UserCommonModule();
/// <summary>
/// 订单支付回调
/// </summary>
......
......@@ -93,7 +93,7 @@ namespace Mall.WebApi.Controllers.AppletWeChat
switch ((int)demodel.OrderPayType)
{
case 1://微信支付
sPayInfo = GetMinUnifiedOrder(sOrderNo, demodel.GoodsName, model.Income.Value, model.UserId.ToString(), demodel.OpenId, miniProgram);
sPayInfo = App_Code.PayUtil.GetMinUnifiedOrder(sOrderNo, demodel.GoodsName, model.Income.Value, model.UserId.ToString(), demodel.OpenId, miniProgram, _accessor);
break;
default:
break;
......@@ -104,140 +104,14 @@ namespace Mall.WebApi.Controllers.AppletWeChat
/// <summary>
/// 微信小程序支付
/// </summary>
/// <param name="sOrderNo"></param>
/// <param name="sProductName"></param>
/// <param name="dPrice"></param>
/// <param name="CustomerId"></param>
/// <param name="openid"></param>
/// <returns></returns>
private string GetMinUnifiedOrder(string sOrderNo, string sProductName, decimal dPrice, string CustomerId, string openid, RB_MiniProgram_Extend model)
{
App_Code.PayUtil payUtil = new App_Code.PayUtil();
var req = new Common.Pay.WeChatPat.RequestHandler();
req.SetKey(model.WeChatApiSecret);
//
req.SetParameter("appid", model.MiniAppId);//微信开放平台审核通过的应用APPID
req.SetParameter("mch_id", model.WeChatPayMerchants);//微信支付分配的商户号
req.SetParameter("nonce_str", payUtil.GetNoncestr());//随机字符串,不长于32位
req.SetParameter("body", sProductName);
req.SetParameter("attach", CustomerId);
req.SetParameter("out_trade_no", sOrderNo);
req.SetParameter("total_fee", (dPrice * 100).ToString("f0"));
req.SetParameter("spbill_create_ip", _accessor.HttpContext.Connection.RemoteIpAddress.ToString());
req.SetParameter("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));
req.SetParameter("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));
req.SetParameter("notify_url", Config.sTenpayNotify);
req.SetParameter("trade_type", "JSAPI");
req.SetParameter("openid", openid);
req.SetParameter("sign", req.CreateMd5Sign(_accessor));
var reqXml = req.ParseXml();
var result = Common.Pay.WeChatPat.HttpHelper.Post(new HttpParam()
{
Url = Mall.Common.Pay.WeChatPat.Model.ApiList.UnifiedOrderUrl,
PostParam = reqXml,
Encoding = Common.Pay.WeChatPat.HttpHelper.GetRequestEncoding(_accessor.HttpContext.Request),
// Encoding = HttpContext.Current.Request.ContentEncoding
});
var xe = XElement.Parse(result, LoadOptions.SetLineInfo);
LogHelper.Write(null, "订单号【" + sOrderNo + "】支付错误:" + xe);
try
{
var prepayId = xe.GetElement("return_code").Value;
var payReq = new RequestHandler();
payReq.SetParameter("appId", model.MiniAppId);
//创建签名
payReq.SetParameter("sign", payReq.CreateMd5Sign(_accessor));
var payReqXml = payReq.ParseXml();
var payReqJson = payReq.ParseJson();
return payReqJson;
}
catch (Exception)
{
var returnCode = xe.GetElement("return_code").Value;
var returnMsg = xe.GetElement("return_msg").Value;
return "{Error:'" + returnCode + returnMsg + "'}";
}
}
/// <summary>
/// 企业付款
/// </summary>
/// <param name="sOrderNo"></param>
/// <param name="sProductName"></param>
/// <param name="dPrice"></param>
/// <param name="CustomerId"></param>
/// <param name="openid"></param>
/// <returns></returns>
private string GetTransfersOrder(string sOrderNo, string sProductName, decimal dPrice, string CustomerId, string openid, RB_MiniProgram_Extend model)
{
App_Code.PayUtil payUtil = new App_Code.PayUtil();
var req = new Common.Pay.WeChatPat.RequestHandler();
req.SetKey(model.WeChatApiSecret);
//
req.SetParameter("mch_appid", model.MiniAppId);//微信开放平台审核通过的应用APPID
req.SetParameter("mchid", model.WeChatPayMerchants);//微信支付分配的商户号
req.SetParameter("nonce_str", payUtil.GetNoncestr());//随机字符串,不长于32位
req.SetParameter("sign", req.CreateMd5Sign(_accessor));
req.SetParameter("partner_trade_no", sProductName);//商户订单号,需保持唯一性(只能是字母或者数字,不能包含有其它字符)
req.SetParameter("openid", openid);
req.SetParameter("check_name", "NO_CHECK");
req.SetParameter("amount", (dPrice * 100).ToString("f0"));
req.SetParameter("desc", "赞羊商城佣金提现");
var reqXml = req.ParseXml();
var result = Common.Pay.WeChatPat.HttpHelper.Post(new HttpParam()
{
Url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers",
PostParam = reqXml,
Encoding = Common.Pay.WeChatPat.HttpHelper.GetRequestEncoding(_accessor.HttpContext.Request),
CertPath = model.WeChatPayCertificateUrl,
CertPwd = model.WeChatApiSecret
});
var xe = XElement.Parse(result, LoadOptions.SetLineInfo);
LogHelper.Write(null, "订单号【" + sOrderNo + "】支付错误:" + xe);
try
{
var prepayId = xe.GetElement("prepay_id").Value;
var payReq = new RequestHandler();
payReq.SetKey(model.WeChatApiSecret);
payReq.SetParameter("appId", model.MiniAppId);
// req.SetParameter("mch_id", EheMall.WeChat.Common.WeChatConfig.GetOpenMchID());//微信支付分配的商户号
payReq.SetParameter("timeStamp", payUtil.GetTimestamp());
payReq.SetParameter("nonceStr", payUtil.GetNoncestr());
payReq.SetParameter("package", "prepay_id=" + prepayId);
payReq.SetParameter("signType", "MD5");
//创建签名
payReq.SetParameter("sign", payReq.CreateMd5Sign(_accessor));
var payReqXml = payReq.ParseXml();
var payReqJson = payReq.ParseJson();
return payReqJson;
}
catch (Exception)
{
var returnCode = xe.GetElement("return_code").Value;
var returnMsg = xe.GetElement("return_msg").Value;
return "{Error:'" + returnCode + returnMsg + "'}";
}
}
......
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