ActiveMerchant:将商品详细信息发送到 paypal url

ActiveMerchant: Send item details to paypal url

我正在尝试使用 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"=>nil,@message="Success",

任何人都可以告诉我做错了什么。

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

我做了什么:

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_amountdollar中,amountcent中。我已将 total_amount 的货币更改为 cent,但仍然无效。我不知道 paypal 如何从 quantityamount.

计算出 总金额

实际发生的事情:

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

原问题还是没有解决。谁能给我一些正确的方向建议。

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