在 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 向商家请求和发送付款(自适应付款?)

自适应付款中的项目详细信息、销售税和运费的 PayPal 参数

asp.net - 无法在贝宝上进行自适应付款

贝宝自适应付款?

PayPal 自适应付款登录失败

Paypal 自适应付款 - 完成付款