【问题标题】:ActiveMerchant: Send item details to paypal urlActiveMerchant:将商品详细信息发送到 paypal url
【发布时间】:2015-10-07 04:41:35
【问题描述】:

我正在尝试使用active merchant gem 将paypal-express-checkout 与我的rails 4 应用程序集成。我已成功重定向到paypal,但我无法发送项目详细信息(仅将金额传递给paypal)。

我做了什么:

total_amount = cart_items.sum(:amount)

items = []
cart_items.each_with_index do |item, index|
  items << {
      "L_PAYMENTREQUEST_0_NAME#{index+1}" => item.product_name,
      "L_PAYMENTREQUEST_0_AMT#{index+1}" => to_cents(item.amount),
      "L_PAYMENTREQUEST_0_QTY#{index+1}" => item.quantity
  }
end

response = EXPRESS_GATEWAY.setup_purchase(total_amount,
                                          :items             => items,
                                          :return_url        => new_order_url,
                                          :cancel_return_url => root_url
)
redirect_to EXPRESS_GATEWAY.redirect_url_for(response.token)

实际发生了什么:

我已检查回复是否有任何错误,但找不到任何错误:

(byebug) response
#<ActiveMerchant::Billing::PaypalExpressResponse:0x00000112831748 @params={"timestamp"=>"2015-07-17T12:43:53Z", "ack"=>"Success", "correlation_id"=>"7cd013c59c176", "version"=>"72", "build"=>"17403434", "token"=>"EC-94A59640DJ829313S", "Timestamp"=>"2015-07-17T12:43:53Z", "Ack"=>"Success", "CorrelationID"=>"7cd013c59c176", "Version"=>"72", "Build"=>"17403434", "Token"=>"EC-94A59640DJ829313S"}, @message="Success", @success=true, @test=true, @authorization=nil, @fraud_review=false, @error_code=nil, @emv_authorization=nil, @avs_result={"code"=>nil, "message"=>nil, "street_match"=>nil, "postal_match"=>nil}, @cvv_result={"code"=>nil, "message"=>nil}>

注意"message"=&gt;nil,@message="Success",

谁能指出我做错了什么。

【问题讨论】:

    标签: ruby-on-rails paypal express-checkout activemerchant


    【解决方案1】:

    通过代码,我找到了导致另一个问题的问题的解决方案:“购物车项目金额的总和与订单金额不匹配。”

    我做了什么:

    total_amount = cart_items.sum(:amount)
    
    # item must be in [{}, {}] format
    items = []
    cart_items.each do |item|
      items << {
          :name => item.product_name.to_s,
          :amount => to_cents(item.amount),
          :quantity => item.quantity
      }
    end
    
    response = EXPRESS_GATEWAY.setup_purchase(total_amount,
                                          :items             => items,
                                          :return_url        => new_order_url,
                                          :cancel_return_url => root_url
    )
    redirect_to EXPRESS_GATEWAY.redirect_url_for(response.token)
    

    这里,total_amount 位于 dollar 中,amount 位于 cent 中。我已将total_amount 的货币更改为cent,但仍然没有工作。我不知道paypal是如何计算quantityamount总金额的。

    究竟发生了什么:

    当我检查total_amountcalculated_total_amount_from_each_item 的值时,我发现total_amountcalculated amount 没有问题。

    原来的问题还没有解决。任何人都可以建议我正确的方向。

    在搜索问题后,我在 github 中发现了this 问题。为了让贝宝工作,必须在setup_purchase 函数中包含shippingtaxhandling 选项。感谢您的问题和解决方案。我终于解决了问题。

    【讨论】:

      猜你喜欢
      • 2019-04-29
      • 2013-10-14
      • 2018-09-14
      • 1970-01-01
      • 2021-02-22
      • 2013-05-22
      • 2018-01-28
      • 2014-11-19
      • 2011-06-11
      相关资源
      最近更新 更多