Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Paypal Rails上的自适应支付导致错误成功_Ruby On Rails_Ruby_Paypal_Paypal Adaptive Payments - Fatal编程技术网

Ruby on rails Paypal Rails上的自适应支付导致错误成功

Ruby on rails Paypal Rails上的自适应支付导致错误成功,ruby-on-rails,ruby,paypal,paypal-adaptive-payments,Ruby On Rails,Ruby,Paypal,Paypal Adaptive Payments,我正在使用的官方与收取一次性付款在我的网站 付款本身工作正常,但在我的回拨中,我希望检查付款是否通过。当我使用建议的代码查询付款时,即使我取消付款,也会成功 require 'paypal-sdk-adaptivepayments' @api = PayPal::SDK::AdaptivePayments::API.new # Build request object @payment_details = @api.build_payment_details({ :payKey =>

我正在使用的官方与收取一次性付款在我的网站

付款本身工作正常,但在我的回拨中,我希望检查付款是否通过。当我使用建议的代码查询付款时,即使我取消付款,也会成功

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 

使用Adaptive Payments platform,您必须从两个方面考虑问题:

  • API调用
  • 交易

  • 当事务未完成时,API调用很可能会成功,这似乎就是您在这里遇到的情况,因此我认为您所做的是正确的。

    success?
    如果响应的ACK属性在
    [“success”,“SuccessWithWarning”]
    中,则方法是正确的。这并不意味着付款通过了。