在JavaScript处理支付结果
在发起支付请求后,我们需要如果可以通过下面两种方式来判断是否支付成功。第一种是在JavaScript回调函数中处理。
在jsapi.php文件的下面有几个JavaScript函数,他们分别是jsApiCall(),callpay(),editAddress()
editAddress()的功能是获取用户的位置信息,具体表现是,当用户进入支付页面,如果调用这个函数,那么就会调起选择地址的界面,等用户选择完成后,才返回进入下一步,对于它,我们默认即可
//获取用户地址
function editAddress()
{
WeixinJSBridge.invoke(
'editAddress',
<?php echo $editAddress; ?>,
function(res)
{
var value1 = res.proviceFirstStageName;
var value2 = res.addressCitySecondStageName;
var value3 = res.addressCountiesThirdStageName;
var value4 = res.addressDetailInfo;
var tel = res.telNumber;
alert(value1 + value2 + value3 + value4 + ":" + tel);
}
);
}
callpay()的功能是在确保WeixinJSBridge对象存在的情况下再进入jsApiCall()函数,此时把支付接口返回的数据进行解析并回调支付结果,在这里我们就能大致判断下用户支付是否成功,为什么是大致判断呢,因为微信团队告知了我们,在这里处理支付结果不可靠!切记。
//调用微信JS api 支付
function jsApiCall()
{
WeixinJSBridge.invoke(
'getBrandWCPayRequest',
<?php echo $jsApiParameters; ?>,
function(res){
WeixinJSBridge.log(res.err_msg);
alert(res.err_code+res.err_desc+res.err_msg);
// 使用以上方式判断前端返回,微信团队郑重提示:
// res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
if(res.err_msg == "get_brand_wcpay_request:ok" ) {
// 支付成功
}else if((res.err_msg =="get_brand_wcpay_request:fail"){
// 支付失败
}else if((res.err_msg =="get_brand_wcpay_request:cancel"){
// 支付过程中用户取消
}
}
);
}
结合我们前面讲到过的课程,在支付回调时能否结合 某个 查询来确保订单支付成功呢?
能