"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Solución de problemas de validación de recibos de compra en la aplicación: ¿Cómo manejar las respuestas de \"Estado no válido\"?

Solución de problemas de validación de recibos de compra en la aplicación: ¿Cómo manejar las respuestas de \"Estado no válido\"?

Publicado el 2024-11-09
Navegar:456

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

Verificar los recibos de compras en la aplicación

La validación de compras en la aplicación es crucial para garantizar que los usuarios hayan realizado compras legítimas y otorgarles acceso a contenido o funcionalidad premium. A pesar de la disponibilidad de documentación, puede resultar complicado implementar una validación de recibos eficaz.

Un enfoque implica enviar los datos del recibo a un servidor PHP, que luego los reenvía a la App Store de Apple para su verificación. Una respuesta exitosa confirma la validez de la compra, lo que le permite continuar con el registro de la transacción en su servidor.

Sin embargo, si encuentra respuestas de "estado no válido" durante la validación del recibo, es esencial verificar si hay errores tipográficos en tu código. El siguiente código de muestra proporciona una solución:

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

Además, se puede utilizar el siguiente código PHP en su servidor para manejar la validación del recibo y registrar la transacción:

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

Recuerde reemplazar "call-your-http-post-here" con su mecanismo de publicación HTTP preferido. Al implementar este código y garantizar su precisión, puede verificar de manera efectiva las compras con recibos y administrar las transacciones dentro de la aplicación con confianza.

Declaración de liberación Este artículo se reimprime en: 1729166962 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3