-
测试例子:官方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();
}
3 个回复
BoredApe - 有问题就会有答案。
此问题已解决,请重新打包尝试,现已更新打包机.可在这里下载基座,替换即可http://pan.baidu.com/s/1i4fmVuX
永恒菂诺儿
遇到了同样的问题,IOS支付完成后 就没有回调。。。捉急啊~~
1***@qq.com
请问您解决了么
2018-04-19 10:01
三十九级台阶
回复 1***@qq.com: 解决了嘛?
2019-06-11 10:45
pc_彭
如过 苹果支付提示 购买成功了,说明苹果执行回调了,只是uni-app的回调没执行。 检查你 uni-app回调函数 可以把回调函数 所有代码都删除 试下