«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Устранение неполадок с проверкой квитанции о покупке в приложении: как обрабатывать ответы «Недействительный статус»?

Устранение неполадок с проверкой квитанции о покупке в приложении: как обрабатывать ответы «Недействительный статус»?

Опубликовано 9 ноября 2024 г.
Просматривать:337

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

Проверка квитанций о покупках в приложении

Проверка покупок в приложении имеет решающее значение для обеспечения законности покупок пользователей и предоставления им доступа к премиум-контент или функциональность. Несмотря на наличие документации, реализовать эффективную проверку квитанций может быть непросто.

Один из подходов предполагает отправку данных квитанции на PHP-сервер, который затем пересылает их в Apple App Store для проверки. Успешный ответ подтверждает действительность покупки, позволяя вам продолжить запись транзакции на вашем сервере.

Однако, если во время проверки квитанции вы столкнулись с ответами «недействительный статус», важно проверить наличие опечаток в ваш код. Следующий пример кода предоставляет решение:

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

Кроме того, на вашем сервере можно использовать следующий PHP-код для проверки квитанции и записи транзакции:

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

Не забудьте заменить «call-your-http-post-here» на предпочитаемый вами механизм публикации HTTP. Внедрив этот код и обеспечив его точность, вы сможете эффективно проверять чеки покупок и с уверенностью управлять транзакциями в приложении.

Заявление о выпуске Эта статья перепечатана по адресу: 1729166962. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3