微信小程序正在各行各业如火如荼的进行中,大多数的小程序应用中都可能会用到微信的支付接口。(这或许也是阿里所担心的,微信小程序会一步步跳转支付宝的地位,这就是为什么支付宝也要推出小程序的一大原因吧)!小程序的微信支付功能是随着小程序的发布一并推出的,然而小程序文档里关于微信支付接口只有一个requestPayment函数的描述。这个requestPayment函数确实是小程序前端唯一需要调用的函数,但是微信支付的成功接入实际远远不止这一个函数,对于没有接入过微信支付的开发者,会觉得一头雾水,完全没法下手。今天我们就为各位介绍一下如何从零开始接入小程序支付,尤其适合那些没有微信支付接入经验的开发者。1. 申请微信支付小程序认证以后(如何申请认证小程序参见文章:
怎么提交小程序给微信?微信小程序的提交审核流程
),可以在小程序后台,微信支付菜单栏,申请微信支付。填写企业信息和对公账户,微信支付会打一笔随机金额到对公账户,输入金额完成验证后,在线签署迁移,即完成了微信支付的申请流程。微信支付申请完,会发送微信支付商户号,商户平台用户名密码等信息到注册者邮箱。2. 准备工作2.1 配置小程序密钥小程序后台设置页,点击生成,管理员验证二维码后,会随机生成AppSecret。请妥善保管好Appsecret,不要明文存储于服务器,AppSecret用于和微信服务器交互。比如获取用户的openid接口就需要用到.2.2 设置密钥和下载证书用申请微信支付获得的用户名和密码,登录商户平台(pay.weixin.qq.com),在账户中心,API安全中下载证书和设置密钥。密钥是32位,设置以后需要妥善保管,因为无法查看密钥,所有微信支付相关的接口都会使用这个密钥加密。2.3 配置HTTPS服务器
小程序的前端是使用微信提供的框架开发,但是后台依然是开发者自己的服务器。小程序发起的是HTTPS请求,意味着小程序开发者必须配置HTTPS服务器。配置HTTPS服务器之前,先要获取证书,证书可以向相关机构购买,腾讯云目前可以向用户提供免费的证书。
appId:"wx3*******6"//小程序id nonceStr:"qdpys6rdizbnpj12ahwvkf568a6c1sr9" //随机字符串 package:"prepay_id=wx2016***********3" //wx的预支付交易单 paySign:"8A7DC1A560B3B6DB0C656AC382D3E6F1" signType:"MD5" timeStamp:"1481167418"
3. 微信支付流程微信支付有多种支付方式,包括刷卡支付,公众号支付,扫码支付,APP支付,所有微信支付的接口都可以在这里找到:
https://pay.weixin.qq.com/wiki/doc/api/index.html。小程序是在微信里调起支付的,其实是公众号支付,关于公众号支付的详细文档可以这里找到:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1。所有公众号支付相关的链接都可以在此链接找到,开发者首先需要大概了解这些接口
小程序公众号支付的主要流程如下(本图只考虑了正常流程,异常流程参考公众号支付文档):3.1 关于OpenID上述流程中请求OpenID,用的是小程序最新API中的接口,开发者可以查看小程序的登录接口。开发者从第三方服务器获得的OpenID,在统一下单的接口里面需要使用到.3.2 关于小程序调起微信支付上述流程中的小程序调起微信支付,用的是小程序微信支付接口wx.requestPayment,该接口的详细描述可以查看小程序的微信支付API。这个接口中的package和timeStamp参数是从开发者的第三方服务器返回的,package是第三方服务器从统一下单接口回复中获得。接口中其他的参数,appId,noceStr,signType以及paySign则由小程序这边存储或者计算而得。其中paySign是签名,签名算法文档在这里:
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3&t=20161107整个公众号支付的主要流程基本都是在第三方服务器上实现,开发者需要熟读公众号支付文档,了解消息交互流程以及每个接口。这里并没有描述正常微信支付必不可少的一些功能:异常处理,查询订单,发起退款,下载对账单等等。
小程序demo
const wechatData = payRes.data.payment;//wechatData就是上面的验证信息 console.log(wechatData); wx.requestPayment({ 'appId' : wechatData.appId, 'timeStamp': wechatData.timeStamp, 'nonceStr': wechatData.nonceStr, 'package': wechatData.package, 'signType': 'MD5', 'paySign': wechatData.paySign, 'success':function(res){ console.log(res); console.log('success'); }, 'fail':function(res){ console.log(res); console.log('fail'); }, 'complete': function(res){ console.log(res);console.log('complete'); } }); console.log(2);
小结
:
小程序与JSSDK微信支付比较JSSDK的微信支付接口是公众号里用JS调起公众号支付的方法,具体可以参考公众平台的文档。可以看到,小程序和JSSDK的微信支付非常类似,这里比较一下两者的区别:如下图所示:
爱盈利(aiyingli.com)移动互联网最具影响力的盈利指导网站。定位于服务移动互联网创业者,移动盈利指导。我们的目标是让盈利目标清晰可见!降低门槛,让缺乏经验、资金有限的个人和团队获得经验和机会,提高热情,激发产品。
【转载说明】  若上述素材出现侵权,请及时联系我们删除及进行处理:8088013@qq.com