ruby-on-rails - ActiveMerchant PaypalExpress 缺少项目描述

标签 ruby-on-rails paypal ruby-on-rails-3.2 activemerchant

我正在与 ActiveMerchant 合作,结帐流程将完成,最终用户将被收取正确的金额,但在通过 paypal 发送给最终用户的收据上以及在 paypal 后端,商品标题和描述缺失.但它们确实出现在用户登录其 Paypal 账户的订单预览屏幕上

这是我用来设置 Paypal 交易的代码:

setup_response = PAYPAL_GATEWAY.setup_purchase(@product.price.cents,
   :ip => request.remote_ip,
   :return_url => url_for(:action => 'paypal_confirm', :only_path => false),
   :cancel_return_url => root_url,
   :items => [{
      :name => @product.title,
      :quantity => 1,
      :amount => @product.price.cents
}]

在用户登录并完成付款流程并且 paypal 返回到我域上的 URL 后,我收到以下响应:

details_response = PAYPAL_GATEWAY.details_for(params[:token])

response: #<ActiveMerchant::Billing::PaypalExpressResponse:0x007fe06e73a6d0 @params={"timestamp"=>"2014-02-07T00:53:40Z", "ack"=>"Success", "correlation_id"=>"1e941b048cb0c", "version"=>"72", "build"=>"9605603", "token"=>"<TOKEN>", "payer"=>"info2@info.com", "payer_id"=>"<PAYER ID>", "payer_status"=>"verified", "salutation"=>nil, "first_name"=>"Info", "middle_name"=>nil, "last_name"=>"", "suffix"=>nil, "payer_country"=>"US", "payer_business"=>nil, "name"=>"ITEMDESCRIPTION", "street1"=>"1 Main St", "street2"=>nil, "city_name"=>"San Jose", "state_or_province"=>"CA", "country"=>"US", "country_name"=>"United States", "postal_code"=>"95131", "address_owner"=>"PayPal", "address_status"=>"Confirmed", "order_total"=>"14.99", "order_total_currency_id"=>"USD", "item_total"=>"14.99", "item_total_currency_id"=>"USD", "shipping_total"=>"0.00", "shipping_total_currency_id"=>"USD", "handling_total"=>"0.00", "handling_total_currency_id"=>"USD", "tax_total"=>"0.00", "tax_total_currency_id"=>"USD", "phone"=>nil, "address_id"=>nil, "external_address_id"=>nil, "quantity"=>"1", "tax"=>"0.00", "tax_currency_id"=>"USD", "amount"=>"14.99", "amount_currency_id"=>"USD", "ebay_item_payment_details_item"=>nil, "insurance_total"=>"0.00", "insurance_total_currency_id"=>"USD", "shipping_discount"=>"0.00", "shipping_discount_currency_id"=>"USD", "insurance_option_offered"=>"false", "seller_details"=>nil, "payment_request_id"=>nil, "order_url"=>nil, "soft_descriptor"=>nil, "checkout_status"=>"PaymentActionNotInitiated", "payment_request_info"=>nil, "Token"=>"EC-2TA24464XG397043V", "PayerInfo"=>{"Payer"=>"info2@info.com", "PayerID"=>"<PAYER ID>", "PayerStatus"=>"verified", "PayerName"=>{"Salutation"=>nil, "FirstName"=>"Info", "MiddleName"=>nil, "LastName"=>"Info", "Suffix"=>nil}, "PayerCountry"=>"US", "PayerBusiness"=>nil, "Address"=>{"Name"=>"Info", "Street1"=>"1 Main St", "Street2"=>nil, "CityName"=>"San Jose", "StateOrProvince"=>"CA", "Country"=>"US", "CountryName"=>"United States", "PostalCode"=>"95131", "AddressOwner"=>"PayPal", "AddressStatus"=>"Confirmed"}}, "PaymentDetails"=>{"OrderTotal"=>"14.99", "ItemTotal"=>"14.99", "ShippingTotal"=>"0.00", "HandlingTotal"=>"0.00", "TaxTotal"=>"0.00", "ShipToAddress"=>{"Name"=>"Info", "Street1"=>"1 Main St", "Street2"=>nil, "CityName"=>"San Jose", "StateOrProvince"=>"CA", "Country"=>"US", "CountryName"=>"United States", "Phone"=>nil, "PostalCode"=>"95131", "AddressID"=>nil, "AddressOwner"=>"PayPal", "ExternalAddressID"=>nil, "AddressStatus"=>"Confirmed"}, "PaymentDetailsItem"=>{"Name"=>"ITEMDESCRIPTION", "Quantity"=>"1", "Tax"=>"0.00", "Amount"=>"14.99", "EbayItemPaymentDetailsItem"=>nil}, "InsuranceTotal"=>"0.00", "ShippingDiscount"=>"0.00", "InsuranceOptionOffered"=>"false", "SellerDetails"=>nil, "PaymentRequestID"=>nil, "OrderURL"=>nil, "SoftDescriptor"=>nil}, "CheckoutStatus"=>"PaymentActionNotInitiated", "PaymentRequestInfo"=>nil}, @message="Success", @success=true, @test=true, @authorization=nil, @fraud_review=false, @avs_result={"code"=>nil, "message"=>nil, "street_match"=>nil, "postal_match"=>nil}, @cvv_result={"code"=>nil, "message"=>nil}>

然后,当我通过 API 或 Paypal 管理面板查看交易详情时,我看到付款,然后在查看详情时它不包含该项目。任何想法是什么造成的?

我正在使用今天刚刚更新的最新版本的 ActiveMerchant,以确保这不是问题所在。

最佳答案

你没有得到描述,因为你没有在你的 Controller 中传递它。如下编辑它应该可以解决问题。尽管我在尝试创建数量超过 1 的交易时在我自己的应用程序中遇到交易错误,但我设法遇到了一个不同的错误。但以下内容应该适用于您的应用程序。

setup_response = PAYPAL_GATEWAY.setup_purchase(@product.price.cents,
   :ip => request.remote_ip,
   :return_url => url_for(:action => 'paypal_confirm', :only_path => false),
   :cancel_return_url => root_url,
   :items => [{
      :name => @product.title,
      :quantity => 1,
      :amount => @product.price.cents,
      :description => @product.description
}]

关于ruby-on-rails - ActiveMerchant PaypalExpress 缺少项目描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21617394/

相关文章:

ruby-on-rails - 通过 Active Admin 使用 HABTM 或 Has_many

ruby-on-rails - Rails 中的自定义类

ruby-on-rails - 在两个 Rails 应用程序之间共享视觉 Assets 以及一些 Controller ?

php - paypal 模块中的 Drupal 7 添加额外费用

mongodb - 在本地工作,但在 Heroku 上给出 "uninitialized constant User (NameError)"

ruby-on-rails - Rails 生产出现 422 错误(您想要的更改被拒绝)

javascript - Nock - 如何模拟二进制响应

ios - 使用paypal ios sdk使用paypal登录

heroku - 邪恶的PDF +fonts+heroku+rails3.2

ruby-on-rails - 无方法错误 : Undefined method 'type' for nil:NilClass in Rails