Hoy vamos a aprender una forma de validar compras in APP usando las compras de aplicación de iOS en PHP.
![](https://i0.wp.com/images.pexels.com/photos/18069696/pexels-photo-18069696.png?w=900&ssl=1)
Lo primero que tenemos que hacer es tener implementadas las compras in APP de iOS: https://devcodelight.com/anadir-compras-de-aplicacion-en-react-native/
Si ya las tenemos configuradas, seguimos por aquí:
- Creamos nuestro archivo de compras_ios.php
- Recibiremos los parámetros necesarios (purchase_token, idTransaction, subscriptionId, test)
$inputJSON = file_get_contents('php://input'); $body = json_decode($inputJSON, TRUE); $id_user = $body['id_user']; $purchase_token = $body['purchase_token']; //receipt-data $idTransaction = $body['idTransaction']; $subscriptionId = $body['subscriptionId']; $test = $body['test']; if (!$test) { $urlVerify = "https://buy.itunes.apple.com/verifyReceipt"; } else { $urlVerify = "https://sandbox.itunes.apple.com/verifyReceipt"; } $sharedSecret = "shared_secret_code"; //Comprueba el token: $datosEnviar = json_encode(array('receipt-data' => $purchase_token, 'password' => $sharedSecret, 'exclude-old-transactions' => true)); $opts = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type: application/json', 'Content-Lenght' . strlen($datosEnviar) . "\r\n", 'content' => $datosEnviar ) ); $context = stream_context_create($opts); $result = file_get_contents($urlVerify, false, $context); //echo $result; $datos = json_decode($result, true); die($result); if ($datos['receipt']['in_app'][0]['product_id'] == $subscriptionId && $datos['status'] == 0) { echo "Compra válida"; }else{ echo "Compra no válida" }
Ahora voy a explicar el código.
Recibiremos las siguientes variables:
purchase_token: es el transactionReceipt de la compra iOS
idTransaction: es el transactionId de la compra iOS
subscriptionId: es el productId de la compra iOS
test: es una variable booleana que nos permitirá poner las compras en modo desarrollo o modo producción.
Una vez comprobadas las variables es muy importante que generemos el:
$sharedSecret = "shared_secret_code";
Para generar este código debemos ir a nuestra cuenta de Apple Developer > Usuarios y acceso > Secreto compartido
![](https://i0.wp.com/devcodelight.com/wp-content/uploads/2024/05/imagen-4.png?resize=404%2C319&ssl=1)
Y copiamos la clave que devuelve.
También podemos crear una clave individual para la APP. En ese caso tenemos que ir a nuestra APP dentro de Apple Developer > Información de la APP
![](https://i0.wp.com/devcodelight.com/wp-content/uploads/2024/05/imagen-5.png?resize=306%2C97&ssl=1)
Y buscar Secreto compartido específico de la APP > Gestionar
![](https://i0.wp.com/devcodelight.com/wp-content/uploads/2024/05/imagen-6.png?resize=538%2C144&ssl=1)
Finalmente generaremos dicho código:
![](https://i0.wp.com/devcodelight.com/wp-content/uploads/2024/05/imagen-7.png?resize=821%2C356&ssl=1)
Importante: El código tarda unas horas hasta que está operativo.
![](https://i0.wp.com/devcodelight.com/wp-content/uploads/2022/02/img.png?resize=100%2C100&ssl=1)
Ingeniero en Informática, 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.