iOS內購的訂單對應和補單


內購的關鍵類:

1.SKPayment(SKMutablePayment可將自己的參數一對一與蘋果產生的payment對應起來)

2.TransactionObserver:交易狀態更新時執行此方法,此方法會傳入交易SKPaymentTransaction數組,對數組進行遍歷,對不同狀態進行對應的操作

(SKPaymentTransactionStatePurchasing,SKPaymentTransactionStatePurchased,SKPaymentTransactionStateFailed,SKPaymentTransactionStateRestored,SKPaymentTransactionStateDeferred) 

3.SKPaymentTransaction:包括transactionReceipt,payment,transactionIdentifier等關鍵屬性,transactionReceipt是后端驗簽的關鍵。

 

內購流程1:

        SKPayment *payment = [SKPayment paymentWithProductIdentifier:productID];//傳入productID
        [[SKPaymentQueue defaultQueue] addTransactionObserver:self];//添加observer,並執行協議,對支付狀態進行更新

        //observer代理方法
         - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    for (SKPaymentTransaction *transaction in transactions)
    {
        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                //對已經支付的狀態進行操作
                break;
            case SKPaymentTransactionStateFailed:
               //支付失敗的操作
                break;
            case SKPaymentTransactionStateRestored:
              //對於非消耗產品的操作
                break;
            default:
                break;
        }
    }
}
如果用戶已經支付,但是驗簽沒有通過,繼續支付時會產生可免費恢復的對話框,這時即使再添件payment,也都是purchasing的狀態,必需將purchased狀態的paymenttrananction 通過[[SKPaymentQueue defaultQueue] finishTransaction:transaction]后才能逐個執行paymentque里面purchasing狀態下的訂單(這是針對同一個productIdentifier的產品),不同的productIdentifier產品仍可正常支付

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM