Sử dụng Paypal trong ứng dụng rails
Bài đăng này đã không được cập nhật trong 3 năm
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
Ở đâ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.
chọn nút Registration Payment để tạo giao dịch, ưng dụng sẽ redirect đến trang paypal
Đă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.
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.
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
Như vậy chúng ta đã tạo được một ứng dụng rails cơ bản sử dụng Paypal.
All rights reserved