代わりに「 ActiveMerchant 」ジェムを使用してみてください。これは Shofify によって更新されており、まさにあなたが探しているものを実行できるようになっています。
問題
PayPal にアイテムを一覧表示させる方法は、ExpressCheckout バージョンを使用して(ピアツーピア支払いを設定しているだけだと思います)、ハッシュ配列でアイテムを渡します。カートを使用しますが、他にも何かあるかもしれません。
Paypal epxres の秘訣は、すべての合計を適切に合計する必要があることです。私が投稿したコードでわかるように、今のところ静的な送料値を使用しています (この現在のプロジェクトはまだ開発中です) が、不要な場合は送料を省略できます。
解決
私が持っている唯一のコードなので、私は ActiveMerchant を保証することしかできませんが、ここで行うことは次のとおりです。
ルート
#config/routes.rb
get 'checkout/paypal' => 'orders#paypal_express', :as => 'checkout'
get 'checkout/paypal/go' => 'orders#create_payment', :as => 'go_paypal'
注文管理者
#controllers/orders_controller.rb
class OrdersController < ApplicationController
#Paypal Express
def paypal_express
response = EXPRESS_GATEWAY.setup_purchase(total,
:items => cart_session.build_order, #this is where you create the hash of items
:subtotal => subtotal,
:shipping => 50,
:handling => 0,
:tax => 0,
:return_url => url_for(:action => 'create_payment'),
:cancel_return_url => url_for(:controller => 'cart', :action => 'index')
)
redirect_to EXPRESS_GATEWAY.redirect_url_for(response.token)
end
#some other stuff is here....
end
ビルドアイテム
#models/cart_session.rb (we use this with a cart)
#Build Hash For ActiveMerchant
def build_order
#Take cart objects & add them to items hash
products = cart_contents
@order = []
products.each do |product|
@order << {name: product[0].name, quantity: product[1]["qty"], amount: (product[0].price * 100).to_i }
end
return @order
end
end