php - 我如何使用 omnipay 检查它是否是待处理的付款

标签 php codeigniter paypal omnipay

我正在使用 Omnipay 2.1 和 CodeIgniter 2.1.4 接收 Paypal 付款。

我使用这条线完成购买并检查付款是否已发送:

$bool = $gateway->completePurchase(array('amount' => $total, 'currency' => 'EUR'))
                ->send()
                ->isSuccessful();

但我注意到如果付款处于待处理状态,方法 isSuccessful() 也会返回 true

我如何使用 omnipay 检查它是否是待处理的付款?

最佳答案

查看您的原始响应数据,重要的几行是:

[ACK] => Success
[PAYMENTINFO_0_CURRENCYCODE] => EUR
[PAYMENTINFO_0_PAYMENTSTATUS] => Pending
[PAYMENTINFO_0_PENDINGREASON] => multicurrency

因此付款已成功处理,但处于 Pending 状态。 Omnipay 没有明确检查这一点,但我不确定这是否明智。从客户的角度来看,付款已成功,钱已离开他们的帐户。

查看 PayPal API documentation对于 PAYMENTINFO_0_PENDINGREASON:

multi-currency – You do not have a balance in the currency sent, and you do not have your Payment Receiving Preferences set to automatically convert and accept this payment. You must manually accept or deny this payment.

基本上付款是成功的,唯一的待处理原因是您以您未在 PayPal 帐户中明确启用的货币 (EUR) 向客户收费。

关于php - 我如何使用 omnipay 检查它是否是待处理的付款,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20848860/

相关文章:

jquery - 如何才能让这个条形码正确显示

php - Mysqli 更改行值为 0,而实际上为 1

php - 无法调用未定义的handlebars.js的方法 'match'

php - 在 Javascript 中调用 PHP 会产生函数的文字字符串

支付宝支付类型

php - Paypal 与 Laravel 5.1 的集成

python - Paypal 为 IPN 发送了警告邮件

php - Mediawiki php : how to get the name of user who uploaded a file?

php - __FILE__ 是什么意思?

postgresql - 如何使用 codeigniter 进行操作