在傳統手游開發中免不了和蘋果支付打交道,而且蘋果也會有各種奇奇怪怪的問題和BUG 。
曾經有一次某一個游戲出現了調單問題,現象如下(我有點懶,不想畫泳道圖或者時序圖):
客戶端拉起支付付款成功,OC底層收到支付成功回調->發送支付成功的收據到服務器驗證->服務器去蘋果服務器驗證收據超時了->返回給客戶端驗證失敗了->客戶端重啟走恢復購買流程->從蘋果拿到的可恢復購買項是空的->無法恢復購買。
某一個合作過的客戶端大佬很認真的說,你們服務器有問題,蘋果那么NB的服務器,怎么會驗證超時呢?人家某某某游戲都沒有這種情況,我笑而答道:“只要涉及到網絡連接和傳輸,你能百分之百確定是可靠的嗎?那你知道http在傳輸之前和傳輸過程中發生了什么事情嗎?”,客戶端大佬一時間支支吾吾,還是有點懷疑,后來我讓他知道貿然懷疑別人而且出口就不負責任的把鍋甩給別人不是那么好甩的。
首先,很明顯客戶端的處理流程上是有問題的,那么為什么第二次拿到的可恢復購買項是空的,最直接的還是去蘋果官方文檔和論壇里找方法和結論,
他們的收據也有可能會出現無效的或者丟失,
你可以查看蘋果官網開發者文檔說明: