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

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

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/

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.
