Hoy vamos a aprender una forma de validar compras in APP usando las compras de aplicación de iOS en PHP.

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

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

Y buscar Secreto compartido específico de la APP > Gestionar

Finalmente generaremos dicho código:

Importante: El código tarda unas horas hasta que está operativo.

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.