6

使用Adaptive Payments APIPay ,我使用带有以下参数的 API 方法获取了支付密钥:

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方法。

文档状态(在“ PayRequest Fields”主题下):

动作类型 xs :字符串

(必需) Pay 请求是否向接收方付款,或者 Pay 请求是否设置为创建付款请求,但在ExecutePayment调用之前不完成付款。

允许的值为:
[...]
CREATE– 使用此选项设置付款指令,SetPaymentOptions然后在以后使用ExecutePayment.

我错过了什么?

4

2 回答 2

3

We ended up just using the Preapproval API and calling Pay with that. In the response I got to my e-mail I was told:

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

I'm still not sure why Create appears to make the charge without requiring an ExecutePayment call, but for my workflow (which I hope is valuable to you), the Preapproval API is the way to go.

于 2012-03-03T23:16:45.597 回答
3

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

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

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

但是,如果您正在进行显式付款(发件人必须前往 PayPal 网站批准付款),您只需在将用户发送到 PayPal 之前进行这些额外的调用。

于 2015-04-06T14:39:21.897 回答