蘋果內購丟單問題

1.內購流程

內購流程

1.APP調用Apple服務器接口創(chuàng)建訂單,發(fā)起購買請求

2.內購的api完成購買,獲取receipt發(fā)送本地服務器,本地服務器拿到receipt向蘋果發(fā)起驗證,并回調結果給APP

以上就是整個購買的過程,大致分為兩個階段:支付階段和驗證階段

2.為什么會丟單原因?

1.不能得到憑證去Apple服務器驗證訂單的正確性(支付階段)

解決:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

這個隊列里面存著所有的已支付,未支付的訂單,而且需要手動移除,而APP每次啟動和每次支付的時候都會去判斷這個隊列里面是否為空,如果不為空的話會調用<SKPaymentTransactionObserver> 代理方法

  • (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions;
2.APP在上傳憑證給服務器時發(fā)生了網(wǎng)絡或各種原因,造成了憑證的丟失,產生了掉單 (驗證階段)

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

驗證的時機:

  • 用戶下次登錄
  • 每次支付之后

3.代碼實現(xiàn)

1.設置監(jiān)聽,在APP啟動時候監(jiān)聽內購的訂單情況

設置監(jiān)聽

2.請求商品訂單

請求商品

3.查詢構造的商品訂單

查詢構造的商品訂單

4.購買成功后的回調

購買成功后的回調

5.存儲交易憑證,并且上傳憑證

存儲交易憑證
上傳憑證

6.驗證交易憑證

驗證交易憑證

注:驗證憑證是將獲取的憑證通過接口交給后臺去驗證App是否交易成功。如果發(fā)生弱網(wǎng),APP殺死,或者驗證失敗,憑證會保存在本地,當APP重啟時候會把本地保存的憑證進行二次的驗證。

參考文章:

http://m.itdecent.cn/p/e489c6d25dc3

http://m.itdecent.cn/p/bfa265971ce5

http://m.itdecent.cn/p/c4e24d4eebd9

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容