Belege für In-App-Käufe überprüfen
Die Validierung von In-App-Käufen ist entscheidend, um sicherzustellen, dass Benutzer legitime Einkäufe getätigt haben, und um ihnen Zugriff darauf zu gewähren Premium-Inhalte oder -Funktionalität. Trotz der Verfügbarkeit von Dokumentation kann es schwierig sein, eine effektive Belegvalidierung zu implementieren.
Ein Ansatz besteht darin, die Belegdaten an einen PHP-Server zu senden, der sie dann zur Überprüfung an den Apple App Store weiterleitet. Eine erfolgreiche Antwort bestätigt die Gültigkeit des Kaufs, sodass Sie mit der Aufzeichnung der Transaktion auf Ihrem Server fortfahren können.
Wenn Sie jedoch bei der Quittungsvalidierung auf Antworten mit „ungültigem Status“ stoßen, ist es wichtig, nach Tippfehlern zu suchen Dein Code. Der folgende Beispielcode bietet eine Lösung:
- (BOOL)verifyReceipt:(SKPaymentTransaction *)transaction { NSString *jsonObjectString = [self encode:(uint8_t *)transaction.transactionReceipt.bytes length:transaction.transactionReceipt.length]; NSString *completeString = [NSString stringWithFormat:@"http://url-for-your-php?receipt=%@", jsonObjectString]; NSURL *urlForValidation = [NSURL URLWithString:completeString]; NSMutableURLRequest *validationRequest = [[NSMutableURLRequest alloc] initWithURL:urlForValidation]; [validationRequest setHTTPMethod:@"GET"]; NSData *responseData = [NSURLConnection sendSynchronousRequest:validationRequest returningResponse:nil error:nil]; [validationRequest release]; NSString *responseString = [[NSString alloc] initWithData:responseData encoding: NSUTF8StringEncoding]; NSInteger response = [responseString integerValue]; [responseString release]; return (response == 0); } - (NSString *)encode:(const uint8_t *)input length:(NSInteger)length { static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 /="; NSMutableData *data = [NSMutableData dataWithLength:((length 2) / 3) * 4]; uint8_t *output = (uint8_t *)data.mutableBytes; for (NSInteger i = 0; i > 18) & 0x3F]; output[index 1] = table[(value >> 12) & 0x3F]; output[index 2] = (i 1) > 6) & 0x3F] : '='; output[index 3] = (i 2) > 0) & 0x3F] : '='; } return [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease]; }
Darüber hinaus kann der folgende PHP-Code auf Ihrem Server verwendet werden, um die Quittungsvalidierung durchzuführen und die Transaktion aufzuzeichnen:
$receipt = json_encode(array("receipt-data" => $_GET["receipt"])); // NOTE: use "buy" vs "sandbox" in production. $url = "https://sandbox.itunes.apple.com/verifyReceipt"; $response_json = call-your-http-post-here($url, $receipt); $response = json_decode($response_json); // Save the data here! echo $response->status;
Denken Sie daran, „call-your-http-post-here“ durch Ihren bevorzugten HTTP-Post-Mechanismus zu ersetzen. Durch die Implementierung dieses Codes und die Sicherstellung seiner Genauigkeit können Sie Quittungskäufe effektiv überprüfen und In-App-Transaktionen sicher verwalten.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3