<a name="PryPh"></a>
要将PC网站接入微信支付,您需要完成以下步骤:
请求参数
{
"mchid": "1900006XXX", // 商家的商户号
"out_trade_no": "H51217752501201407033233368018", //商户订单号
"appid": "wxdace645e0bc2cXXX", // 应用appid
"description": "Image形象店-深圳腾大-QQ公仔",
"notify_url": "https://weixin.qq.com/", //回调,向后端返回支付结果
"amount": {
"total": 1,
"currency": "CNY"
},
"scene_info": {
"payer_client_ip": "127.0.0.1",
"h5_info": {
"type": "Wap"
}
}
}
返回参数
{
"h5_url": "https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx2916263004719461949c84457c735b0000&package=2150917749"
}
wx.requestPayment({
// 时间戳
timeStamp: '',
// 随机字符串
nonceStr: '',
// 统一下单接口返回的 prepay_id 参数值
package: '',
// 签名算法,应与后台下单时的值一致
signType: '',
// 签名
paySign: '',
// 调用成功回调
success (res) {
},
// 失败回调
fail () {},
// 接口调用结束回调
complete () {}
})
<a name="vIPE7"></a>
公众号接入支付: https://pay.weixin.qq.com/static/applyment_guide/applyment_detail_public.shtml
请求参数如下:
{
"mchid": "1900006XXX", // 商户号
"out_trade_no": "1217752501201407033233368318", //商家生成的订单号
"appid": "wxdace645e0bc2cXXX", //公众号appid
"description": "Image形象店-深圳腾大-QQ公仔", // 商家描述
"notify_url": "https://www.weixin.qq.com/wxpay/pay.php", //异步接收微信支付结果通知的回调地址
"amount": {
"total": 1, // 订单总金额
"currency": "CNY" // 货币类型
},
"payer": {
"openid": "o4GgauInH_RCEdvrrNGrntXDuXXX" //用户的openid
}
}
返回参数
{
"prepay_id": "wx26112221580621e9b071c00d9e093b0000"
}
JSAPI和参数
// JSAPI
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId": "wx2421b1c4370ec43b", //公众号ID,由商户传入
"timeStamp": "1395712654", //时间戳,自1970年以来的秒数
"nonceStr": "e61463f8efa94090b1f366cccfbbb444", //随机串
"package": "prepay_id=wx21201855730335ac86f8c43d1889123400",
"signType": "RSA", //微信签名方式:
"paySign": "oR9d8PuhnIc+YZ8cBHFCwfgpaK9gd7vaRvkYD7rthRAZ\/X+QBhcCYL21N7cHCTUxbQ+EAt6Uy+lwSN22f5YZvI45MLko8Pfso0jm46v5hqcVwrk6uddkGuT+Cdvu4WBqDzaDjnNa5UK3GfE1Wfl2gHxIIY5lLdUgWFts17D4WuolLLkiFZV+JSHMvH7eaLdT9N5GBovBwu5yYKUR7skR8Fu+LozcSqQixnlEZUfyE55feLOQTUYzLmR9pNtPbPsu6WVhbNHMS3Ss2+AehHvz+n64GDmXxbX++IOBvm2olHu3PsOUGRwhudhVf7UcGcunXt8cqNjKNqZLhLw4jq\/xDg==" //微信签名
},
前端逻辑
// 调起支付的函数
function onBridgeReady() {
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId": "wx2421b1c4370ec43b", //公众号ID,由商户传入
"timeStamp": "1395712654", //时间戳,自1970年以来的秒数
"nonceStr": "e61463f8efa94090b1f366cccfbbb444", //随机串
"package": "prepay_id=wx21201855730335ac86f8c43d1889123400",
"signType": "RSA", //微信签名方式:
"paySign": "oR9d8PuhnIc+YZ8cBHFCwfgpaK9gd7vaRvkYD7rthRAZ\/X+QBhcCYL21N7cHCTUxbQ+EAt6Uy+lwSN22f5YZvI45MLko8Pfso0jm46v5hqcVwrk6uddkGuT+Cdvu4WBqDzaDjnNa5UK3GfE1Wfl2gHxIIY5lLdUgWFts17D4WuolLLkiFZV+JSHMvH7eaLdT9N5GBovBwu5yYKUR7skR8Fu+LozcSqQixnlEZUfyE55feLOQTUYzLmR9pNtPbPsu6WVhbNHMS3Ss2+AehHvz+n64GDmXxbX++IOBvm2olHu3PsOUGRwhudhVf7UcGcunXt8cqNjKNqZLhLw4jq\/xDg==" //微信签名
},
function(res) {
//查看支付状态
if (res.err_msg == "get_brand_wcpay_request:ok") {
// 使用以上方式判断前端返回,微信团队郑重提示:
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
}
});
}
// 判断当前环境是不是微信环境,如果是,直接调用。 如果不是,根据环境采用不同的事件绑定
if (typeof WeixinJSBridge == "undefined") {
if (document.addEventListener) {
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
} else if (document.attachEvent) {
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
} else {
onBridgeReady();
}
6.接下来的一系列操作都是由用户来操作的,包括了微信支付密码,指纹等验证,确认支付之后执行鉴权调起支付。<br />7.鉴权调起支付:在微信后台进行鉴权,微信后台直接返回给前端支付的结果,前端收到返回数据后对支付结果进行展示。<br />8.推送支付结果:微信后台在给前端返回支付的结果后,也会向后台(商家后台)也返回一个支付结果,后台通过这个支付结果来更新订单的状态。
get_brand_wcpay_request:ok 支付成功
get_brand_wcpay_request:cancel 支付过程中用户取消
get_brand_wcpay_request:fail 支付失败
<a name="l4Ukv"></a>
https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_3_4.shtml<br />商户后台系统先调用微信支付的H5下单接口,微信后台系统返回链接参数h5_url,用户使用微信外部的浏览器访问该h5_url地址调起微信支付中间页