尽管 actionType 为 CREATE,但 Adaptive Payments 付款已完成

Posted

技术标签:

【中文标题】尽管 actionType 为 CREATE,但 Adaptive Payments 付款已完成【英文标题】:Adaptive Payments payment COMPLETED although actionType is CREATE 【发布时间】: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 上批准付款后立即付款。 【参考方案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 之前进行这些额外的调用。

【讨论】:

以上是关于尽管 actionType 为 CREATE,但 Adaptive Payments 付款已完成的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL - 尽管运行 CREATE LANGUAGE,但语言 pgplsql 不存在

TypeScript:类型“ActionTypes”不满足约束“Action<any>”

AWS Elastic Beanstalk 部署的 ActionType 在哪里?

tsc compile in React (create-react-app) 需要显式编译标志,尽管我在 tsconfig.json 中设置了它们

尽管使用了所有默认的 create-react-app 配置,Heroku “不是来自 webpack 的内容是从 /app/public 提供的”

尽管响应为 200,但 Axios 状态为 449