【问题标题】:Adaptive Payments payment COMPLETED although actionType is CREATE尽管 actionType 为 CREATE,但 Adaptive Payments 付款已完成
【发布时间】:2012-02-27 15:37:25
【问题描述】:

使用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

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

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

我错过了什么?

【问题讨论】:

  • 您解决了这个问题还是还在等待答案?
  • 正如您在下面看到的,还没有答案。 xkcd.com/979? :)
  • 我希望你可能已经弄清楚了,只是没有更新:D
  • 我也发现指定actionType=CREATE 会导致买家在 PayPal 上批准付款后立即付款。

标签: paypal paypal-adaptive-payments


【解决方案1】:

我们最终只使用了 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 是可行的方法。

【讨论】:

  • Afaik Preapproval API 还不支持“嵌入式支付流程”(沙盒而不是重定向)。
  • 完全忽略了这一点。知道绝对有用。感谢您的评论。
  • 在那种情况下,他们为什么要实现 CREATE 类型?如果不需要,我如何调用 Execute?
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-09-14
    • 2021-12-31
    • 2013-03-26
    • 1970-01-01
    • 2015-04-04
    • 2017-08-29
    • 1970-01-01
    • 2014-01-01
    • 2023-04-08
    相关资源
    最近更新 更多