愤怒的小鸟,部落冲突或迷你系列如何验证应用内购买?

时间:2014-01-22 17:36:20

标签: ios in-app-purchase

我正在开发一个新的应用程序,并且已经实现了应用程序内购买(IAP),我已经尝试了几个解决方案来验证这些购买但是没有成功阻止那些使用IAP黑客的人,我已经有了一个服务器设置下一个代码:

    PHP:

$url = 'https://sandbox.itunes.apple.com/verifyReceipt';

$encodedData = json_encode( Array( 
    'receipt-data' => $_POST["receipt"] 
) );


//Open a Connection using POST method, as it is required to use POST method.
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $encodedData);
$encodedResponse = curl_exec($ch);
curl_close($ch);

$response = json_decode( $encodedResponse );


echo "Status Code:";

echo $response->{'status'};

并且

Objective-C:

NSString *completeString = @"http://www.example.com/verify.php";

NSURL *urlForValidation = [NSURL URLWithString:completeString];

NSMutableURLRequest *validationRequest = [[NSMutableURLRequest alloc] initWithURL:urlForValidation];

[validationRequest setHTTPMethod:@"POST"];

NSString *strTest = [NSString stringWithFormat:@"receipt=%@", [self base64forData:transaction.transactionReceipt]];

[validationRequest setHTTPBody:[strTest dataUsingEncoding:NSUTF8StringEncoding]];

NSData *responseData = [NSURLConnection sendSynchronousRequest:validationRequest returningResponse:nil error:nil];

NSString *response = [[NSString alloc] initWithData: responseData encoding: NSUTF8StringEncoding];

NSLog(@"%@", response);

但在使用IAP黑客进行越狱设备测试后,它将绕过检查并解锁IAP。

我知道像愤怒的小鸟,部落冲突和迷你血腥系列这样的应用程序可以很好地验证购买,我想知道我能做些什么来进行同样的检查。

2 个答案:

答案 0 :(得分:0)

Minigore不使用额外的验证方法。 我认为愤怒的小鸟也不是。 Clash of Clans是基于登录和服务器的,所以假设他们对验证有更多的控制权。

注意上面关于验证系统的评论,对于任何可用于任何构建目标的内容,没有服务器和唯一用户帐户,我不相信您可以做很多事情。即使使用服务器和用户帐户,匹配数据以查找作弊者可能需要相当多的努力,因此在您手上有一个成功的游戏之前,不应该优先考虑这个系统。

答案 1 :(得分:0)

有两个github项目可以帮助你。都是由mattt。第一个是CargoBay,它是用于验证购买的客观c库。第二个是Venice,它是用于验证服务器(或命令行)上购买的红宝石。