Integración con Alipay

La siguiente guía explica los pasos necesarios para la recepción de pagos mediante Alipay usando la API de Openpay.

Flujo

Flujo para realizar cargos en Alipay
Pasos del proceso:
  1. El cliente solicita al comercio realizar su pago mediante Alipay
  2. El comercio utiliza la API de Openpay para iniciar una transacción de tipo Alipay.
  3. El comercio redirige al cliente a la URL regresada por Openpay
  4. El cliente inicia sesión en Alipay y realiza el pago de su compra
  5. La transacción es completada en Openpay
  6. El comercio es notificado del pago exitoso
    1. El cliente es redirigido de vuelta al comercio, y el comercio verifica el estado de la transacción
    2. El comercio debe recibir la notificación de Openpay como método alterno de confirmación
El comercio deberá integrar los pasos 1 al 3 para iniciar la transacción, y el paso 6 para ser notificado de un pago exitoso.

Iniciar transacción (Pasos 1 a 3)

Para iniciar un cargo con Alipay basta con que especifiques que el tipo de cargo que deseas se realizará mediante Alipay. Adicionalmente, debes de proveer una URL a la cual el usuario deberá ser redirigido al terminar el proceso de pago:
<?php 
    $openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
    $chargeData = array(
        'method' => 'alipay',
        'amount' => 100.00,
         'description' => 'Cargo mediante Alipay',
        'redirect_url' => 'https://www.example.com/myUrl'
    );
    $charge = $openpay->charges->create($chargeData); ?>
Si la llamada es correcta, el servicio regresará una respuesta con la URL a la que el cliente tendrá que ser redirigido para poder realizar su pago mediante Alipay: Respuesta:
{
  "id": "trxxqosgmdsvt3hocoun",
  "authorization": null,
  "operation_type": "in",
  "method": "alipay",
  "transaction_type": "charge",
  "status": "charge_pending",
  "conciliated": false,
  "creation_date": "2018-06-20T10:45:20-05:00",
  "operation_date": "2018-06-20T10:45:20-05:00",
  "description": "Cargo mediante Alipay",
  "error_message": null,
  "order_id": null,
  "due_date": "2018-06-21T10:45:20-05:00",
  "payment_method": {
    "type": "redirect",
    "url": "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges/trxxqosgmdsvt3hocoun/redirect/"
  },
  "amount": 100,
  "currency": "MXN",
  "fee": {
    "amount": 5.4,
    "tax": 0.86,
    "currency": "MXN"
  }
}

Pago en Alipay (Paso 4 y 5)

Una vez en el sitio de Alipay, el usuario podrá utilizar su App de Alipay para escanear el código QR mostrado.
Pago Alipay con QR Code
Alternativamente, el usuario puede iniciar sesión en su cuenta de Alipay y completar el pago.
Pago Alipay con Login

Confirmación de pago (Paso 6)

Una vez terminado el pago la transacción en Openpay pasará a un estado completado. El usuario será redirigido hacia la URL proporcionada al iniciar la transacción, y una notificación de pago completado será enviada al comercio.

Confirmación mediante la redirección (6a)

Una vez que el usuario haya completado su pago en Alipay, será redirigido a la URL que fue indicada al momento de crear el cargo, con el parámetro id agregado indicando la transacción que se ha completado. Ejemplo:
https://www.example.com/myUrl?id=trxxqosgmdsvt3hocoun
Al recibir esta respuesta el comercio deberá consultar la transacción en Openpay usando la API, y verificar que efectivamente ha sido completada, es decir, que el valor de su campo status sea completed. Nota: En caso de que el estado de la transacción no sea completed, considera que la transacción aún se encuentra pendiente y podría ser pagada más adelante.
<?php  $openpay = Openpay::getInstance('mzdtln0bmtms6o3kck8f', 'sk_e568c42a6c384b7ab02cd47d2e407cab');
$charge = $openpay->charges->get('trxxqosgmdsvt3hocoun');
?>
Respuesta:
{
  "id": "trxxqosgmdsvt3hocoun",
  "authorization": "2018062121001003210200378650",
  "operation_type": "in",
  "method": "alipay",
  "transaction_type": "charge",
  "status": "completed",
  "conciliated": false,
  "creation_date": "2018-06-20T10:45:20-05:00",
  "operation_date": "2018-06-20T11:31:25-05:00",
  "description": "Cargo mediante Alipay",
  "error_message": null,
  "order_id": null,
  "due_date": "2018-06-21T10:45:20-05:00",
  "payment_method": {
    "type": "redirect",
    "url": "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges/trxxqosgmdsvt3hocoun/redirect/"
  },
  "amount": 100,
  "currency": "MXN",
  "fee": {
    "amount": 5.4,
    "tax": 0.86,
    "currency": "MXN"
  }
}

Notificación de pago (6b)

Existe la posibilidad de que el usuario no sea redirigido a la página final del comercio, por ejemplo, en casos en los que el usuario cierre su ventana después del pago o si la comunicación falla durante la redirección. Para manejar estos casos, adicionalmente a la URL de respuesta, se recomienda que el comercio reciba las notificaciones de pago de Openpay, mediante las cuales será notificado cuando una transacción de Alipay haya sido completada. Nota: Toma en cuenta que la notificación de pago puede ser recibida antes o después de que el usuario es redirigido de vuelta a tu sitio. Ejemplo de notificación:
{
  "type": "charge.succeeded",
  "event_date": "2018-06-20T11:31:24-05:00",
  "transaction": {
    "id": "trxxqosgmdsvt3hocoun",
    "authorization": "2018062121001003210200378650",
    "operation_type": "in",
    "method": "alipay",
    "transaction_type": "charge",
    "status": "completed",
    "conciliated": false,
    "creation_date": "2018-06-20T10:45:20-05:00",
    "operation_date": "2018-06-20T11:31:24-05:00",
    "description": "Cargo mediante Alipay",
    "error_message": null,
    "order_id": null,
    "due_date": "2018-06-21T10:45:20-05:00",
    "payment_method": {
      "type": "redirect",
      "url": "https://sandbox-api.openpay.mx/v1/mzdtln0bmtms6o3kck8f/charges/trxxqosgmdsvt3hocoun/redirect/"
    },
    "amount": 100,
    "currency": "MXN",
    "fee": {
      "amount": 5.4,
      "tax": 0.86,
      "currency": "MXN"
    }
  }
}
Para más detalle sobre este mensaje consulta la sección de notificaciones

Pruebas en Sandbox

Para realizar pruebas de cargos completados en Sandbox puedes usar las siguientes credenciales de Alipay:
  • Usuario: cnbuyer_6456@alitest.com
  • Contraseña: b111111
Puedes descargar la App de pruebas de Alipay para Android en el siguiente link: