Paypal Express Checkout Ruby API中的多个项目

时间:2013-08-05 18:32:47

标签: ruby-on-rails paypal

我最近遇到了红宝石的paypal api问题(https://github.com/paypal/merchant-sdk-ruby)。

我尝试使用PaymentDetailsItem设置包含多个项目的结帐,但是当我发送请求时,我收到错误消息:"购物车项目金额的总数与订单不匹配量"

我已经检查过了,正如您在下面的代码中看到的那样。我的OrderTotal等于ItemTotal,ShippingTotal,HandlingTotal和TaxTotal的总和。

我尝试了很多东西,paypal api有一个非常糟糕的文档,我无法在网上找到任何关于此的例子。 非常感谢您的帮助。

@api = PayPal::SDK::Merchant::API.new
@set_express_checkout = @api.build_set_express_checkout({
:SetExpressCheckoutRequestDetails => {
:ReturnURL => "#{ENV['HOST']}/return",
:CancelURL => "#{ENV['HOST']}/cancel",

:PaymentDetails => [{

  :OrderTotal => {
    :currencyID => currency,
    :value => "10.00" 
  },

  :ItemTotal => {
    :currencyID => currency,
    :value => "10.00" 
  },

  :ShippingTotal => {
    :currencyID => currency,
    # :value => ship 
    :value => "0.00"
  },

  :TaxTotal => {
    :currencyID => currency,
    :value => "0.00" 
  },

  :NotifyURL => "#{ENV['HOST']}/ipn_notify",

  :PaymentDetailsItem => 
  [
    {
      :Name => "Some Product", 
      :Quantity => 1,
      :Amount => {
        :currencyID => "EUR",
        :value => "5.00"
      },
      :ItemCategory => "Physical"
    }
  ],
  :PaymentDetailsItem => 
  [
    {
      :Name => "Other Product",
      :Quantity => 1,
      :Amount => {
        :currencyID => "EUR",
        :value => "5.00" 
      },
      :ItemCategory => "Physical" 
    }
  ], 
  :PaymentAction => "Authorization" }] } })
@set_express_checkout_response = @api.set_express_checkout(@set_express_checkout)

1 个答案:

答案 0 :(得分:-1)

删除其中一个:PaymentDetailsItem键并添加项目,如下所示。

:PaymentDetailsItem =>
  [
    {
      :Name => "Some Product",
      :Quantity => 1,
      :Amount => {
        :currencyID => "EUR",
        :value => "5.00"
      },
      :ItemCategory => "Physical"
    },
    {
      :Name => "Other Product",
      :Quantity => 1,
      :Amount => {
        :currencyID => "EUR",
        :value => "5.00"
      },
      :ItemCategory => "Physical"
    }
  ]