岚枫
岚枫
  • 发布:2016-02-29 16:15
  • 更新:2019-01-18 15:16
  • 阅读:2717

支付动作无法监听到完成或者取消的事件

分类:5+ SDK
  • 测试例子:官方Hello H5+

  • 测试手机
    苹果手机3台。
    版本号:9.2.1(2台)
    版本号:8.1(1台)
    安卓手机若干

  • 测试微信支付
    Android无任何问题,可以监听到完成支付以及取消支付动作。
    IOS 9.2.1 版本,无法监听到支付完成动作,以及支付取消动作,2个注册的回调函数:PaymentSuccessCallback ,PaymentErrorCallback 无法回调。
    IOS 8.1 版本,同样出现无法触发回调函数问题。
    测试例子完全使用官方Hello H5+中的payment.html页面(无修改)。

  • 估计HBuilder这个版本存在问题。因为用手机以前HBuilder打包的版本,是正常的。

代码片段如下:
function pay(id){
if(w){return;}//检查是否请求订单中
if(id==='appleiap'){
outSet("应用内支付");
clicked('payment_iap.html');
return;
}
outSet("----- 请求支付 -----");
var url=PAYSERVER;
if(id=='alipay'||id=='wxpay'){
url+=id;
}else{
plus.nativeUI.alert("不支持此支付通道!",null,"捐赠");
return;
}
var appid=plus.runtime.appid;
if(navigator.userAgent.indexOf('StreamApp')>=0){
appid='Stream';
}
url+='&appid='+appid+'&total=';

w=plus.nativeUI.showWaiting();  
// 请求支付订单  
var amount = document.getElementById('total').value;  
var xhr=new XMLHttpRequest();  
xhr.onreadystatechange=function(){  
    switch(xhr.readyState){  
        case 4:  
        w.close();w=null;  
        if(xhr.status==200){  
            outLine("----- 请求订单成功 -----");  
            outLine( xhr.responseText );  
            var order=xhr.responseText;  
            plus.payment.request(pays[id],order,function(result){  
                outLine("----- 支付成功 -----");  
                outLine(JSON.stringify(result));  
                plus.nativeUI.alert("支付成功:感谢你的支持,我们会继续努力完善产品。",function(){  
                    back();  
                },"捐赠");  
            },function(e){  
                outLine("----- 支付失败 -----");  
                console.log("----- 支付失败 -----");  
                outLine("["+e.code+"]:"+e.message);  
                console.log("["+e.code+"]:"+e.message);  
                plus.nativeUI.alert("更多错误信息请参考支付(Payment)规范文档:http://www.html5plus.org/#specification#/specification/Payment.html",null,"支付失败:"+e.code);  
            });  
        }else{  
            outLine("----- 请求订单失败 -----");  
            outLine( xhr.status );  
            plus.nativeUI.alert("获取订单信息失败!",null,"捐赠");  
        }  
        break;  
        default:  
        break;  
    }  
}  
xhr.open('GET',url+amount);  
outLine("请求支付订单:"+url+amount);  
xhr.send();  

}

2016-02-29 16:15 负责人:无 分享
已邀请:
BoredApe

BoredApe - 有问题就会有答案。

永恒菂诺儿

永恒菂诺儿

遇到了同样的问题,IOS支付完成后 就没有回调。。。捉急啊~~

pc_彭

pc_彭

如过 苹果支付提示 购买成功了,说明苹果执行回调了,只是uni-app的回调没执行。 检查你 uni-app回调函数 可以把回调函数 所有代码都删除 试下

该问题目前已经被锁定, 无法添加新回复