3

だから私は消耗品を購入したアプリを持っていて、私が読んだことから、サーバー上にいくつかの情報を保持するという点でもう少し作業が必要です。

私がはっきりしていないのは、購入が成功したときにサーバーをどこで更新するのかということです。それは...ですか

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

??

それが本当に上記の機能である場合、それはWeb呼び出しを行い、サーバーサーバーを更新するだけの問題ですか?私はベストプラクティスを理解しようとしているだけで、助けていただければ幸いです。

よろしく

4

3 に答える 3

1

はやった

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

その後、サーバー側スクリプトへの Web コールのみで、itunes でレシートを検証し、DB を更新してデータを送信できます。

ところでいくつかのサーバー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";
    }
}
于 2012-12-04T20:12:56.750 に答える
1

これが有効な回答と見なされるかどうかはわかりませんが、この記事をチェックしてください。ブログの投稿は 2010 年のものなので、かなり古いと言えます。しかし、一見の価値があると思います。提供されている例 (completeTransaction メソッドの実装) も有効である必要があります。

アプリの購入を機能させることは、実際よりもはるかに苦痛です.

于 2012-12-04T20:00:07.720 に答える
0

ここで、この SO の質問に投票します。いくつかの例があるようです。 https://stackoverflow.com/questions/4178214/ios-in-app-purchase-sample-code

私が知る限り、消耗品には独自のホスティングが必要です。これについては、次の記事で説明しています: iOS サブスクリプションおよび消耗品製品のアプリ内購入

私は消耗品について個人的な経験がなく、アップグレードタイプのIAPのみで、それほど苦痛ではありませんでした(比較的言えば).

于 2012-12-11T01:02:00.280 に答える