因此,我有一个购买了消耗品的应用程序,并且从我所阅读的内容来看,更多的工作涉及在服务器上保留一些信息。
我不清楚的是,成功购买后在哪里更新服务器?是吗
- (void)completeTransaction:(SKPaymentTransaction *)transaction;
??
如果确实是上面提到的功能,难道只是打个web调用,更新一下server server吗?我只是想了解最佳实践,并希望得到任何帮助。
非常问候
因此,我有一个购买了消耗品的应用程序,并且从我所阅读的内容来看,更多的工作涉及在服务器上保留一些信息。
我不清楚的是,成功购买后在哪里更新服务器?是吗
??
如果确实是上面提到的功能,难道只是打个web调用,更新一下server server吗?我只是想了解最佳实践,并希望得到任何帮助。
非常问候
我做到了并且做到了
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
...
case SKPaymentTransactionStatePurchased:
case SKPaymentTransactionStateRestored:
[self sendReceiptToServerAndValidateFurther:transaction.receiptData
然后它只是对服务器端脚本的网络调用,它可以使用 iTunes 验证收据并更新其数据库/发送数据
顺便说一句,一些服务器 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";
}
}
我不知道这是否算作一个有效的答案,但你也许应该看看这篇文章。这篇博文是 2010 年的,所以可以说它已经过时了!但我认为值得一看,提供的示例(completeTransaction 方法实现)也应该有效。
让应用程序购买工作比实际情况要痛苦得多。
我会在这里为这个 SO 问题投票。好像有几个例子。 https://stackoverflow.com/questions/4178214/ios-in-app-purchase-sample-code
据我所知,消耗品确实需要您自己的主机,如此处所述: iOS In App Purchases for Subscriptions and Consumables products
我对消耗品没有个人经验,只有升级类型的 IAP,这并不太痛苦(相对而言)。