首先說下我們的項目需求挫酿,我們的IAP內購是非消耗型產品。
實現原理:下訂單的時候就把訂單和產品id系列化保存起來愕难,為了避免訂單數據越來越多早龟,所以當收到交易失敗或者交易成功的時候就把當前訂單刪除了。
然后本地各種測試沒有問題猫缭,等到發(fā)布線上的時候很多用戶反饋微信扣錢了葱弟,但是視頻還是不能正常觀看,然后就反復排查代碼猜丹,邏輯還是沒問題啊芝加,然后本地又各種測試還是沒有復現。
最后測試直接模擬用戶操作射窒,首先appid里面沒有錢也沒有綁定微信支付寶藏杖,這時支付不成功會彈出是否繼續(xù)的提示框,然后點繼續(xù)綁定微信操作轮洋,由于我們是非消耗型產品所以綁定成功直接扣款了制市,可是回到app發(fā)現并沒有去向服務器驗證訂單。
由于蘋果支付坑不能本地調試所以只有在代碼里面加點log發(fā)布到appstore上面測試弊予,發(fā)現彈出是否繼續(xù)提示框的時候蘋果返回了一個失敗的回調祥楣,由于這時我把訂單刪除了,所以等到支付成功時就找不到訂單了。
記住這里有個大坑:IAP支付误褪,綁定微信或者支付寶時會有一個失敗的回調SKPaymentTransactionStateFailed责鳍。