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_amount
在dollar
中,amount
在cent
中。我已将 total_amount
的货币更改为 cent
,但仍然无效。我不知道 paypal 如何从 quantity
和 amount
.
计算出 总金额
实际发生的事情:
当我检查 total_amount
和 calculated_total_amount_from_each_item
的值时,我发现 total_amount
和 calculated amount
没有问题。
原问题还是没有解决。谁能给我一些正确的方向建议。
谷歌搜索问题后,我在 github 中发现了 this 问题。为了使 paypal 工作,必须在 setup_purchase
函数中包含 shipping
、tax
和 handling
选项。感谢您的问题和解决方案。我终于解决了问题。
我正在尝试使用 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_amount
在dollar
中,amount
在cent
中。我已将 total_amount
的货币更改为 cent
,但仍然无效。我不知道 paypal 如何从 quantity
和 amount
.
实际发生的事情:
当我检查 total_amount
和 calculated_total_amount_from_each_item
的值时,我发现 total_amount
和 calculated amount
没有问题。
原问题还是没有解决。谁能给我一些正确的方向建议。
谷歌搜索问题后,我在 github 中发现了 this 问题。为了使 paypal 工作,必须在 setup_purchase
函数中包含 shipping
、tax
和 handling
选项。感谢您的问题和解决方案。我终于解决了问题。