在应用程序购买的消费品中,您在哪里更新服务器?

时间:2012-11-30 02:51:04

标签: ios ios5 in-app-purchase

所以我有一个可以购买消耗品的应用程序,从我读过的内容来看,在服务器上保留一些信息方面会涉及更多的工作。

我不清楚的是,在成功购买时更新服务器的位置是什么?是吗

  • (void)completeTransaction:(SKPaymentTransaction *)transaction;

...

如果确实是上面提到的功能,那只是进行网络呼叫和更新服务器服务器吗?我只是想了解最佳实践,并希望得到任何帮助。

很多问候

3 个答案:

答案 0 :(得分:1)

我不知道这是否算作有效答案,但您应该查看this文章。 这篇博文是从2010年开始的,所以可以说它已经过时了!但我认为值得一看,所提供的示例(completeTransaction方法实现)也应该有效。

让应用程序购买工作比实际应用更痛苦。

答案 1 :(得分:1)

中做了并做到了
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
...
 case SKPaymentTransactionStatePurchased: 
 case SKPaymentTransactionStateRestored:
      [self sendReceiptToServerAndValidateFurther:transaction.receiptData

然后它只是服务器端脚本的一个网络连接,它可以使用itunes验证收据并更新其数据库/发送数据

btw some server php

function itunes_verify2($receiptData,$sandboxed) {
    //itunes store url -- sandbox or not :)
    $itunes_storeURL = "https://buy.itunes.apple.com/verifyReceipt";
    if($sandboxed == true) {
        $itunes_storeURL = "https://sandbox.itunes.apple.com/verifyReceipt";
    }

    log_action('itunes_verify2 using ' . $itunes_storeURL);

    $post = array("receipt-data" => $receiptData ); 
    $postData = json_encode($post);

    $responseData = post_doRequest( $itunes_storeURL, $postData );
    $response = json_decode($responseData);

    if($responseArray->status == 0) {
        return "YES";
    } else {
        log_action('failed to get status ok from ' . $reponseData);
        return "NO";
    }
}

答案 2 :(得分:0)

我会在这里就这个问题进行投票。似乎有几个例子。 https://stackoverflow.com/questions/4178214/ios-in-app-purchase-sample-code

据我所知,消耗品确实需要您自己的托管,如下所述: iOS In App Purchases for Subscriptions and Consumables products

我没有消耗品的个人经验,只有升级型IAP,这些痛苦(相对而言)。