JSAPI支付是用户在微信中打开商户的H5页面,商户在H5页面通过调用微信支付提供的JSAPI接口调起微信支付模块完成支付
用户在微信公众账号(必须是服务号)内进入商家公众号,打开某个H5页面,完成支付
用户的好友在朋友圈、聊天窗口等分享商家H5页面连接,用户点击链接打开商家H5页面,完成支付
将商户H5页面转换成二维码,用户扫描二维码后在微信浏览器中打开h5页面后完成支付
使用JS脚本:getBrandWCPayRequest 调起微信支付
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId": "{{.AppId}}", //公众号名称,由商户传入
"timeStamp": "{{.TimeStamp}}",//时间戳,自1970年以来的秒数
"nonceStr": "{{.NonceStr}}",//随机串
"package": "{{.Package}}",
"signType": "{{.SignType}}",//微信签名方式:
"paySign": "{{.PaySign}}" //微信签名
},
function (res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
alert("支付成功");
}else if (res.err_msg == "get_brand_wcpay_request:cancel") {
alert("支付过程中用户取消");
}else{
//支付失败
alert(res.err_msg)
}
}
);
用户通过不同场景点击进入商户网页
用户选择商品购买,完成选购流程
使用网页授权获取用户基本信息,得到openid
商户使用统一下单接口获取prepay_id
商户网页使用getBrandWCPayRequest接口调起微信支付
支付成功后,在该接口里面会返回结果,同时微信也会发送异步通知到统一下单时候填写的notify_url
打开网页http://config.HOST/buy.html
,选购商品,最终打开http://config.HOST/jsapi.html
调起微信支付
JSAPI必须先用网页授权的方式去获取用户的openid,在统一下单的时候需要,详情可以查看官方文档:网页授权获取获取用户基本信息
创建文件夹jsapipay
只有在授权域名下的链接才能获取openid,所以第一步就去设置网页授权目录
假设我们网站的域名为:www.qq.com,那么久需要把网页授权目录设置为www.qq.com
设置方法:登陆公众平台,在开发中中心,往下翻功能列表里面有一项:网页授权获取用户基本信息,点击旁边的修改按钮即可,按照要求填入我们要设置的域名
在本节代码里面我们把域名保存在config.HOST
变量里面
创建buy.html
,点击里面的购买按钮后,获取code
并跳转到支付页面buy.html
商家网页
创建jsapi.html
文件,实现:
代码如下:
JSAPI支付一分钱
微信jsapi支付 1分钱
Appid: {{.AppId}}
TimeStamp: {{.TimeStamp}}
Nonce_str: {{.NonceStr}}
Package: {{.Package}}
SignType: {{.SignType}}
PaySign: {{.PaySign}}