我用的是官方Paypal Ruby adaptive payments gem结合embedded payment flow在我的网站上收取一次性付款。
付款本身工作正常,但在我的回调中我想检查付款是否成功。当我使用建议的代码查询付款时 here ,即使我取消付款也是成功的。
require 'paypal-sdk-adaptivepayments'
@api = PayPal::SDK::AdaptivePayments::API.new
# Build request object
@payment_details = @api.build_payment_details({
:payKey => "AP-xxxxxxxxxxxxxxxx" })
# Make API call & get response
@payment_details_response = @api.payment_details(@payment_details)
# Access Response
if @payment_details_response.success?
# Comes in here every time as @payment_details_response.success? always = true
else
@payment_details_response.error
end
如何检查付款是否已取消? (取消付款是指点击弹出窗口中的 X)
更新: 我现在找到了解决方法,但奇怪的是如何成功?总是正确的
if @payment_details_response.paymentInfoList.paymentInfo[0].transactionStatus
&& @payment_details_response.paymentInfoList.paymentInfo[0].transactionStatus == "COMPLETED"
#success
else
#fail
end
最佳答案
使用自适应支付平台,您必须分两部分考虑事情:
- API调用
- 交易
API 调用很可能在事务未完成时成功,这似乎就是您在这里遇到的情况,所以我认为您所做的是正确的。
关于ruby-on-rails - Rails 上的 Paypal 自适应支付给出错误的成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23897600/