使用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
。
我错过了什么?
答案 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之前再拨打这些电话。