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"=>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是如何计算quantity
和amount
的总金额的。
究竟发生了什么:
当我检查total_amount
和calculated_total_amount_from_each_item
的值时,我发现total_amount
和calculated amount
没有问题。
原来的问题还没有解决。任何人都可以建议我正确的方向。
在搜索问题后,我在 github 中发现了this 问题。为了让贝宝工作,必须在setup_purchase
函数中包含shipping
、tax
和handling
选项。感谢您的问题和解决方案。我终于解决了问题。
【讨论】:
以上是关于ActiveMerchant:将商品详细信息发送到 paypal url的主要内容,如果未能解决你的问题,请参考以下文章
获取购物车商品名称、数量所有详细信息 woocommerce
使用 ActiveMerchant (payments pro) 将商品数据传递给 PayPal
如何通过 activemerchant 将实时交易发送到测试服务器 authorize.net