微信支付官方文档首页竟然没有H5支付的入口😏😏,传送门在此:
微信H5支付官方文档
这一块可以认真读一下:
准备:
- 前往商户平台开通H5支付;文档
- 前往商户平台绑定appid
- 配置域名 【商户平台->产品中心->开发配置->H5支付】(申请H5支付时会输入授权域名,如无需改变可跳过)
- H5支付微信会校验客户端外网ip,我使用内网穿透工具(frp)配合 nginx 解决
nginx 配置:
log_format frp '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent ["referer: $http_referer"] [hostname: $hostname] [host: $host] [remote_addr $remote_addr]'
' [remote_port $remote_port] [X-Forwarded-For $proxy_add_x_forwarded_for]';
server {
listen 80;
# 改成自己的域名,这个域名需要配置在商户平台的H5支付中【商户平台->产品中心->开发配置->H5支付】
server_name *.frps.baidu.com;
access_log logs/frp.log frp;
location / {
proxy_pass http://localhost:7001;
# proxy_set_header Host $host:7001;
#### 微信H5支付 获取用户端ip用 结束 start ========
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#### 微信H5支付 获取用户端ip用 结束 end ========
# add_header Access-Control-Allow-Origin *;
# add_header Access-Control-Allow-Headers *;
# add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
}
}
需要注意的是:
微信内置浏览器不能使用H5支付😅😄😅
在微信内置浏览器打开的网页不能使用H5支付,虽然文档也给了说明,不过不遇到这种情况,一般不会去查文档🤣所以特别说明一下。要在微信浏览器调起支付可以使用JSAPI支付(需要已认证的服务号)
H5支付调用成功返回示例:
{
"data": {
"return_code": "SUCCESS",
"return_msg": "OK",
"result_code": "SUCCESS",
"mch_id": "1588254821",
"appid": "wxd250963102d6d4e8",
"nonce_str": "meIzCdesfgVpaph7",
"sign": "4ED45DFA97EEFE1ADB99D33B7BA04EF1B144E284610553DB75DCA9E20B742843",
"prepay_id": "wx2717295728429189d6accdeb24eb7c0000",
"trade_type": "MWEB",
"mweb_url": "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2717295728429189d6accdeb24eb7c0000&package=3873244427"
}
}
调起支付方式可以直接将mweb_url作为重定向链接返回
测试记录
测试一:
主体 A 的商户号 + 主体 B 的服务号(公众号分为服务号和订阅号)appid。
注意,服务号appid需要在商户平台关联
商户平台App账号管理传送门
测试结果:成功
测试二:
主体 A 的商户号 + 主体 A 的小程序appid
同样的,小程序appid需要在商户平台关联
商户平台App账号管理传送门
测试结果: 成功
测试三:
主体 A 的商户号 + App应用的appid(在主体 A 的微信开放平台申请的微信开放平台传送门)
同样的,小程序appid需要在商户平台关联 商户平台App账号管理传送门
测试结果: 成功
无聊的知识
发现一个小知识点:微信支付记录的商家头像是appid对应的头像;如果appid是小程序的,那头像就是小程序的头像,appid是服务号,那头像就是服务号的头像
JSAPI支付
接入前准备
官方文档:
JSAPI接入前准备
首先注册公众号并通过微信认证,商户平台账号已开通JSAPI支付
- 设置AppSecret,ip白名单
- 配置业务域名、jsapi接口授权域名、网页授权域名
- 绑定开发者微信号 4.前往商户平台绑定公众号appid,并登陆公众号确认绑定 5.前往商户平台设置JSAPI支付授权目录
设置AppSecret,ip白名单
文档:
“获取access_token”接口新增IP白名单保护
配置业务域名、jsapi接口授权域名、网页授权域名
绑定开发者微信号
前往商户平台绑定公众号appid,并登陆公众号确认绑定
app账号设置说明:
登录微信支付商户平台(pay.weixin.qq.com)-->产品中心-->app账号。
前往商户平台设置JSAPI支付授权目录
支付授权目录设置说明:
登录微信支付商户平台(pay.weixin.qq.com)-->产品中心-->开发配置,设置后一般5分钟内生效。