2012-07-03 2 views
2

Этот вопрос о: ActiveMerchant + PaypalExpressCheckout + Рельсы 3,2Paypal Экспресс заказ в Rails3

Я пытался построить PayPal Express Checkout на моем Rails 3.2 приложения. Большинство учебных пособий устарели, поэтому я последовал за ними, а затем прочитал руководство по интеграции Paypal Express Checkout. Я уже установил свой Sandobx и мою информацию в PayPal.

При попытке обработать платеж, нажав на моем «Купить» ссылку с моей точки зрения:

<%= link_to image_tag('http://img36.imageshack.us/img36/249/buttonpaypal.png'), 
action: 'checkout', controller: 'orders'%> 

Я получаю следующее сообщение об ошибке:

This transaction is invalid. Please return to the recipient's website to complete 
you transaction using their regular checkout flow. 

Return to merchant 
At this time, we are unable to process your request. Please return to and try 
another option. 

--- Мой контроллер :

class OrdersController < ApplicationController 
    include ActiveMerchant::Billing 
    def checkout 
    setup_response = ::GATEWAY.setup_purchase(2000, 
     :ip    => request.remote_ip, 
     :return_url  => url_for('confirm'), 
     :cancel_return_url => url_for(root_path) 
    ) 
    redirect_to ::GATEWAY.redirect_url_for(setup_response.token) 
end 
end 

--- Мой Initializer ActiveMerchant.rb:

ActiveMerchant::Billing::Base.mode = :test 
    ::GATEWAY = ActiveMerchant::Billing::PaypalExpressGateway.new(
    :login => "I_PUT_MY_EMAIL_HERE", 
    :password => "I_PUT_MY_PASS_HERE", 
    :signature => "I_PUT_MY_SIGNATURE_HERE", 
    :allow_guest_checkout => true 
) 

--- Мои маршруты: routes.rb:

resources :orders do 
    # Im not sure why 'get :checkout' by itself doesn't work. 
    get :checkout, :on => :new 
    get :confirm 
    get :complete 
end 

прибудете "страницы/индекс"

Это суть: https://gist.github.com/11be6cef6a97632343b9

Может кто-нибудь мне точку к ' недавний "учебник или помочь мне выяснить, что я делаю неправильно здесь?

ответ

6

Самый простой способ это сделать следующим образом:

1.) Вы должны создать тестовый аккаунт в PayPal.

2.) Создать корзину Модель:

$ rails g model Cart purchased_at:datetime 

3.) В вашей корзине Модель Тип:

class Cart < ActiveRecord::Base 

    def paypal_url(return_url) 

    values = { 
     # get it form your http://sandbox.paypal.com account 
     :business => 'ENTER_THE_SELLER_PAYPAL_EMAIL_ADDRESS', 
     :cmd => '_cart', 
     :upload => 1, 
     :return => return_url, 
     :invoice => id 
    } 
    # These values set up the details for the item on paypal. 
     values.merge!({ 
     # The amount is in cents 
     "amount_1" => ENTER_AN_AMOUNT_HERE, 
     "item_name_1" => ENTER_THE_ITEM_NAME_HERE, 
     "item_number_1" => 1, 
     "quantity_1" => 1 
     }) 

    "https://www.sandbox.paypal.com/cgi-bin/webscr?" + values.to_query 

    end 
end 

4.) В файле appllication_controller.rb добавить

def current_cart 
    session[:cart_id] ||= Cart.create!.id 
    @current_cart ||= Cart.find(session[:cart_id]) 
    end 

5.) На вид, где вы хотите кнопку выписки, добавьте это:

# 'products_url' is just the url where you would like to redirect 
# the user after the transaction 
<%= link_to 'Buy with PAYPAL', @cart.paypal_url(products_url) %> 

6.) На контроллере шоу действия точки зрения, где вы хотите добавить фотографии этого:

def show 
    ... 
    @cart = current_cart 
end 

Вот это! Это PaypalExpressCheckout без «реальной» корзины, так как я создал эту корзину без использования позиции. Но вы могли бы добавить к нему Позицию по Railscast # 141 Основы Paypal http://railscasts.com/episodes/141-paypal-basics

+0

Только что попробовал этот код, он работает. Хотя «# Сумма в центах» фактически находится в долларах, а не в центах. – zengr

+0

@Richardsondx: Мне просто нужен модельный метод для использования, и он отлично работает. Как я могу получить ответ от PayPal? – SSR

+0

@SSR: Вы можете уточнить свой вопрос? Какой модельный метод? Какой звонок вы отправляете? Сделайте последнюю версию своего кода и поделитесь ссылкой здесь. – Richardsondx

 Смежные вопросы

  • Нет связанных вопросов^_^