Je suis en train d'utiliser l'achat in-app dans mon application ... maintenant je veux valider le reçu, et pour valider la signature de réception, j'utilise le code ci-dessous dans l'AppDelegate (afin de savoir si l'utilisateur a déjà acheté ce lors du lancement de l'App)Xcode Validation Reçu Signature Erreur
en fait le code provient de la WWDC 2013 - Session 308 ;-)
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receiptData = [NSData dataWithContentsOfURL:receiptURL];
NSData *certificateData = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"AppleIncRootCertificate" withExtension:@"cer"]];
/* The PKCS #7 container (the receipt) and The Apple root certificate. */
BIO *b_receipt = BIO_new_mem_buf((void *) [receiptData bytes], (int)[receiptData length]);
BIO *b_x509 = BIO_new_mem_buf((void *)[certificateData bytes], (int)[certificateData length]);
// Convert receipt data to PKCS #7 Representation
PKCS7 *p7 = d2i_PKCS7_bio(b_receipt, NULL);
/* Create the root certificate */
X509_STORE *store = X509_STORE_new();
X509 *appleRootCA = d2i_X509_bio(b_x509, NULL);
X509_STORE_add_cert(store, appleRootCA);
/* Verify the signature. If the verification is correct, b_receiptPayload will contain the PKCS #7 payload and result will be 1. */
BIO *b_receiptPayload = BIO_new(BIO_s_mem());
int result = PKCS7_verify(p7, NULL, store, NULL, b_receiptPayload, 0);
if (result == 1)
{
NSLog(@"Receipt Signature is valid");
} else {
unsigned long error = ERR_get_error();
const char* error_str = ERR_error_string(error, NULL);
NSLog(@"OpenSSL Error: %s",error_str);
}
mais je reçois toujours l'erreur OpenSSL suivante: erreur: 2006F079 : lib (32): func (111): raison (121)
Je déjà googl e mais sans résultat ... une suggestion?
Une autre façon de valider la signature de reçu?
vous remercie à l'avance de votre collaboration ...
J'utilise cette bibliothèque - https://github.com/robotmedia/RMStore. Voici comment utiliser la vérification des reçus https://github.com/robotmedia/RMStore/wiki/Receipt-verification – Traveler
merci, je vais vérifier ... – jankoesp