Skip to content

Cargo recurrente vía cron exige device_session_id #87

@sunco007

Description

@sunco007

Resumen

El primer cargo (web, sandbox) funciona —incluido 3DS—.
El segundo cargo (recurrente, vía cron, usando card_id guardada) falla con: Attribute device_session_id is required.

La cuestión es que device_session_id solo se genera en el formulario, por ende no existe al hacer el segundo cobro

Puedo leer el customer sin problema; el error ocurre en $customer->charges->create().

Entorno

País: MX · Modo: Sandbox (setProductionMode(false))
Contexto: cron/CLI (sin navegador)

Código mínimo

Openpay::setCountry('MX');
Openpay::setProductionMode(false);
$openpay  = Openpay::getInstance('MERCHANT_ID', 'SK_PRIVADA', 'MX', '127.0.0.1');

$customer = $openpay->customers->get('<customer_id>'); // OK

$charge = $customer->charges->create([
  'method'      => 'card',
  'source_id'   => '<stored card_id>', // tarjeta guardada del primer cargo
  'amount'      => 100.00,
  'currency'    => 'MXN',
  'description' => 'Recurring test',
  'order_id'    => 'S123-C2'
]);

Código de la documentación

$openpay = Openpay::getInstance('moiep6umtcnanql3jrxp', 'sk_3433941e467c1055b178ce26348b0fac', 'MX', '127.0.0.1');

$chargeData = array(
	'source_id' => 'tvyfwyfooqsmfnaprsuk',
	'method' => 'card',
	'amount' => 100,
	'description' => 'Cargo inicial a mi cuenta',
	'order_id' => 'ORDEN-00070');

$customer = $openpay->customers->get('a9ualumwnrcxkl42l6mh');
$charge = $customer->charges->create($chargeData);

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions