iOS開發(fā)-內(nèi)購丟單處理方式

之前寫了一篇關(guān)于內(nèi)購的博客iOS開發(fā)-2017蘋果內(nèi)購最新教程
,上線審核很順利,但是上線后很多問題暴露出來.用戶購買了虛擬產(chǎn)品扣費了,但是卻沒有充值成功.所以單獨寫一篇博客來總結(jié)怎么處理丟單情況的.

  • 為什么會丟單
    1.客戶端監(jiān)聽購買結(jié)果回調(diào)后 - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions 后在交易成功的情況下,要拿到transactionReceipt憑證,APP在上傳憑證給服務(wù)器時發(fā)生了網(wǎng)絡(luò)或各種原因,造成了憑證的丟失,產(chǎn)生了掉單

    2.在ApplePay付款成功后由于網(wǎng)絡(luò)或各種原因沒有返 Transaction(SKPaymentTransaction),從而不能得到憑證去Apple服務(wù)器驗證訂單的正確性

3.用戶操作不當,在購買過程中主動退出....

  • 如何解決丟單問題

1.APP在上傳憑證給服務(wù)器時發(fā)生了網(wǎng)絡(luò)或各種原因,造成了憑證的丟失,產(chǎn)生了掉單

  • 解決方案一:

當監(jiān)聽購買結(jié)果的回調(diào)后,保存交易憑據(jù),等服務(wù)器驗證成功之后刪除交易憑據(jù).每次進入內(nèi)購的控制器的時候,先去本地拿取交易憑據(jù),如果交易憑據(jù)存在,則再去服務(wù)器驗證.

存在問題:用戶丟單后重復購買又丟單,那么上次的交易憑據(jù)會被覆蓋

解決方案二:

在支付之前需要通過自己的服務(wù)器創(chuàng)建訂單,在交易成功回調(diào)之后,立馬將該訂單和本次交易憑證存儲到數(shù)據(jù)庫中。在用戶下次登錄的時候,要首先驗證該數(shù)據(jù)庫中的交易憑證是否都經(jīng)過后臺驗證過并成功給用戶商品。

2.不能得到憑證去Apple服務(wù)器驗證訂單的正確性

[SKPaymentQueue defaultQueue]這個隊列里面存著所有的已支付,未支付的訂單,而且需要手動移除,而APP每次啟動的時候都會去判斷這個隊列里面是否為空,如果不為空的話會調(diào)用<SKPaymentTransactionObserver>代理的- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions//交易結(jié)果, 在驗證成功之后移除隊列 [[SKPaymentQueue defaultQueue] finishTransaction: transaction];

3.在購買過程中加上蒙版,讓用戶不能進行其他操作

參考資料:

iOS Apple內(nèi)購及掉單問題
iOS內(nèi)購丟單處理及實現(xiàn)
ios 內(nèi)購服務(wù)器驗票(漏單處理)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容