最近接触的几种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=" + + "&timestamp=" + 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支付、信用卡支付,稍稍亟待下!!!!

posted @ 2017-11-17 14:11  ^-^YoYo  阅读(1436)  评论(0编辑  收藏  举报