0

Thanh Toán Định Kỳ Với Paypal

1, Giới thiệu về thanh toán định kỳ trong Paypal

Paypal là một công cụ thanh toán trực tuyến phổ biến trên thế giới được rất nhiều người sử dụng. Trong phần này chúng ta sẽ học cách sử dụng thanh toán định kỳ trên paypal với ứng dụng Ruby on rail.

Trước hết chúng ta phải hiểu thanh toán định kỳ trong paypal là gì, như thế nào.

Thanh toán định kỳ hay là tự động trên PayPal là một quy trình định sẵn được tự động tích hợp vào tài khoản PayPal của chúng ta khi chúng ta mua phần mềm hoặc sử dụng dịch vụ được thanh toán hang tháng hoặc thanh toán theo năm trên internet, bằng cách PayPal sẽ tự động trích số dư trong tài khoản PayPal của chúng ta đề thanh toán cho các nhà sản xuất hay cung cấp dịch vụ.

2, Sử dụng chức năng thanh toán định kỳ Paypal trong ruby on rails

Để sử dụng chức năng này, chúng ta cần làm lại 2 bước trong phần https://viblo.asia/DinhHuan/posts/XogBG25pMxnL

  • Bước 1: Vào trang Paypal developer site Dashboard > Sandbox: Accounts > Create Account tạo một tài khoản business.
  • Bước 3: Cấu hình Active Merchant để có thể sử dụng Credit Card.

Sau khi làm các bước trên xong, chúng ta bắt đầu thiết lập thanh toán định ky với Paypal.

Bước 1: Sửa đổi model course.rb

Thêm vào các thành phần thông tin cho việc thanh toán

  • recurring: lưu giá trị boolean được dùng để xác định giao dịch là thanh toán định kỳ hay không.
  • period: thời gian thanh toán định kỳ: [“Day”, “Week”, “SemiMonth”, “Month”, “Year”]
  • cycles: chu kỳ thanh toán định kỳ. Chạy lênh migrate để thêm các trường mới.
rails g migration AddRecurringColumnsToCourses recurring:boolean period:string cycles:integer
rake db:migrate

Nêu cần thiết chúng ta có thể tạo 1 Course mới cho thanh toán định kỳ.

Course.create name: "TEST Recurring Payments", price: 500, recurring:true, period: "Month",cycles: 12

sau đó chạy lênh rake db:seed để tạo dữ liệu mẫu.

Và chúng ta cũng cần sửa lại một chút view để hiển thị Course mới. Trong file app/views/courses/_index.html.haml thêm một điều kiên cho button khi một Course được thanh toán định kỳ

%button.btn{style: "color: white;background: rgb(242, 118, 73);"} Register ($#{course.price} #{("per " + course.period) if course.recurring})

trên list categoy sẽ hiển thị

paypal5.png

Bước 2: Sửa đổi phương thức thanh toán của Paypal

Trong model app/models/registration.rb sửa phương thức paypal_url thêm trường hợp khi thanh toán là thanh toán định kỳ

 def paypayl_url(return_path)
    ......
           values = if course.recurring
                values.merge(
                    cmd: "_xclick-subscriptions",
                    a3: course.price,
                    p3: 1,
                    srt: course.cycles,
                    t3: course.period.first
                )
              else
                values.merge(
                    cmd: "_xclick",
                    amount: course.price,
                    item_number: course.id,
                    quantity: '1'
                )
              end
  end

trong đó:

  • cmd: đươc dùng để quy đinh loại thanh toán được gửi lên paypal thông qua giá trị của cmd, ở đây _xclick-subscriptions được dùng quy đinh cho loại thanh toán định kỳ, _xclick được dùng cho thanh toán hiện tại.
  • a3: giá được thanh toán định kỳ
  • p3: thời hạn đăng ký
  • str: quy đinh số lần thanh toán, là số nguyên giá trị nhỏ nhất là 2, lớn nhất là 52.
  • t3: đơn vị thời gian để thanh toán, ở đây là Day, Week, Month, Year.

nếu như chúng ta cấn thêm một số parameters, chúng ta có thể vào trang HTML Variables for PayPal Payments Standard đế tìm thêm các thông tin cần thiết.

Kiểm tra Paypal method.

Như vậy chúng ta đã có một số thay đổi trên hàm paypal_url, và chúng ta cần test lại những thay đổi đã làm ở trên.

Để ứng dụng chạy trên local của chúng ta có thê giao tiếp với Paypal, chúng ta phải sử dụng dịch vụ ngrok, để chạy ngrok, chúng ta phải cài đặt ngrok và chay lệnh ngrok http 3000, 3000 là cổng chúng ta đang chay ứng dụng và ở đây địa chỉ ngrok của là http://35ca209d.ngrok.io

Trên màn hình index của course chọn course được thanh toán định kỳ và nhâp các thông tin vào form. paypal1.png

click vào nút submit, ứng dụng sẽ tự đông chuyển đến màn hình đăng nhập của paypal. paypal2.png

Nhập thông tin tài khoản buyer mà bạn đã tạo để đăng nhập vào paypal, khi chúng ta đồng ý với các điều khoản thì hệ thống sẽ chuyển sang màn hình thông báo thành công với thông tin chi tiết về thanh toán đã được tạo. paypal3.png Click nút Return To SandboxTest Account’s Test Store để quay lại ứng dụng trên local, chúng ta sẽ nhìn thấy trạng thái của giao dịch được trả từ paypay đên ứng dụng của chúng ta thông qua ngrok. paypal4.png

Như vậy chúng ta đã xây dựng xong ứng dụng đơn giản có thế giao tiêp thanh toán đinh kỳ với paypal trên ruby on rails.

Tài liêu tham khảo:

HTML Variables for PayPal Payments Standard

HTML Form Basics for PayPal Payments Standard

paypal-recurring-billing

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


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí