Verificar compra en aplicación iOS usando Python

Tiempo de lectura: 2 minutos

Hoy vamos a crear una función qué nos permitirá verificar una compra in app realizada desde ios con Apple y en Python.

Colibri - pexels

Crearemos una funcion util de esta forma:

import requests
def verify_ios_purchase(purchase_token: str, testMode: bool = False) -> dict:
    
    print(purchase_token)
    print("---------------------------")
    """
    Verifica el receipt de iOS con los servidores de Apple.

    Args:
        purchase_token (str): El receipt-data enviado por la app.
        testMode sandbox (bool): True si es entorno de pruebas, False si es producción.

    Returns:
        dict: Respuesta JSON de Apple.
    """
    url = "https://sandbox.itunes.apple.com/verifyReceipt" if testMode else "https://buy.itunes.apple.com/verifyReceipt"

    payload = {
        "receipt-data": purchase_token,
        "password": SHARED_SECRET_IOS_IAP,
        "exclude-old-transactions": True
    }

    headers = {
        "Content-Type": "application/json"
    }

    try:
        response = requests.post(url, json=payload, headers=headers, timeout=10)
        response.raise_for_status()
        print(response.json())
        return response.json()
    except requests.exceptions.RequestException as e:
        return {"status": "error", "message": str(e)}

Y la utilizamos de la siguiente forma:

result = verify_ios_purchase(compra_iap.purchaseToken, testMode=compra_iap.test)

            # Revisar resultado
            if result.get("status") == 0:
                print("Compra válida")
                print(result)
            else:
                print("Compra NO válida")
                print(result.get("message"))
                #Devuelve excepcion
            raise HTTPException(status_code=400, detail=f"Compra no válida Apple: {result.get('message')}")

Muy importante esta función debe recibir un transactionReceipt no confundir con el purchaseToken de Android ni con jwsRepresentationIOS de storekit2

Para obtener el SHARED_SECRET_IOS_IAP tenemos que hacer lo siguiente:

Debemos ir a nuestra cuenta de Apple Developer > Usuarios y acceso > Secreto compartido

Usuarios y acceso compartido apple

Y copiamos la clave que devuelve.

Aquí tienes como hacerlo en PHP: https://devcodelight.com/validar-compra-en-aplicacion-compras-in-app-de-ios-usando-php/

Deja un comentario