Todo funcionaba bien, pero de repente, sin cambiar ningún código, noté que los pedidos aprobados no se capturan automáticamente y tengo que capturar el pago manualmente usando curl.
Después de algunas investigaciones... descubrí que mientras usaba sandbox todo funciona según lo previsto, comparé la respuesta de los modos live
y sandbox
y descubrí que la respuesta del parámetro de actions
onApprove()
en modo en live
es
{ order: {}, payment: null }
Mientras está en modo sandbox
es
{ order: {capture: ƒ, authorize: ƒ, patch: ƒ, get: ƒ} payment: null redirect: ƒ r() restart: ƒ r() }
Por lo tanto, actions.order.capture()
no existe en modo en live
, por lo tanto, no se captura automáticamente y no se generaron excepciones onError
.
Mi código onApprove
onApprove: function(data, actions) { return actions.order.capture().then(function(details) { alert('Transaction approved by ' + details.payer.name.given_name); }); },
¿Como puedo resolver este problema?