微信支付
使用云开发来实现相应的支付功能后,开发者无需关心证书、签名、微信支付服务器端文档,使用简单,代码较少,只需要调用相应的函数即可。此外,因为云开发基于微信私有协议实现,官方通过服务商提供支付接口对接支持,不依赖第三方模块,免去泄漏证书、支付情况等其他敏感信息的风险。同时,云开发还支持云函数接收微信支付进行支付和退款的回调,安全高效。
- 安全:微信私有协议,无证书等信息泄露风险
- 免签名:所有接口免签名 & 直接获取小程序 wx.requestPayment 所需参数
- 接收回调:云函数支持接收异步支付结果回调
资质
需要是已经开通了微信支付,且已绑定了商户号的小程序。
开通
在云控制台 -> 设置 -> 全局设置中开通。
权限
添加商户号后需要分别进行帐号绑定、jsapi 和 api 退款权限授权。请注意:
1)帐号绑定:商户号的超级管理员需要在微信支付提供的【微信支付商家助手】小程序上确认授权。
2)jsapi 和 api 退款权限,需要前往微信支付商户平台我的授权产品中进行确认授权。说明
完成授权后即可调用微信支付相关接口能力。
接口
wx-server-sdk >= 2.0.2
云开发提供了微信支付相关接口和服务端回调,包括统一下单、查询订单、关闭订单、申请退款、查询退款、下载对账单,具体文档见 API 文档。
下单关键开发流程:
- 小程序调用云函数,在云函数中调用统一下单接口,参数中带上接收异步支付结果的云函数名和其所在云环境 ID
- 统一下单接口返回的成功结果对象中有
payment
字段,该字段即是小程序端发起支付的接口(wx.requestPayment
)所需的所有信息 - 小程序端拿到云函数结果,调用
wx.requestPayemnt
发起支付 - 支付完成后,在统一下单接口中配置的云函数将收到支付结果通知
流程图可见顶部。
注意:收到支付结果回调的云函数必须返回一个 { "errcode": 0 }
的对象,否则会认为回调处理失败,在接下来两天内会持续收到回调,直到返回成功为止。具体返回值协议见统一下单接口文档。
接口与微信支付原接口(文档)的不同点在于:
- 私有安全链路,免证书管理,免签名计算
- 商户号填入 sub_mch_id 字段,小程序/公众号 appid 填入 sub_appid 字段
- 免填写以下字段:mch_id、appid、sign、sign_type
- 接口入参和返回值都为 JSON 而不是 XML