首页  >  文章  >  后端开发  >  如何验证应用内购买收据的真实性

如何验证应用内购买收据的真实性

Barbara Streisand
Barbara Streisand原创
2024-10-17 20:09:30626浏览

How to Verify In-App Purchase Receipts for Authenticity

验证应用内购买收据

应用内购买允许用户在移动应用程序中获取数字商品和服务。验证收据对于确保这些购买的真实性至关重要。本文旨在解决收据验证中的常见挑战并提供实用的解决方案。

了解收据验证

收据验证涉及将购买收据发送到 Apple 的服务器以验证其真实性。收据包含重要信息,包括交易详细信息、产品标识符和购买日期。 Apple 响应一个验证状态,指示收据是否有效。

实现收据验证

提供的代码演示了客户端收据验证的方法:

- (BOOL)verifyReceipt:(SKPaymentTransaction *)transaction {
    // Encode receipt data to base64 string
    NSString *jsonObjectString = [self encode:(uint8_t *)transaction.transactionReceipt.bytes length:transaction.transactionReceipt.length];
    // Construct URL for validation
    NSString *completeString = [NSString stringWithFormat:@"http://url-for-your-php?receipt=%@", jsonObjectString];
    NSURL *urlForValidation = [NSURL URLWithString:completeString];
    // Send HTTP GET request to server for validation
    NSMutableURLRequest *validationRequest = [[NSMutableURLRequest alloc] initWithURL:urlForValidation];
    [validationRequest setHTTPMethod:@"GET"];
    NSData *responseData = [NSURLConnection sendSynchronousRequest:validationRequest returningResponse:nil error:nil];
    [validationRequest release];
    // Extract response status
    NSString *responseString = [[NSString alloc] initWithData:responseData encoding: NSUTF8StringEncoding];
    NSInteger response = [responseString integerValue];
    [responseString release];
    // Return validation status
    return (response == 0);
}

服务器端实现

在服务器端,一个简单的 PHP 脚本可以处理请求并将其转发给 Apple。

<code class="php">$receipt = json_encode(array("receipt-data" => $_GET["receipt"]));
$url = "https://sandbox.itunes.apple.com/verifyReceipt";
$response_json = call-your-http-post-here($url, $receipt);
$response = json_decode($response_json);

echo $response->status;</code>

结论

通过实现这些方法,您可以在 iOS 应用程序上验证应用内购买收据,并在服务器上安全地记录交易数据。这可确保仅处理合法购买,从而防止欺诈活动。

以上是如何验证应用内购买收据的真实性的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn