„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Fehlerbehebung bei der In-App-Kaufbelegvalidierung: Wie gehe ich mit Antworten mit „Ungültigem Status“ um?

Fehlerbehebung bei der In-App-Kaufbelegvalidierung: Wie gehe ich mit Antworten mit „Ungültigem Status“ um?

Veröffentlicht am 09.11.2024
Durchsuche:638

Troubleshooting In-App Purchase Receipt Validation: How to Handle \

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.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729166962 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

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