12/08/2018, 09:52

Sử dụng Paypal trong ứng dụng rails

1, Giới thiệu về paypal Paypal là một cổng thanh toán điện tử trực tuyến giúp chúng ta có thê đưa tiền từ tài khoản ngân hàng vào tài khoản PayPal để tiến hành giao dịch trên mạng. Hoặc rút tiền từ tài khoản PayPal về tài khoản nngân hàng. Khi sử dụng PayPal làm trung gian thì quá trình giao ...

1, Giới thiệu về paypal

Paypal là một cổng thanh toán điện tử trực tuyến giúp chúng ta có thê đưa tiền từ tài khoản ngân hàng vào tài khoản PayPal để tiến hành giao dịch trên mạng. Hoặc rút tiền từ tài khoản PayPal về tài khoản nngân hàng. Khi sử dụng PayPal làm trung gian thì quá trình giao dịch sẽ đơn giản hơn và bảo mật hơn.

2, Sử dụng paypal trong ứng dụng rails

Bước 1: Tạo một ứng dụng rails với các bảng dữ liệu chính

 rails new paypal_in_rails
 rails generate scaffold Registration full_name:string company:string telephone:string  email:string
 ...

Bước 2: Tạo một tài khoản paypal cho việc sử dụng paypal trên ứng dụng đang phát triển. Truy cập vào trang Paypal Developer site và tạo các tài khoản người bán và người mua trong Sandbox/Accounts/Dashboard

PayPal Developer | PayPal Developer 2015-06-23 14-51-33.png

Ở đây chúng ta tạo ra các tài khoản cần thiết trong quá trinh phát triên ứng dụng

  • test-facilitator-1@framgia.com: tài khoản cho người bán.
  • test-buyer-1@framgia.com: tài khoản cho người mua hàng.

Bước 3: tạo một redirec tới Paypal

Trong registrations_controller.rb chúng ta sẽ cho redirect tới paypal khi việc đăng ký thành công.

  # POST /registrations
  def create
    @registration = Registration.new(registration_params)
    if @registration.save
      redirect_to @registration.paypal_url(registration_path(@registration))
    else
      render :new
    end
  end

Tiếp theo thêm paypal_url trong registration.rb model

  def paypal_url(return_path)
    values = {
        business: "test-facilitator-1@framgia.com",
        cmd: "_xclick",
        upload: 1,
        return: "#{Rails.application.secrets.app_host}#{return_path}",
        invoice: id,
        amount: course.price,
        item_name: course.name,
        item_number: course.id,
        quantity: '1'
    }
    "#{Rails.application.secrets.paypal_host}/cgi-bin/webscr?" + values.to_query
  end

Chúng ta có thẻ quản lý các parameter từ file config/secrets.yml

development:
  paypal_host: https://www.sandbox.paypal.com
  app_host: http://our_ngrok_url
production:
  paypal_host: https://www.paypal.com
  app_host:

Bước 4: Tạo một web hook để quản lý các thông tin thanh toán Trong config/routes.rb tạo một routes cho web hook

  post "/registrations/:id" => "registrations#show"
  post "/hook" => "regstrations#hook"

Trong registrations_controller.rb tạo một method hook để quản lý thông tin thanh toán sau khi giao dịch.

  protect_from_forgery except: [:hook]
  def hook
    params.permit!
    status = params[:payment_status]
    if status == "Completed"
      @registration = Registration.find params[:invoice]
      @registration.update_attributes notification_params: params, status: status, transaction_id: params[:txn_id], purchased_at: Time.now
    end
    render nothing: true
  end

Để quản lý thêm thông tin giao dich, ta cần thêm một số thuộc tính trong Regstration model

rails g migration add_params_status_transaction_id_purchased_at_to_registrations notification_params:text status:string transaction_id:string purchased_at:datetime

Bước 5: Kiểm tra viêc kết nối giữa ứng dụng của chúng ta với paypal

Để paypal có thể truy cập ứng dụng của chúng ta trên môi trường development, chúng ta cần phải sử dụng Ngrok trên ứng dụng local của chúng ta, để paypal gửi một HTTP POST tới localhost và test chức năng payment. Do vậy chúng ta cần tải và cài đặt Ngrok.

sudo apt-get install ngrok-client

Sau khi cài đặt xong chạy ngrok http 3000, 3000 là cổng mặc đinh chúng ta đang chạy ứng dụng. trong trường hợp này, nó sẽ trả vê url http://33aba368.ngrok.io, thay app_host: http://our_ngrok_url bằng http://33aba368.ngrok.io trong file config/secrets.yml. bây giờ chúng ta có thể tạo một giao dịch để test. PaypalBasics 2015-06-23 16-49-10.png

chọn nút Registration Payment để tạo giao dịch, ưng dụng sẽ redirect đến trang paypal Pay with a PayPal account - PayPal 2015-06-23 16-54-13.png

Đăng nhâp với tài khoản test-buyer-1@framgia.com chúng ta đã tạo ở trên để thực hiện thanh toán, sau đó chúng ta sẽ được chuyển đến trang confirm thông tin giao dịch. Review your information 2015-06-23 16-57-32.png

Chọn nút Pay Now để thực hiện giao dịch, sau đó chúng ta chọn link Return to test store để xem thông tin giao dịch. PaypalBasics 2015-06-23 17-02-44.png

ngoài ra chúng ta có thể dùng tài khoản doanh nghiệp hay người mua đăng nhập vào Sandbox Paypal site dể xem thông tin chi tiết My Account - PayPal 2015-06-23 17-10-20.png

Như vậy chúng ta đã tạo được một ứng dụng rails cơ bản sử dụng Paypal.

github: https://github.com/dinhhuan/paypal_in_rails

0