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

Posted

技术标签:

【中文标题】ActiveMerchant:将商品详细信息发送到 paypal url【英文标题】:ActiveMerchant: Send item details to 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",

谁能指出我做错了什么。

【问题讨论】:

【参考方案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 选项。感谢您的问题和解决方案。我终于解决了问题。

【讨论】:

以上是关于ActiveMerchant:将商品详细信息发送到 paypal url的主要内容,如果未能解决你的问题,请参考以下文章

获取购物车商品名称、数量所有详细信息 woocommerce

使用 ActiveMerchant (payments pro) 将商品数据传递给 PayPal

如何通过 activemerchant 将实时交易发送到测试服务器 authorize.net

如何将商品信息发送到paypal?

如何在颤动中将商品计数从购物车屏幕更新到餐厅详细信息屏幕并返回到餐厅详细信息屏幕?

如何在后台将检测到的 Beacon 信息的详细信息发送到服务器?