第十二节 小程序支付的客户端简介

亮子 2021-08-24 10:26:20 17539 0 0 0

1、官方文档

https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter2_8_2.shtml

2、开通支付功能

1)、开通微信支付

小程序开通微信支付,即申请或复用微信支付商户号,申请完小程序后,登录小程序后台。点击左侧导航栏的微信支付,在页面中进行开通。(开通申请要求小程序已发布上线)

图片alt

2)、两种方式

点击开通按钮后,有2种方式可以获取微信支付能力,新申请微信支付商户号或绑定一个已有的微信支付商户号,请根据你的业务需要和具体情况选择,只能二选一。

开通指引

3、服务器配置要求

1)、小程序访问商户服务都是通过HTTPS,开发部署的时候需要HTTPS服务器

2)、服务器域名配置

①、每个微信小程序需要事先设置通信域名,小程序只可以跟指定的域名进行网络通信。包括普通 HTTPS 请求(wx.request)、上传文件(wx.uploadFile)、下载文件(wx.downloadFile)和 WebSocket 通信(wx.connectSocket)

②、从基础库 2.4.0 开始,网络接口允许与局域网 IP 通信,但要注意 不允许与本机 IP 通信

注意:

  • 域名只支持 https (wx.request、wx.uploadFile、wx.downloadFile) 和 wss (wx.connectSocket) 协议
  • 域名不能使用 IP 地址(小程序的局域网 IP 除外)或 localhost
  • 可以配置端口,如 https://myserver.com:8080,但是配置后只能向 https://myserver.com:8080/ 发起请求。如果向 https://myserver.com、https://myserver.com:9091 等 URL 请求则会失败
  • 如果不配置端口。如 https://myserver.com,那么请求的 URL 中也不能包含端口,甚至是默认的 443 端口也不可以。如果向 https://myserver.com:443 请求则会失败
  • 域名必须经过 ICP 备案
  • 出于安全考虑,api.weixin.qq.com 不能被配置为服务器域名,相关API也不能在小程序内调用。 开发者应将 AppSecret 保存到后台服务器中,通过服务器使用 getAccessToken 接口获取 access_token,并调用相关 API
  • 不支持配置父域名,使用子域名
  • 可查阅小程序网络请求以了解更多信息

4、快速接入

1)、 业务流程图

图片alt

重点步骤说明:

步骤3:用户下单发起支付,商户可通过JSAPI下单创建支付订单。

步骤8: 用户可通过小程序调起支付API调起微信支付,发起支付请求。

步骤15:用户支付成功后,商户可接收到微信支付支付结果通知支付通知API。

步骤20:商户在没有接收到微信支付结果通知的情况下需要主动调用查询订单API查询支付结果。

2)、【客户端】小程序调起支付API

步骤说明:通过JSAPI下单成功获取**预支付交易会话标识(prepay_id)**后,需要通过小程序调起支付API来调起微信支付收银台

注意:

此API需要将请求参数进行签名(参与签名的参数为:appId、timeStamp、nonceStr、package,参数区分大小写)
appId必须为最后拉起收银台的小程序appid

示例代码:

wx.requestPayment(
{
"timeStamp": "1414561699",
"nonceStr": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS",
"package": "prepay_id=wx201410272009395522657a690389285100",
"signType": "RSA",
"paySign": "oR9d8PuhnIc+YZ8cBHFCwfgpaK9gd7vaRvkYD7rthRAZ\/X+QBhcCYL21N7cHCTUxbQ+EAt6Uy+lwSN22f5YZvI45MLko8Pfso0jm46v5hqcVwrk6uddkGuT+Cdvu4WBqDzaDjnNa5UK3GfE1Wfl2gHxIIY5lLdUgWFts17D4WuolLLkiFZV+JSHMvH7eaLdT9N5GBovBwu5yYKUR7skR8Fu+LozcSqQixnlEZUfyE55feLOQTUYzLmR9pNtPbPsu6WVhbNHMS3Ss2+AehHvz+n64GDmXxbX++IOBvm2olHu3PsOUGRwhudhVf7UcGcunXt8cqNjKNqZLhLw4jq\/xDg==",
"success":function(res){},
"fail":function(res){},
"complete":function(res){}
})

• package:小程序下单接口返回的prepay_id参数值,提交格式如:prepay_id=xxx
• signType:该接口V3版本仅支持RSA
• paySign:签名

paySign生成规则、响应详情请参见小程序调起支付API接口文档

小程序调起支付API接口文档