最近在这个问题上搞得焦头烂额,麻烦大家给点建议。
我的虚拟商品是星座运势报告,可以多次购买不同生日对应的报告,所以选择了消耗型商品。
使用的代码如下:
uni.requestPayment({
provider: 'appleiap',
orderInfo: {
productid: productid,
username: that.loginInfo.tel
// userid: that.loginInfo.id,
// optimize: true // 设置 optimize: true 解决丢单问题
},
success: res => {
uni.hideLoading()
console.log(res)
//提交后端
const transactionId = res.transactionIdentifier
const transactionReceipt = res.transactionReceipt
that.applePay(transactionId, transactionReceipt)
},
fail: (e) => {
console.log(e)
uni.hideLoading()
uni.showModal({
content: '支付失败',
showCancel: false
})
complete(e) {
console.log('requestPayment complete', e)
}
})
},
在这个方法里,经常遇到卡了很久也没有回调的情况,用户直接就关闭了。
(题外话,这里还遇到另一个问题。uni.requestPayment第一次一直不回调,但第二次调用时却直接就支付成功并发送后端了,同时还依然弹出支付,再次造成误操作。不知道是applepay的bug,还是uniapp的bug,还是沙盒的问题。)
看了社区了很多攻略,都是在讲用restoreComplateRequest处理丢单。
但文档里也说了:
restoreComplateRequest作用描述:
已购的非消耗性商品以及订阅商品
丢单的商品(所有类型)
注意事项:丢单的消耗类型商品在支付完成后,首次调用该接口可返回支付凭证
能用于业务上处理丢单的东西,其实应该是我们发给applepay的username,但是解析消耗型商品的支付凭证,里面是没有相关字段的。
所以,restoreComplateRequest好像也帮不上什么忙啊。
请问有没有人同样处理过消耗型商品的,快救救我吧。
Leo星星 (作者)
嗯,目前就等着这个了。
2022-06-24 16:44