2012-02-06 23 views
6

Utilizando el Adaptive Payments API he adquirido una clave de pago utilizando el método de la API Pay con estos parámetros:pago Pagos adaptativa COMPLETADO aunque actionType es crear

actionType:      CREATE 
receiverList.receiver(0).email: ... 
receiverList.receiver(0).amount: 5 
currencyCode:     EUR 
cancelUrl:      ... 
returnUrl:      ... 
requestEnvelope.errorLanguage: en_US 

Entonces empecé el flujo de pago integrado con esta URL: https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&payKey= .. .

Después de la caja de luz se cierra de nuevo, cuando llamo el método PaymentDetails en la tecla de pago, me da (entre otros valores):

paymentInfoList.paymentInfo(0).transactionStatus: COMPLETED 
status:           COMPLETED 
actionType:          CREATE 

Aparentemente, el pago ya se ha ejecutado, aunque aún no he llamado al método ExecutePay.

El estado docs (bajo el tema "PayRequest campos"):

ACTIONTYPExs: string

(Obligatorio) Si la solicitud de pago paga el receptor o si el La solicitud de pago está configurada para crear una solicitud de pago, pero no cumple con el pago hasta que se llame al ExecutePayment.

Los valores permitidos son:
[...]
CREATE - Utilice esta opción para configurar las instrucciones de pago con SetPaymentOptions y luego ejecutar el pago en un momento posterior con la ExecutePayment.

¿Qué es lo que extrañé?

+1

¿Lo resolvió o todavía está esperando una respuesta? –

+2

Como puedes ver a continuación, aún no hay respuesta. http://xkcd.com/979/? :) – AndreKR

+0

Tenía la esperanza de que lo haya descubierto y simplemente no se actualizó: D –

Respuesta

3

Terminamos simplemente usando la API de aprobación previa y llamando a Pay con eso. En la respuesta que dio a mi correo electrónico me dijeron:

"PayPal does not allow you to hold any amount of money in somebody else's PayPal account  and that is why we have Preapproval API." 

Todavía no estoy seguro de por qué cree aparecerá para hacer la carga sin que se requiera una llamada ExecutePayment, pero para mi flujo de trabajo (que espero es valioso para ti), la API de aprobación previa es el camino a seguir.

+1

Afaik la API de aprobación previa aún no admite el "flujo de pago integrado" (sandbox en lugar de redirigir). – AndreKR

+0

Completamente ignorado. Definitivamente útil para saber. Gracias por el comentario. –

+1

En ese caso, ¿por qué implementarían el tipo CREAR? ¿Cómo puedo llamar a Execute si no hay necesidad de hacer eso? –

3

(sé que han pasado tres años desde que se hizo esta pregunta, pero desde otro usuario hace referencia a esta pregunta, voy a responder de todos modos.)

En resumen, si envía al remitente a la página web de PayPal y aprueban el pago, el pago se completará de inmediato, independientemente de lo que establezca actionType.

El propósito de establecer actionType=CREATE es darle un poco de tiempo para realizar llamadas adicionales de API contra la clave de pago antes de que se complete el pago. Es principalmente útil cuando realiza pagos implícitos, por ejemplo, aquellos pagos en los que el emisor y el llamante de API son la misma parte (y ha configurado sender.useCredentials=true, establezca su dirección de correo electrónico en senderEmail o establezca su ID de cuenta comercial segura en sender.accountId), o aquellos pagos en los que usa una aprobación previa que el remitente haya aprobado previamente.Dado que estos tipos de pagos normalmente se completarían de inmediato (si establece actionType=PAY), establecer actionType=CREATE le da un poco de tiempo para realizar otras llamadas API contra el pago (como SetPaymentOptions) antes de que se complete el pago.

Si está realizando un pago explícito (donde el remitente debe ir al sitio web de PayPal para aprobar el pago), sin embargo, debe realizar esas llamadas adicionales antes de enviar al usuario a PayPal.

Cuestiones relacionadas