在 Rails 上的 Paypal 自适应付款给了错误的成功
Posted
技术标签:
【中文标题】在 Rails 上的 Paypal 自适应付款给了错误的成功【英文标题】:Paypal Adaptive payments on Rails giving false Success 【发布时间】:2014-07-16 20:22:48 【问题描述】:我正在使用官方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
【问题讨论】:
如果响应的 ACK 属性在["Success", "SuccessWithWarning"]
中,则 success?
方法为真。这并不意味着付款已通过。
【参考方案1】:
使用自适应支付平台,您必须分两部分考虑问题:
-
API 调用
交易
API 调用很可能在事务未完成时成功,这似乎就是您在这里遇到的情况,所以我认为您所做的事情是正确的。
【讨论】:
以上是关于在 Rails 上的 Paypal 自适应付款给了错误的成功的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PayPal 向商家请求和发送付款(自适应付款?)