最近接触的几种APP支付方式——微信app支付
项目环境是基于mvc .net core的,我们是写的web api形式,刚开始接触还是蛮头痛的,看了官方的dome后就清晰了不少
首先我们是app支付,要做支付功能应该去微信公众平台上面去申请商户账号,申请通过后,支付功能要再申请一次的
因为项目在.net core基础上直接引用nuget——Senparc.Weixin.MP,添加引用后就简单了,配置申请的商户MchId,AppId
调用统一下单接口,核心代码如下
var data = new TenPayV3UnifiedorderRequestData(
Config.AppId,
Config.MchId,
“备注”",
"订单号”,
total_fee,
model.ClientIp,
"回调方法url",
TenPayV3Type.APP,
"",
Config.Key,
TenPayV3Util.GetNoncestr(),
model.Amount.ToString(),
null,
null,
"",
);
var result = TenPayV3.Unifiedorder(data);
验证返回的签名是否和本地生成签名一致:生成签名方式:
var handler = new RequestHandler();
var sign = handler.CreateMd5Sign("key", Config.Key);
返回给app端支付签名(生成签名方式与上一种不同),生成方式:
var str = "appid=" + + "&noncestr=" + + "&package=Sign=WXPay" + "&partnerid=" + + "&prepayid=" + + "×tamp=" + timestamp;
var strg = str + "&key=" + Config.Key;
var appsign = EncryptHelper.GetMD5(strg);
至此支付下单完成,下单回调方法后台处理订单信息入库。
注释:.net core 不能直接获取返回的信息,要稍作处理获取
var body = HttpContext.Request.Body;
var buffer = new byte[HttpContext.Request.ContentLength.Value];
body.Read(buffer, 0, buffer.Length);
string content = Encoding.UTF8.GetString(buffer);
var res = XDocument.Parse(content);
res.Element("xml").Element("return_code").Value
后续还会分享支付宝支付、paypal支付、信用卡支付,稍稍亟待下!!!!