iOS開發 使用RMStore簡化內購代碼 + 內購買訂單驗證


    現在很多的app里面都添加了應用內購買,網上關於蘋果證書的生成和設置的教程比較多,這里就不多贅述了,推薦幾個個人覺得說的比較詳細的網址:

http://www.jianshu.com/p/86ac7d3b593a

http://blog.csdn.net/shenjie12345678/article/details/40978977

    在項目中我使用了RMStore的第三方來實現內購代碼,因為這個框架對內購代碼進行了很好的封裝,所以依賴框架后的代碼十分簡單:

 

    向appStore請求商品:

    NSString *productIds = @[@"ID_1",@"ID_2",@"ID_3"],
    [[RMStore defaultStore] requestProducts:[NSSet setWithArray:productIds] success:^(NSArray *products, NSArray *invalidProductIdentifiers) {

        if([products count] == 0){
            NSLog(@"--------------沒有商品------------------");
            return;
        }

    } failure:^(NSError *error) {
         NSLog(@"--------------請求商品失敗------------------");
    }];


    購買商品:

   
    NSString *appleProductId = productId;  
    [[RMStore defaultStore] addPayment:appleProductId success:^(SKPaymentTransaction *transaction) {

        NSLog(@"------交易成功------");
        
    } failure:^(SKPaymentTransaction *transaction, NSError *error) {
        NSLog(@"------交易失敗------");
        NSLog(@"error:%@",error);

    }];

 

    原本繁瑣的的代碼就以上兩個方法就可以搞定了,購買過程中詳細的信息可以在block中的 transaction 和 error 等參數中獲取.

    購買成功后,為了防止不被人破解無限刷幣,所以購買完成后要進行訂單驗證.要詳細了解的話可以看看api Receipt Validation Programming Guide

為了確保驗證的准確和穩定,一般交由后台去驗證,在iOS端我們需要獲得訂單的receipt數據,然后把這個數據發給后台:

    NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
    NSData *receiptData = [NSData dataWithContentsOfURL:receiptURL];
    NSString *receiptStr = [receiptData base64EncodedStringWithOptions:NSDataBase64EncodingEndLineWithLineFeed];
    //把receiptStr發給服務器;

    原先在SKPaymentTransaction 這個類中有receipt這個參數,直接transaction.receipt就可以獲得驗證數據,但iOS7后就已經過期了,所以根據app適配的系統版本來選擇獲取receipt的方式。

    后台的小伙伴收到這串receipt后,將其通過下面的url發送給蘋果服務器,要注意測試和發布用的驗證地址是不一樣的。

    沙盒測試: https://sandbox.itunes.apple.com/verifyReceipt

    app發布后: https://buy.itunes.apple.com/verifyReceipt

    驗證后蘋果服務器會返回驗證信息,大概是3s左右,服務器的小伙伴就根據返回的信息確認訂單是否有效。具體app返回的參數可以在api中找到。

 


免責聲明!

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



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