node.js 微信商户平台app支付--踩坑过程

一,首先肯定是需要细看微信app支付开发者文档,重点是接口规则APP支付业务流程。流程里面共有四个端:微信app客户端,商户自己开发的app客户端,商户app服务器端,微信服务器端。那么商户服务器端需要做的工作,第一步就是统一下单,详看API列表统一下单


贴上第一段统一下单的代码
exports.appPay = function (参数自定,callback) {
var appid = "微信商户平台appid";
var mch_id = "微信支付分配的商户号";
var nonce_str = randomString(30),方法会贴出,这个随机字符串最好存贮进数据库,支付流程最后的查询支付状态需要传参;
var total_fee = 总价;
var notify_url = 支付成功之后,接收微信服务器的回调信息(微信数据传递都是xml格式,所以路由设置里应该要设置可以接收xml数据,下面会提到);
var body = 商品描述;
var trade_type="APP";
var spbill_create_ip=客户端ip,类似192.168.10.105;
var out_trade_no=不重复随机订单号(时间戳+随机字符串,我只用了随机字符串);
var timeStamp=这个不是统一下单必传参数,这个是二次签名的时间戳,以秒为单位;
var sign=paysignApp(appid,body,mch_id,nonce_str,notify_url,out_trade_no,spbill_create_ip,total_fee,trade_type)这一步是第一次签名,签名规则按照文档来,签名成功之后,编成xml格式的数据,向微信服务器发送https请求,若成功,微信服务器会返回xml格式数据,解析之后会得到预付交易会话标识prepay_id;
var formData = "<xml>";
formData += "<appid>"+appid+"</appid>"; //appid
formData += "<body>"+body+"</body>";
formData += "<mch_id>"+mch_id+"</mch_id>"; //商户号
formData += "<nonce_str>"+nonce_str+"</nonce_str>"; //随机字符串,不长于32位。
formData += "<notify_url>"+notify_url+"</notify_url>";
formData += "<out_trade_no>"+out_trade_no+"</out_trade_no>";
formData += "<spbill_create_ip>"+spbill_create_ip+"</spbill_create_ip>";
formData += "<total_fee>"+total_fee+"</total_fee>";
formData += "<trade_type>"+trade_type+"</trade_type>";
formData += "<sign>"+sign+"</sign>";//第一次签名的sign
formData += "</xml>";

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值