使用微信小程序进行微信支付流程
微信支付的入口是在微信商户平台中,从微信商户平台的开发文档可以查看相关微信支付的文档,但是官方文档首页居然木有小程序版本入口,所以单独给一下小程序的文档. 微信支付的开发分为刷卡支付、公众号支付、扫码支付、APP支付以及小程序支付。
小程序支付流程
1. 小程序端向服务端请求生成订单
小程序端向服务端请求下单,服务端需要先针对小程序进行用户认证,并生成内部订单。
2. 小程序端向服务端请求订单支付
小程序端向服务端请求支付,服务端调用统一下单API,获取prepay_id。
3. 服务端请求统一下单API
接口地址 :https://api.mch.weixin.qq.com/pay/unifiedorder 请求方式 :POST 是否需要证书: 否 请求参数(必填):
小程序ID(appid):可在公众号配置页面获取 商户号(mch_id):可以在微信商户配置页面获取 随机字符串(nonce_str):随机字符串,32位 签名(sign):可查看签名生成算法 商品描述(body): 参考微信参数规定 商户订单号(out_trade_no): 服务端内部生成的订单号 总金额(total_fee):订单实际总金额,切记单位是分 终端IP(spbill_create_ip): APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。 通知地址(notify_url):微信支付的通知结果是异步的,支付成功后,微信会回调此地址,不能携带参数。 交易类型(trade_type):小程序取值:JSAPI 返回结果
return_code: 此字段表示通信是否成功,非交易是否成功, 取值:SUCCESS、FAIL return_msg: 返回的信息 result_code: 此字段表示交易是否成功!取值:SUCCESS、FAIL err_code: 请求错误代码,详见微信文档。 err_code_des: 错误返回的信息描述 trade_type: 交易类型,当return_code和result_code都为SUCCESS时才返回 prepay_id:预支付ID,下一步要用到的,有效期2小时。如果用户在生成此id后取消支付,但是在2个小时内重新支付时可以复用该id。 当return_code和result_code都为SUCCESS时才返回。
4. 服务端再次生成签名
当拿到prepay_id后,服务端应该马上存储起来,以便在2个小时内都可以复用。然后接下来就是要再次签名(安全!安全!安全!)。服务端将最终需要请求微信支付的参数返回给小程序。
返回参数:
appid:可在公众号配置页面获取 timeStamp: 时间戳,到秒为止,如果用java的朋友记得不要用毫秒,要截断最后三位 nonceStr: 32位随机数 package: prepay_id=xxxxx(上一步拿到的prepay_id) signType:MD5 paySign: 重新生成的签名
5. 小程序端向微信服务器发起支付
小程序在拿到服务端的参数后,调用wx.requestPayment(OBJECT)发起支付。
6. 服务端接收支付回调接口
在小程序端支付成功后,微信会立即请求之前设置的回调地址,并且服务端返回应答,流程才算结束, 详见官方文档.一般我们需要针对返回的金额和内部订单号进行校验,并且存储微信支付订单号等信息。
|
请发表评论