robotmedia / RMStore

A lightweight iOS library for In-App Purchases
Apache License 2.0
2.42k stars 450 forks source link

用户第一次绑卡操作时候漏单处理 #232

Closed MonekyHou closed 3 years ago

MonekyHou commented 4 years ago

关于消耗型产品,当用户第一次发起内购,然后跳转绑卡或者卡余额不足时候,这里已经走失败回调是取消支付,但是这时候用户去做绑卡操作,然后绑卡成功后,在appstore界面就成功支付了,但是本地就获取不到任何凭据。请问这个漏单怎么处理

MonekyHou commented 3 years ago

已经解决

wodeweilai123 commented 2 years ago

怎么解决的

wodeweilai123 commented 2 years ago

能说一下嘛

MonekyHou commented 2 years ago

不要用第三方别人封装好的,自己去管理事务,自己去finish就不会有问题

wodeweilai123 commented 2 years ago

我看着有的用户付款成功之后- (void)paymentQueue:(SKPaymentQueue )queue updatedTransactions:(NSArray )transaction{ 监听购买结果的这个方法没走,你那遇见过吗

MonekyHou commented 2 years ago

用户在未绑定卡的时候,然后appstore里面支付成功的时候 这时候不会走你说的那个代理,因为这时候和app是断开的,其实已经返回了失败的回调,但是这时候你不要finish那个事务,你要在本地自己管理订单的状态,事务的完成情况,然后在app启动时候去updatedTransactions时候去判断事务的状态,这时候掉单的那个单就会重新在代理里面回调,并且状态是已经支付成功的 再去走接下来的流程

wodeweilai123 commented 2 years ago

“然后在app启动时候去updatedTransactions时候去判断事务的状态” 这个是APP从后台到前台的时候添加观察者吗? 还有“返回了失败的回调,但是这时候你不要finish那个事务”这个用户自己点取消导致失败的也不finish吗?

wodeweilai123 commented 2 years ago

我从简书上看着有个哥们说是在支付失败的时候也去验证订单,这样第一次绑卡的时候返回了失败的回调的话也没有问题。https://www.jianshu.com/p/7ea18dde48ca