自适应付款付款已完成,但actionType为CREATE

时间:2012-02-06 03:55:01

标签: paypal paypal-adaptive-payments

使用Adaptive Payments API我使用API​​方法Pay获取了一个付费密钥,其中包含以下参数:

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

然后我用这个URL启动了嵌入式支付流程: https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&payKey= ...

灯箱再次关闭后,当我在付费键上调用PaymentDetails方法时,它会给我(以及其他值):

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

显然付款已经执行,但我还没有调用ExecutePay方法。

docs州(在“PayRequest字段”主题下):

  

actionType xs:string

     

(必填)付款请求是否支付接收方或是否支付   付款请求设置为创建付款请求,但不满足   付款直到ExecutePayment被调用。

     

允许值为:
  [...]
  CREATE - 使用此选项设置SetPaymentOptions的付款说明,然后在以后执行付款   ExecutePayment

我错过了什么?

2 个答案:

答案 0 :(得分:3)

我们最终只使用Preapproval API并使用它调用Pay。在回复中,我收到了电子邮件,我被告知:

"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."

我仍然不确定为什么Create似乎在不需要ExecutePayment调用的情况下收取费用,但对于我的工作流程(我希望对您有价值),Preapproval API是可行的方法。

答案 1 :(得分:3)

(我知道自问这个问题已有三年了,但由于另一位用户引用了这个问题,我还是会回答它。)

简而言之,如果您将发件人发送到PayPal网站,并且他们批准了付款,则无论您将actionType设置为什么,付款都会立即完成。

设置actionType=CREATE的目的是让您在付款完成之前花一点时间对付费密钥进行额外的API调用。当您进行隐式付款时,它主要是有用的 - 例如,发件人和API来电者属于同一方的那些付款(并且您已设置sender.useCredentials=true,请在senderEmail中设置您的电子邮件地址,或者在sender.accountId)中设置您的安全商家帐户ID,或者您使用发件人之前已批准的预先批准的付款。由于这些类型的付款通常会立即完成(如果您设置actionType=PAY),设置actionType=CREATE会给您一些时间在付款之前对付款进行其他API调用(例如SetPaymentOptions)完成。

如果您正在进行明确付款(发件人必须前往PayPal网站批准付款),您只需在将用户发送至PayPal之前再拨打这些电话。