"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Dépannage de la validation des reçus d'achat dans l'application : comment gérer les réponses « Statut invalide » ?

Dépannage de la validation des reçus d'achat dans l'application : comment gérer les réponses « Statut invalide » ?

Publié le 2024-11-09
Parcourir:718

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

Vérification des reçus d'achat dans l'application

La validation des achats dans l'application est cruciale pour garantir que les utilisateurs ont effectué des achats légitimes et leur accorder l'accès à contenu ou fonctionnalité premium. Malgré la disponibilité de la documentation, il peut être difficile de mettre en œuvre une validation efficace des reçus.

Une approche consiste à envoyer les données du reçu à un serveur PHP, qui les transmet ensuite à l'App Store d'Apple pour vérification. Une réponse réussie confirme la validité de l'achat, vous permettant ainsi de procéder à l'enregistrement de la transaction sur votre serveur.

Cependant, si vous rencontrez des réponses de « statut invalide » lors de la validation du reçu, il est essentiel de vérifier s'il y a d'éventuelles fautes de frappe dans votre code. L'exemple de code suivant fournit une solution :

- (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];
}

De plus, le code PHP suivant peut être utilisé sur votre serveur pour gérer la validation des reçus et enregistrer la transaction :

$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;

N'oubliez pas de remplacer "call-your-http-post-here" par votre mécanisme de publication HTTP préféré. En mettant en œuvre ce code et en garantissant son exactitude, vous pouvez vérifier efficacement les reçus d'achat et gérer les transactions dans l'application en toute confiance.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729166962. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3