Thứ Sáu, 7 tháng 10, 2016

Hướng dẫn cơ bản về thanh toán PayPal trong môi trường Sandbox

 

Hướng dẫn cơ bản về thanh toán PayPal trong môi trường Sandbox

 

Tác giả: Vũ Đăng Đạt

 

Mục đích: Chúng tôi giới thiệu bài viết nhằm hướng dẫn cụ thể cách để thiết lập cũng như sử dụng môi trường Sandbox để thực hiện các giao dịch PayPal. Ngoài ra, chúng tôi giới thiệu cách áp dụng việc thanh toán trên một ứng dụng Android đơn giản để thể hiện cách sử dụng PayPal SDK như thế nào khi kết hợp cụ thể trên ngôn ngữ phát triển ứng dụng.

 

I.     Sandbox là gì?

·         Sandbox là một môi trường thử nghiệm khép kín, được xây dựng để hoạt động tương tự môi trường sử dụng ngoài thực tế. Tại đây, quí vị có thể bắt đầu xây dựng và theo dõi quá trình hoạt động của ứng dụng mà không ảnh hưởng tới bất kì tài khoản PayPal thực tế.

·         Môi trường này sẽ hỗ trợ cho người phát triển phần mềm tiếp cận, làm thử và testing ứng dụng mà không làm ảnh hưởng đến bất kỳ đối tượng nào trong thực tế. Để từ đó, họ đánh giá, so sánh và quyết định lựa chọn dịch vụ mà họ nên tích hợp khi triển khai thực ứng dụng thực sự

 

II.    Xây dựng ứng dụng áp dụng PayPal

·         Đầu tiên, chúng ta phải tạo một tài khoản tại https://developer.paypal.com/

o   Sau khi tạo thành công được tài khoản, chúng ta đăng nhập vào hệ thống PayPal, click chọn Dashboard.

 

o   Chúng ta sẽ nhìn thấy giao diện dashboard như hình bên dưới

 

·         Tạo ứng dụng trên dashboard

o   Để tạo một ứng dụng mới, chúng ta di chuyển tới REST API apps, click chọn Create App

 

 

o   Nhập tên ứng dụng cần tạo. Trong bài demo này, chúng ta sẽ đặt tên ứng dụng là DemoPaypal, click Create App

 

o   Khi ứng dụng được tạo thành công, chúng ta sẽ nhận được Client ID như hình bên dưới. Chúng ta sẽ sử dụng Client ID này để thiết lập trong ứng dụng.

 

·         Xây dựng ứng dụng android

o   Chúng ta tiếp tục xây dựng ứng dụng Android để kết nối với ứng dụng vừa tạo trên Dashboard của PayPal.

o   Yêu cầu

§  Nắm vững khái niệm và cách lập trình hướng đối tượng

§  Nắm vững ngôn ngữ Java

§  Nắm vững khái niệm và cách tạo ra ứng dụng sử dụng Android (tham khảo các bài viết tại địa chỉ http://www.kieutrongkhanh.net/search/label/Android và serial bài viết về sử dụng android nâng cao thông qua quản lý chi tiêu http://www.kieutrongkhanh.net/search/label/Advancedhttp://www.kieutrongkhanh.net/2016/09/tao-ung-dung-mobile-thuc-hien-quan-ly_52.html )

o   Tạo ứng dụng sẽ bán sản phẩm là logo Android với giá là 25 USD với hình đặc tả như bên dưới

 

 

§  Quí vị tự tạo actitvity và layout tương ứng với hình bên trên.

§  Chúng ta chỉ tạo duy nhất layout này, tất cả các layout còn lại và việc xử lý đều được hỗ trợ bởi PayPal SDK. Nhiệm vụ duy nhất của chúng ta là thực hiện chuyển đổi thông tin từ layout/Activity chính của chúng ta đến PayPal SDK và ngược lại

§  Chúng ta bổ sung Paypal SDK vào project như hình bên dưới

 

 

§  Tiếp theo, trong MainActivity, chúng ta sẽ viết code thiết lập cho PayPal như sau

 

§  Paypal cung cấp các thiết lập cơ bản về Environment cụ thể

-          ENVIRONMENT_NO_NETWORK: Luôn hoạt động, quí vị có thể nhập bất kì tài khoản nào dù không tồn tại cũng vẫn có thể thực hiện giao dịch thành công.

-          ENVIRONMENT_SANDBOX: Yêu câu phải có kết nối mạng, phải sử dụng tài khoản Sandbox đã được thiết lập để đăng nhập, giao dịch sẽ được ghi lại.

-          ENVIRONMENT_PRODUCTION: Môi trường thực tế.

 

§  Tại phần clientId, chúng ta sẽ nhập ClientID mà chúng ta đã có được khi tạo ứng dụng trên dashboard.

 

o   Paypal Android SDK sẽ chạy như một Service. Do vậy, chúng ta sẽ start Service này trước khi sử dụng. Điều này sẽ được thể hiện trong code như hình bên dưới:

 

 

o   Chúng ta cũng sẽ thiết lập việc dừng Paypal Service khi ứng dụng đóng

 

 

 

o   Xử lý chức năng thanh toán khi mua sản phẩm.

§  Trong ví dụ này, chúng ta sẽ tạo một đối tượng ProductObj chứa các thông tin cơ bản như tên sản phẩm, giá tiền, loại tiền

 

§  Chúng ta xây dựng method để xử lý chức năng thanh toán áp dụng kiểu dữ liệu PayPalPayment

§  Constructor của PayPalPayment yêu cầu các tham số như sau

·         Số tiền của sản phẩm với kiểu dữ liệu là BigDecimal.

·         Loại tiền của sản phẩm, tại ví dụ này là “USD”, kiểu String.

·         Chi tiết của sản phẩm kiểu String, tại ví dụ sẽ là tên của sản phẩm.

·         Cách thức thanh toán. Với kiểu PAYMENT_INTENT_SALE sẽ thực hiện việc thanh toán và hoàn thành ngay lập tức.

§  Sau khi có được các thành phần cần thiết cho payment, chúng ta sẽ gửi đối tượng này gửi qua Activity của Paypal

 

 

§  Để đón nhận và xử lý kết quả sau khi đã thanh toán hoàn tất, chúng ta viết code xử lý trong hàm onActivityResult như sau:

§  Trong bài demo này, chúng ta tạm sử dụng Toast để thông báo việc thanh toán thành công để quí vị nhanh chóng tiếp cận cách sử dụng. Tuy nhiên, khi xây dựng ứng dụng thực tế, quí vị sẽ phải viết code để gửi xác nhận giao dịch thành công về server mà quí vị đang xây dựng backend hỗ trợ cho ứng dụng.

 

o   Build project và chạy thử ứng dụng

§  Màn hình chính xuất hiện

 

§  Click vào nút Buy. Ứng dụng tự động sẽ chuyển qua Activity của Paypal SDK. Chúng ta sẽ nhận được kết quả như hình bên dưới

 

§  Click chọn “Pay with PayPal”, màn hình yêu cầu nhập thông tin tài khoản sẽ xuất hiện

 

§  Đăng nhập với một tài khoản bất kì, click nút Login, màn hình confirm sẽ xuất hiện

§  Click nút Pay để thực hiện confirm, màn hình activity của PayPal SDK sẽ chuyển về màn hình chính của ứng dụng cùng với message thông báo “Payment successful”

 

§  Chúng ta vừa hoàn tất quá trình thanh toán. Tuy nhiên, việc thanh toán này chưa thể hiện tính xác thực tài khoản từ PayPal với thiết lập mặc định là sao cũng đúng cả

§  Chúng ta cập nhật phần thiết lập Paypal hỗ trợ verify tài khoản PayPal có đăng ký trong SandBox như sau:

 

§  Build lại project, chạy lại từ bước đầu tiên đến bước yêu cầu nhập email và password. Tại bước này, khi chúng ta nhập email và password không chính xác thì PayPal SDK sẽ thông báo cho chúng ta message như hình bên dưới

 

§  Thực hiện tạo một tài khoản trong sandbox của PayPal bằng cách trở lại Dashboard. Trong mục Sandbox, click chọn Accounts. Thông thường quí vị sẽ được cung cấp sẵn hai tài khoản mặc định. Quí vị có thể tạo tài khoản mới bằng cách click vào nút Create Account.

·         Hai tài khoản có sẵn này bao gồm tài khoản Buyer (sử dụng để thanh toán như người mua) và Facilitator (tài khoản sẽ nhận tiền khi Buyer mua sản phẩm)

 

 

·         Để lấy mật khẩu của các tài khoản, chúng ta click chuột vào tài khoản và chọn Profile để thiết lập lại Password cũng như các thông số khác:

 

 

 

§  Chúng quay lại màn hình ứng dụng chờ nhập email và password, thực hiện nhập tài khoản mà chúng ta có trong Sandbox, click Login và thực hiện các bước tiếp theo, chúng ta sẽ có thông báo thanh toán thành công như đã demo trong các bước trước đó

o   Bên cạnh đó, khi chúng ta sử dụng tài khoản trong Sandbox để thanh toán, các lượt thanh toán sẽ được lưu lại trong Notifications của mục Sandbox:

 

 

o   Chúng ta có thể xem chi tiết mỗi lượt thanh toán

 

Chúc mừng quí vị đã hoàn tất ứng dụng cơ bản trên Android kết hợp với PayPal trong môi trường Sandbox. Hi vọng bài viết này sẽ hỗ trợ quí vị khi triển khai ứng dụng có thanh toán online và hỗ trợ quí ví cái nhìn tổng quan khi sử dụng dịch vụ Paypal để từ đó quí vị có thể so sánh với các dịch vụ khác.

 

Rất mong đóng góp của quí vị về nội dung của chủ đề này. Hẹn gặp lại quí vị ở một chủ đề khác.

2 nhận xét:

  1. Hi Khánh, bạn đây là phương thức thanh toán theo kiểu mua hàng lần nào thì đăng nhập trả lần đó, bạn có gợi ý gì cho phương thực đăng nhập 1 lần trước đó và trả cho nhiều lần sau không? Cảm ơn bạn!

    Trả lờiXóa
    Trả lời
    1. Việc này hoàn toàn phù hợp với bảo mật vì chẳng tổ chức nào hay ngân hàng ebanking nào khuyến cáo người dùng lưu thông tin để dùng lần sau cả. Mỗi lần là phải nhập pass và sử dụng OTP với giao dịch quan trọng.
      Tuy nhiên, trong android, khi sử dụng cơ chế này, vẫn có khả năng lưu lại giá trị trong khoảng thời gian nhất định (như kiểu session) cho nhiều lần thanh toán khi app vẫn đang chạy liên tục
      Regards,

      Xóa