Giới thiệu

Bạn là nhà cung cấp các giải pháp bán hàng cho các doanh nghiệp, hãy tích hợp tính năng thanh toán PayON để tăng thêm lợi ích cho khách hàng của bạn.
Tích hợp thanh toán lên Website/APP đơn giản, linh hoạt, nhanh chóng hỗ trợ hình thức thanh toán ngaytrả góp với đầy đủ các phương thức: Thẻ quốc tế, ATM nội địa, QRcode ngân hàng, Ví điện tử ...

Thanh toán online

Thông tin kết nối:

Parameter Description
URL_API Đường dẫn API
MC_AUTH_USER Tên Auth basic
MC_AUTH_PASS Mật khẩu Http Auth basic
MC_SECRET_KEY Khóa để thực hiện mã hóa tham số data trong các hàm nghiệp vụ
MC_ID ID Merchant để định danh khách hàng trên PayOn
APP_ID ID ứng dụng để định danh ứng dụng tích hợp

Các bước lấy thông tin kết nối:

Bước 1: Đăng nhập PayOn bằng tài khoản bạn đã đăng ký tại đây. Nếu chưa có tài khoản, click vào đây để đăng ký

Bước 2: Chọn Tích hợp thanh toán trên Menu màn hình

Bước 3: Nhấn nút Thông tin kết nối

Bước 4: Tại đây copy các thông tin tương ứng với các key:
Url Api: URL_API - Đường dẫn API.
Http Auth User: MC_AUTH_USER - Tên Auth basic.
Http Auth Pass: MC_AUTH_PASS - Mật khẩu Http Auth basic.
Merchant ID: MC_ID - ID Merchant.
Application ID: APP_ID - ID - Ứng dụng để định danh ứng dụng tích hợp.
Secret Key: MC_SECRET_KEY - Khóa để thực hiện mã hóa tham số data trong các hàm nghiệp vụ.
( Thư viện mã hoá data : https://github.com/payon-sdk/aes-everywhere. )

Bước 5: Paste các thông tin vừa Copy vào phần tích hợp thanh toán trên ứng dụng của bạn

Phương thức giao tiếp:

API_URL Môi trường Sandbox: https://dev-api-merchant.payon.vn/v1/merchant (Test).
API_URL Môi trường Product: https://sdk.payon.vn/v1/merchant (Live).

Protocol Description
Method POST
Content-Type application/json
Authorization Basic Auth(Lấy Auth User & Auth Pass trong Thông tin kết nối API của PayOn gán vào link trên để lấy Basic Auth).

Tham số chung & Payload Mẫu:

Parameter Required Type Description
app_id String Tên ứng dụng kết nối của merchant trên hệ thống Payon.
data String Request data được mã hóa bằng AES256 (mode CBC), key mã hóa (MC_SECRET_KEY).
checksum String MD5 (APP_ID + JSON_ENCODE(String data) + MC_SECRET_KEY).

Mẫu Request chung:

Shell

      curl --location --request POST 'https://dev-api-merchant.payon.vn/v1/merchant/checkPayment' \
      --header 'Authorization: Basic Y2hlY2tvdXQ6MTIzNDU2' \
      --header 'Content-Type: application/json' \
      --data-raw '{
          "app_id": "160088PayON",
          "data": "U2FsdGVkX1/owhVkRzc3jYqJ0cFiyDZ+B0VE5khBHe80jre1NsCLN4GEA+HiurZeG+nwXRBd5j+LWw0rrIpAng==",
          "checksum": "59d8f1978f95ce3f67eea82d11e94712"
      }

Mẫu Response chung:

Parameter Type Description
error_code String Tham chiếu mã lỗi.
error_message String Mô tả lỗi.
app_id String Tên ứng dụng kết nối của merchant trên hệ thống Payon.
checksum String MD5 (APP_ID + JSON_ENCODE(String data) + MC_SECRET_KEY).
data Json string Dữ liệu trả về

Thanh toán ngay:

Luồng thanh toán checkout:

Quy trình thực hiện thanh toán checkout với đẩy đủ các phương thức. alt text

- Bước 1 : Khách hàng sẽ đặt một yêu cầu thanh toán tới Merchant
--> Gửi yêu cầu thanh toán đến PayOn
--> Gửi trả thông tin thanh toán lại cho Merchant
--> Chuyển hướng đến khách hàng check lại giao dịch.
- Bước 2: Khách hàng nhập thông tin thanh toán
--> Được gửi tới PayOn
--> Gửi yêu cầu trả tiền tới Bank
--> Trả lại PayOn yêu cầu nhập mã OTP đồng thời gửi mã OTP tới khách hàng.
--> Từ PayOn sẽ chuyển tới khách hàng yêu cầu nhập mã OTP.
- Bước 3: Khách hàng nhập mã OTP vừa được gửi về từ ngân hàng được sử dụng để thanh toán
--> PayOn
--> Bank sẽ kiểm tra xác thực mã OTP.
--> Bank sẽ gửi kết quả thanh toán lại cho PayOn
--> PayOn sẽ chuyển hướng trả về URL và đồng thời Notify về Merchant
--> Merchant gọi API checkpayment để kiểm tra và xác nhận giao dịch

Hàm tạo yêu cầu thanh toán:

POST {API_URL}/createOrderPaynow

Request data:
Parameter Required Type Description
merchant_id Int MC_ID Mã định danh Merchant trên hệ thống Payon
description String Mô tả thông tin đơn hàng
merchant_request_id String Mã đơn hàng Merchant tự tạo và là duy nhất cho mỗi yêu cầu
amount Int Giá trị đơn hàng. Đơn vị: VNĐ
time_expire Int Thời hạn link thanh toán đơn hàng. Đơn vị: Giây
url_redirect String Đường link chuyển tiếp sau khi thực hiện thanh toán thành công
url_notify String Đường link thông báo kết quả đơn hàng
url_cancel String Đường link chuyển tiếp khi khách hàng hủy thanh toán
customer_fullname String Họ và tên khách hàng
customer_email String Địa chỉ email khách hàng
customer_mobile String Số điện thoại khách hàng
Response data:
Parameter Type Description
url_checkout String Đường link thanh toán được tạo
time_expired Int Thời gian hết hạn link thanh toán
merchant_request_id String Mã đơn hàng Merchant tự tạo và là duy nhất cho mỗi yêu cầu
payment_id String Mã thanh toán của Payon
payment_token String Token thanh toán

Thanh toán QrCode:

Quy trình thực hiện thanh toán qua QrCode:

alt text

- Bước 1 : Khách hàng sẽ đặt một yêu cầu thanh toán tới Merchant
--> Yêu cầu lấy danh sách ngân hàng sang PayOn
--> PayOn gửi lại Merchant danh sách ngân hàng
--> Merchant sẽ hiển thị danh sách ngân hàng cho khách hàng.
- Bước 2 : Chọn ngân hàng để thanh toán QR Code gửi tới Merchant
--> Yêu cầu PayOn tạo QRCode
--> Gửi yêu cầu thanh toán QRCode tới Bank
--> Trả mã QRCode về PayOn
--> Trả tiếp QRCode về Merchant
--> Hiển thị mã QRCode cho khách hàng thanh toán.
- Bước 3 : Khách hàng sử dụng APP quét mã QRCode để thanh toán và điền thông tin cần thiết
--> Bank sẽ thông báo kết quả giao dịch vừa rồi về PayOn
--> Merchant gọi API checkpayment để kiểm tra và xác nhận giao dịch

Hàm API lấy danh sách ngân hàng hỗ trợ QrCode:

POST {API_URL}/getQrBankCode

Request data:
Parameter Required Type Description
service_type_code String Loại thanh toán: PAYNOW
service_code String Dịch Vụ thanh toán: PAYNOW_QRLOCALBANK_DYNAMIC
method_code String Phương thức thanh toán: LOCALBANK
HTTP Response:
Parameter Type Description
Banks Json Object Danh sách bank.Chi tiết
Banks:
Parameter Type Description
code String Mã ngân hàng dùng để thanh toán.
full_name String Tên ngân hàng.
logo String Đường link logo ngân hàng.
trade_name String Tên thương mại của ngân hàng.
Example:
{
  "error_code": "00",
  "error_message": "Success",
  "app_id": "appDoctor4U",
  "checksum":"3c57be97f19fcb05cd0ab3142c43f88f",
  "data": [
    {
      "Banks":{
        "ABB":{
          "code": "ABB",
          "full_name": "NH TMCP An Bình",
          "logo":"https://dev-api-merchant.payon.vn/v1/merchant/images/bank/favicon/ABB.png",
          "trade_name": "ABBank",
          "url": ""
        },
        "ACB":{
          "code": "ACB",
          "full_name": "NH TMCP Á Châu",
          "logo":"https://dev-api-merchant.payon.vn/v1/merchant/images/bank/favicon/ACB.png",
          "trade_name": "NH Á Châu",
          "url": ""
        },
      }
    }
  ]
}

Hàm tạo mã QR thanh toán:

POST {API_URL}/createQRCode

Request data:
Parameter Required Type Description
service_type_code String Loại thanh toán: PAYNOW.
service_code String Dịch Vụ thanh toán: PAYNOW_QRLOCALBANK_DYNAMIC
method_code String Phương thức thanh toán: LOCALBANK
merchant_id Int MC_ID Mã định danh Merchant trên hệ thống Payon
merchant_request_id String Mã đơn hàng Merchant tự tạo và là duy nhất cho mỗi yêu cầu
amount Int Giá trị đơn hàng. Đơn vị: VNĐ
time_expire Int Thời hạn link thanh toán đơn hàng. Đơn vị: Giây
bank_code String Mã ngân hàng thanh toán.
description String Mô tả thông tin đơn hàng
currency String Loại tiền tệ. Mặc định là VND.
url_redirect String Đường link chuyển tiếp sau khi thực hiện thanh toán thành công
url_notify String Đường link thông báo kết quả đơn hàng.
url_cancel String Đường link chuyển tiếp khi khách hàng hủy thanh toán.
customer_fullname String Họ và tên khách hàng.
customer_email String Địa chỉ email khách hàng.
customer_mobile String Số điện thoại khách hàng.

Response data:

Parameter Type Description
amount_payment Int Tổng tiền thanh toán.
payment_id String Mã thanh toán của Payon
qrcode_image String Ảnh QR code base64.
qrcode_pay String Nội dung Qr Code.
time_expired Int Thời gian hết hạn.
payment_token String Token thanh toán
Example:
{
  "error_code": "00",
  "error_message": "Xử lý thành công",
  "app_id":"appDoctor4U",
  "checksum":"c1de4492b5585c2185f7cdbe47f1804e",
  "data": {
    "amount_payment": 1030000,
    "authorizationCode": "",
    "bank_code":"ABB",
    "check_order_url":"",
    "checksum":"2ec6b248ac33f8e9d09171f55981ab60",
    "currency":"VND",
    "customer_email":"giaohangtot@gmail.com",
    "customer_fullname":"Trần Văn A",
    "customer_mobile":"0999999999", "cycle":0,
    "description":"Thanh toán cho đơn hàng",
    "id":1316,
    "master_id":9999999329,
    "merchant_id":10000002220,
    "method_code":"LOCALBANK",
    "notify_url":"",
    "order_amount":1000000, "order_code":"5740b0d9-47d4-4150-adb1-9d73b61bf7ee",
    "payment_id": "POUSELPWW7LO6XV",
    "qrcode_image": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAABlB MVEX///8AAABVwtN+AAACXElEQVR42uyZQW7sLBCEy2LBkiNwFC72yzbKxTgKR2DJArl+dePR2JO3N7w3LCJN8kVKC6q6uoPv+Z5/8iwkeViyrAiGZGJeEeS7aSKgAlgBw1hhyALLWAIANxXge4Vlq8FwR7AZCJZtPAAUgHmTS4hlWkDvQoCKFfMB+qKCKbCJjFIm//DkngW6eFNzsQaTV5eqj+W3uscG+rGEYwV5CHD8ttPBgYVZ1Q13WKqRVmz3y3oegM1wsaJBPf4AKlaXbN44EwCYIh/c3j+F6kla/swFeMPdssnPupFmOMK/LGgOwOaG1SbVecPGJM4ayH0gYKlShciANUB0W30kq/8pmAhgNhLVGhYx0q3IiyqA39/ynwCoMEXuyUWmJsJm1hbRXkY6BOD1HZ3xYCmo6qHXy5oCkAtJmnQk5CTLyIuRTgHoOY00GB6Oqgt7zw8PA3IXbrdUy9dnL02M9mpBcwCQ4aRsFSoJTcXw1zInAGBEARo4AS1TxOFv8n8c8NqzWLpPitGzBJle0zwAbJbhhOQu7VdT2lIC8zsxTwCoLjTWR7L5Qzw0Fvm1q7qfB6gvSi9EgkL1O0K9rziGB5i1Z5nunFsBs3x5z91TAKeOKRYELCVA2gHw31yANDWdsyzbayYnL0/ueeA1d1NsvvkDQUrBRzwYHeg7kD4Rkn3dtOnS7LYrHh0491FqVM2f+yhc88MIgGdZLfsKwUfdgWi2nxBIknR6wVrhLTbPAmgK6kaqKY0fTe1xQP52qQIIJi/s+8nPNezowPl/HN0eULN93/8ZTgR8z/f8Zef/AAAA///G2IapW0+SRwAAAABJRU5ErkJggg==",
    "qrcode_pay":"0002010102122624000697042601100106393463520483585303704540410005802VN5919VIMOTECHNOLOGYJSC6005HANOI6246011003MP3262110320CTCPCN MPOS VIET NAM0704000563047E6D",
    "service_code": "PAYNOW_QRLOCALBANK_DYNAMIC",
    "service_type_code": "PAYNOW",
    "service_type_id": 2,
    "status": 1,
    "time_expired": 1613982264,
    "token_code": "7da7ba96-ef92-4dfd-9bca-363c7442d1cb",
    "transaction_id": "POP5Z86A2XW7SWZ",
    "user_id": 0,
    "userfee": 1
  }
}

Trả góp:

Hàm lấy danh sách ngân hàng hỗ trợ:

POST {API_URL}/getBankInstallment

Response data:

Parameter Type Description
Banks Json Object Danh sách bank.Chi tiết
Banks:
Parameter Type Description
code String Mã ngân hàng dùng để thanh toán.
full_name String Tên ngân hàng.
logo String Đường link logo ngân hàng.
trade_name String Tên thương mại của ngân hàng.
installment_rule String Các điều kiện khi thực hiện giao dịch trả góp.
cycle Array Các kỳ hỗ trợ trả góp: 3 tháng, 6 tháng, 9 tháng, 12 tháng.
installment_card_type Array Loại thẻ hỗ trợ trả góp: VISA, MASTERCARD, JCB.
Example:
{
  "error_code":"00",
  "error_message":"Success",
  "app_id":"appDoctor4U",
  "checksum":"112714fd905178ab2e383e2d26d428cd",
  "data":{
    "Banks":{ 
      "ACB":{
        "code":"ACB",
        "trade_name":"NH Á Châu",
        "full_name":"NH TMCP Á Châu",
        "logo":"https://dev-api-merchant.payon.vn/v1/merchant/images/bank/favicon/ACB.png",
        "installment_rule":"- Nếu KH giao dịch bằng thẻ phụ, thì chủ thẻ chính cần liên hệ thông báo với NH về GD Trả Góp qua VIMO",
        "cycle":["3","6","9","12"],
        "installment_card_type":["visa", "mastercard", "jcb"],
      },
      "VPB":{
        "code":"VPB",
        "trade_name":"VPBank",
        "full_name":"NH TMCP Việt Nam Thịnh Vượng",
        "logo":"https://dev-api-merchant.payon.vn/v1/merchant/images/bank/favicon/VPB.png",
        "url":"",
        "installment_rule":"- Thẻ Doanh nghiệp sẽ Không được Ngân hàng hỗ trợ Trả góp.\u003cbr\u003e\r\n- Chủ thẻ Không cần liên hệ, PayOn sẽ liên hệ Ngân hàng để chuyển đổi Trả góp.",
        "cycle":["3","6","9","12"],
        "installment_card_type":["visa", "mastercard"],
      }
    }
  }
} 

Hàm thông tin phí:

POST {API_URL}/getFeeInstallmentv2

Request data:

Parameter Required Type Description
merchant_id Int MC_ID Mã định danh Merchant trên hệ thống Payon
amount Int Giá trị đơn hàng. Đơn vị: VNĐ
bank_code String Mã ngân hàng thanh toán.
cycles Array Số kỳ (3-6-9 tháng) trả góp. VD: [3,6,9]
card_type String Loại thẻ thanh toán:VISA, MASTERCARD, JCB.

Response data:

Parameter Type Description
amount_payment Int Số tiền đơn hàng.
fee Int Phí thanh toán.
userfee Int Chọn người chịu phí: 1. Người mua chịu phí thanh toán 2. Người bán chịu phí thanh toán.
receiver_fee Int Phí người bán. Dùng để hiển thị trên giao diện.
sender_fee Int Phí người mua. Dùng để hiển thị trên giao diện.
Example:
{
    "error_code": "00",
    "error_message": "Xử lý thành công",
    "app_id": "appDoctor4U",
    "checksum": "4cbdaab20f6e0c8fd50d6366d118ae48",
    "data": {
        "3": {
            "amount_payment": 10000000,
            "fee": 151000,
            "receiver_fee": 151000,
            "sender_fee": 0,
            "userfee": 2
        },
        "6": {
            "amount_payment": 10000000,
            "fee": 630000,
            "receiver_fee": 630000,
            "sender_fee": 0,
            "userfee": 2
        },
        "9": {
            "amount_payment": 10000000,
            "fee": 730000,
            "receiver_fee": 730000,
            "sender_fee": 0,
            "userfee": 2
        }
    }
}

Hàm tạo yêu cầu thanh toán:

POST {API_URL}/createOrderInstallment

Request data:

Parameter Required Type Description
merchant_id Int MC_ID Mã định danh Merchant trên hệ thống Payon
merchant_request_id String Mã đơn hàng Merchant tự tạo và là duy nhất cho mỗi yêu cầu.
description String Mô tả thông tin đơn hàng.
amount Int Giá trị đơn hàng. Đơn vị: VNĐ.
time_expire Int Thời hạn link thanh toán đơn hàng. Đơn vị: Giây
bank_code String Mã ngân hàng thanh toán.
cycle Int Số kỳ (tháng) trả góp.
card_type String Loại thẻ thanh toán:VISA, MASTERCARD, JCB.
userfee Int Chọn người chịu phí: 1. Người mua chịu phí thanh toán 2. Người bán chịu phí thanh toán.
url_redirect String Đường link chuyển tiếp sau khi thực hiện thanh toán thành công.
url_notify String Đường link thông báo kết quả đơn hàng.
url_cancel String Đường link chuyển tiếp khi khách hàng hủy thanh toán.
customer_fullname String Họ và tên khách hàng.
customer_email String Địa chỉ email khách hàng.
customer_mobile String Số điện thoại khách hàng.

Response data:

Parameter Type Description
url_checkout String Đường link thanh toán được tạo.
time_expired Int Thời gian hết hạn link thanh toán.
merchant_request_id String Mã đơn hàng Merchant tự tạo và là duy nhất cho mỗi yêu cầu
payment_id String Mã thanh toán của Payon.
payment_token String Token thanh toán.
Example:
{
  "url_checkout":"https://dev-api-merchant.payon.vn/v1/merchant/method/0b158186-d1c5-45e0-a97a745e0 1bacf52",
  "time_expired":1623922287,
  "merchant_request_id":"31fd1271-a7b6-4b45-a299-500e5b713d6d",
  "payment_id":"POOJ93HUCFPNWUC",
  "payment_token":"0b158186-d1c5-45e0-a97a-745e01bacf52",
  "status":1
}

Thông báo kết quả đơn hàng:

Post from JSON data:

Parameter Type Description
data Array Data notify
checksum String MD5 (APP_ID + JSON(data) + MC_SECRET_KEY)

Data Array:

Parameter Type Description
merchant_id Int MC_ID Mã định danh Merchant trên hệ thống Payon
merchant_request_id String Mã đơn hàng Merchant tự tạo và là duy nhất cho mỗi yêu cầu
payment_id String Mã thanh toán của Payon
transaction_id String Mã giao dịch
payment_token String Token thanh toán
time_performed Int Thời gian hoàn thành giao dịch
amount Int Giá trị đơn hàng. Đơn vị: VNĐ
fee Int Phí giao dịch merchant phải chịu. Đơn vị: VNĐ
status Int Trạng thái đơn hàng. Chi tiết
transaction_detail Array Chi tiết giao dịch Chi tiết

Trạng thái đơn hàng:

Giá trị Mô tả
1 Mới tạo
2 Thành công
3 Thất bại
4 Đang xử lý
5 Được hoàn tiền
6 Bị từ chối

Chi tiết giao dịch:

Parameter Type Description
merchant_id Int MC_ID Mã định danh Merchant trên hệ thống Payon
merchant_request_id String Mã đơn hàng Merchant tự tạo và là duy nhất cho mỗi yêu cầu
payment_id String Mã thanh toán của Payon
transaction_id String Mã giao dịch
payment_token String Token thanh toán
time_performed Int Thời gian hoàn thành giao dịch
amount Int Giá trị đơn hàng. Đơn vị: VNĐ
fee Int Phí giao dịch merchant phải chịu. Đơn vị: VNĐ
status Int Trạng thái đơn hàng. Chi tiết
order_amount Int Giá trị thực nhận
user_fee Int Người chịu phí
description Int Kết quả đơn hàng
authorization_code String Mã xác thực
checksum String Chuỗi kiểm tra tính toàn vẹn dữ liệu

Hàm kiểm tra giao dịch:

POST {API_URL}/checkPayment

Request data:

Parameter Required Type Description
merchant_request_id String Mã đơn hàng Merchant tự tạo và là duy nhất cho mỗi yêu cầu.

Response data:

Parameter Type Description
merchant_id Int MC_ID Mã định danh Merchant trên hệ thống Payon
merchant_request_id String Mã đơn hàng Merchant tự tạo và là duy nhất cho mỗi yêu cầu
service_code String Dịch Vụ thanh toán: PAYNOW_QRLOCALBANK_DYNAMIC
method_code String Phương thức thanh toán: LOCALBANK
type_card_payment String Loại thẻ thanh toán: ATM, VISA, MASTERCARD
bank_code String Mã ngân hàng thanh toán
card_number String Thông tin thẻ thanh toán 424242XXXXXX4242
card_fullname String Tên chủ thẻ
payment_id String Mã thanh toán của Payon
payment_token String Token thanh toán
time_performed Int Thời gian hoàn thành giao dịch
amount Int Giá trị đơn hàng. Đơn vị: VNĐ
fee Int Phí giao dịch merchant phải chịu. Đơn vị: VNĐ
status Int Trạng thái giao dịch. Chi tiết

Trạng thái giao dịch:

Giá trị Mô tả
1 Mới tạo
2 Thành công
3 Thất bại
4 Đang chờ duyệt
6 Bị từ chối

Bảng mã lỗi:

Error Code Mô tả mã lỗi
00 Thành công
01 Thất bại
02 IP đối tác bị khóa hoặc chưa được khai báo
03 Phương thức HTTP không đúng
04 Checksum không hợp lệ
05 Tham số không hợp lệ
06 Không tìm thấy yêu cầu dịch vụ
07 Tham số chưa chính xác
08 Không tìm thấy yêu cầu
09 Mã Merchant không đúng
98 Timeout
99 Lỗi không xác định
1001-02 Mã yêu cầu thanh toán đã tồn tại

Thông tin test:

Thông tin thẻ nội địa:

Ngân hàng Số thẻ Tên chủ thẻ Ngày phát hành OTP Loại thanh thanh toán
Tất cả 9704000000000018 NGUYEN VAN A 03-07 otp REDIRECT

Thông tin thẻ quốc tế:

Số thẻ Tên chủ thẻ Ngày hết hạn OTP/CCV
Thẻ VISA 4242 4242 4242 4242 NGUYEN VAN A 08/24 1234
Thẻ VISA 4456 5300 0000 1005 NGUYEN VAN A 08/24 1234
Thẻ VISA 4456 5300 0000 1096 NGUYEN VAN A 08/24 1234
Thẻ Mastercard 5444 0000 0000 5507 NGUYEN VAN A 08/24 1234
Thẻ Mastercard 5200 0000 0000 1005 NGUYEN VAN A 08/24 1234
Thẻ Visa (Review) 4456 5300 0000 1021 NGUYEN VAN A 08/24 1234
Thẻ Mastercard 5200 0000 0000 1021 NGUYEN VAN A 08/24 1234

SDK PayOn:

- SDK sử dụng cho PHP : https://github.com/nextpaygroup/payon-php-sdk.
- SDK sử dụng cho Java : https://github.com/nextpaygroup/payon-java-sdk.

Plugin WordPress:

Plugin trong WordPress là một hay nhiều đoạn code được bổ sung vào mã nguồn của website. Plugin được xem là phần mở rộng của trang website giúp người dùng bổ sung thêm nhiều tính năng khác cho trang WordPress của mình. Plugin PayOn PaymentGateway hỗ trợ tích hợp cổng thanh toán PayOn vào website Wordpress dễ dàng và nhanh chóng, khách hàng có thể thanh toán bằng hình thức trả ngay hoặc trả góp 0% tiện lợi.

Link cài đặt plugin:https://wordpress.org/plugins/payon-paymentgateway/.
Hướng dẫn tạo và xác thực tài khoản PayOn tại đây.
Hướng dẫn liên kết thanh toán PayOn trên Woocommerce tại đây.

Thanh toán Quẹt thẻ

Mục đích tài liệu

Tài liệu mô tả và hướng dẫn thực hiện tích hợp kết nối kỹ thuật giữa hệ thống thanh toán của Đơn vị chấp nhận thẻ (ĐVCNT) với giải pháp thanh toán trên di động MPOS.

Yêu cầu thanh toán sẽ được gửi từ server của đối tác tới ứng dụng mobile MPOS một cách tự động. Sau khi tiến hành thanh toán trên ứng dụng MPOS, trạng thái của hóa đơn sẽ được cập nhật tự động về máy POS của Đơn vị chấp nhận thẻ.

Điều kiện kết nối

Phương thức giao tiếp

Mọi giao tiếp từ MPOS SERVER đến hệ thống của Đơn vị chấp nhận thẻ đều qua kết nối Internet, sử dụng HTTPS protocol và REST API.

API_URL Môi trường Sandbox: http://devapi.mpos.vn/supermarket/ (Test).
API_URL Môi trường Product: https://api.mpos.vn/supermarket/ (Live).

Tất cả yêu cầu truy vấn API từ MPOS đến hệ thống của Đơn vị chấp nhận thẻ (ĐVCNT) đều được mã hoá:

Mã hoá:
- Tạo chuỗi JSON với các thông tin cần thiết cho mỗi Request.
- Mã hoá chuỗi JSON với Key đã được cấp.
- Encode chuỗi mã hoá thành Base64 để thực hiện gửi và nhận giữa 2 hệ thống.

Giải mã:
- Decode Base64 từ dữ liệu nhận được.
- Giải mã chuỗi Decode trước đó bằng Key đã được cấp thu được chuỗi JSON.
- Key AES sẽ được MPOS cấp tại trang quản trị của Đơn vị chấp nhận thẻ.

alt text

Thanh toán Push Payment

Hình bên dưới mô tả luồng giao tiếp thanh toán đơn hàng được tạo từ ứng dụng của ĐVCNT và sử dụng hình thưc quẹt thẻ trên app MPOS để xác nhận thanh toán: alt text

BƯỚC MÔ TẢ
1 Nhân viên thu ngân (dùng giao diện web/máy POS) gửi thông tin cần thanh toán lên CRM 3rd Party. (CRMP).
2 CRMP gửi thông tin hoá đơn cần thanh toán sang MPOS Server (MPS).
3 MPS đẩy thông tin hoá đơn hiển thị lên màn hình của ứng dụng MPOS tại quầy thu ngân.
4 Nhân viên thu ngân đăng nhập ứng dụng MPOS nếu chưa đăng nhập và nhập mã của nhân viên thu ngân. Tại màn hình thu ngân sẽ hiển thị thông tin hoá đơn và tổng số tiền cần thanh toán của khách hàng.
5 Thu ngân đối chiếu số tiền hiển thị và thực hiện thanh toán đúng với số tiền hiện thị trên màn hình của ứng dụng MPOS.
6 MPS gửi thông tin hoá đơn cùng thông tin thanh toán sang CRMP.
7 CRMP gửi trạng thái thanh toán hóa đơn tới web/ máy pos của thu ngân.

Tạo đơn hàng thanh toán

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 serviceName string Giá trị “ADD_ORDER_INFOR”
2 orderId string Thông tin hoá đơn cần thanh toán (Mã hoá đơn)
3 posId string Mã định danh duy nhất của máy POS trên hệ thống đối tác
4 amount string Số tiền của hoá đơn cần thanh toán
5 description string Mô tả thông tin của hoá đơn cần thu
# Tham số Kiểu dữ liệu Mô tả
1 serviceName string Giá trị “ADD_ORDER_INFOR”
2 orderId string Thông tin hoá đơn cần thanh toán (Mã hoá đơn)
3 posId string Mã định danh duy nhất của máy POS trên hệ thống đối tác
4 amount string Số tiền thanh toán
5 description string Mô tả thông tin của hoá đơn cần thu

Hủy/Xóa hóa đơn

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 serviceName string Giá trị “REMOVE_ORDER_INFOR”
2 orderId string Thông tin hoá đơn cần thanh toán (Mã hoá đơn)
3 posId string Mã định danh duy nhất của máy POS trên hệ thống đối tác
4 amount string Số tiền của hoá đơn cần thanh toán
# Tham số Kiểu dữ liệu Mô tả
1 serviceName string Giá trị “REMOVE_ORDER_INFOR”
2 orderId string Thông tin hoá đơn cần thanh toán (Mã hoá đơn)
3 posId string Mã định danh duy nhất của máy POS trên hệ thống đối tác
4 amount string Số tiền thanh toán

Nhận thông tin thanh toán và cập nhật trạng thái giao dịch

ĐVCNT cung cấp API cho phép MPOS gửi dữ liệu thanh toán cùng mã hoá đơn cho ĐVCNT khi thay đổi trạng thái của giao dịch. ĐVCNT cung cấp endpoint này để MPOS cấu hình trên hệ thống.

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 serviceName string Giá trị SERVICE_UPDATE_TRANSACTION
2 transStatus long Trạng thái giao dịch:
100: Thành công
101: Đảo
102: Hủy
104: Kết toán
3 transCode string Mã giao dịch đối soát với MPOS
4 transDate timestamp Ngày/Giờ giao dịch
5 transAmount long Số tiền giao dịch
6 issuerCode string Loại thẻ:
VISA
MASTER
DOMESTIC
7 muid string Mã user thực hiện thanh toán
8 orderId string Thông tin hoá đơn cần thanh toán (Mã hoá đơn)
9 posId string Mã nhân viên thu ngân

Api kiểm tra giao dịch

API cho phép đối tác kiểm tra trạng thái thanh toán của hóa đơn

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 serviceName string Giá trị “GET_TRANSACTION_STATUS”
2 orderId string Thông tin hoá đơn cần thanh toán (Mã hoá đơn)
3 posId string Mã định danh duy nhất của máy POS trên hệ thống đối tác
4 amount string Số tiền của hoá đơn cần thanh toán
# Tham số Kiểu dữ liệu Mô tả
1 serviceName string Giá trị “REMOVE_ORDER_INFOR”
2 orderId string Thông tin hoá đơn cần thanh toán (Mã hoá đơn)
3 posId string Mã định danh duy nhất của máy POS trên hệ thống đối tác
4 amount string Số tiền thanh toán
5 transStatus string Trạng thái giao dịch:
-1: Giao dịch không tồn tại
100: Thành công
101: Đảo
102: Hủy
103: Chờ chữ kí chủ thẻ
104: Kết toán
6 pan string 6 số đầu và 4 số cuối của thẻ thanh toán
7 authCode string Mã chuẩn chi cho giao dịch
8 rrn string Mã định danh của ngân hàng phát hành
9 transCode string Mã giao dịch đối soát với MPOS
10 paymentIdentifier string Mã định danh của giao dịch trên MPOS
11 transDate timestamp Ngày/Giờ giao dịch

Kết nối dịch vụ VAS

Billing ( điện, nước, tài chính.. ) , Topup ( Telco, Game, Data, ...) , Pincode , Ticket ( Tàu, xe, xem phim ..)

Thông tin kết nối VAS

Request Payload

# Tham số Kiểu dữ liệu Mô tả
1 func string Tên hàm
2 Merchantcode string Mã Merchant (cung cấp bởi Vimo.vn)
3 data JSON string Mã hóa bằng AES 256, key mã hóa (MC_ENCRYPT_KEY) được cung cấp bởi Vimo
4 checksum string MD5 (MC_CODE + data + MC_CHECKSUM_KEY), key tạo checksum được cung cấp bởi Vimo

Response Payload

# Tham số Kiểu dữ liệu Mô tả
1 error_code string Mã lỗi
2 error_message string Mô tả lỗi
3 merchant_code string Mã merchant
4 checksum string checksum
5 data object Dữ liệu trả về

Kiểm tra số dư tài khoản đối tác

Request data

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 mc_request_id string Mã yêu cầu dịch vụ của merchant

Response data là object chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 balance string Token thanh Số dư khả dụng
2 balance_holding string Số dư chờ chuyển

Kiểm tra thông tin kết nối

Đang cập nhật

Thanh toán hóa đơn

Truy vấn hóa đơn - Hàm querybill

Request data

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 mc_request_id string Mã yêu cầu dịch vụ của merchant
2 service_code string Mã dịch vụ
3 publisher string Mã nhà cung cấp/phát hành
4 customer_code string Mã khách hàng

Response data là object chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 transaction_id string Mã giao dịch
2 billDetail array Mảng dữ liệu
3 customerInfo object Thông tin khách hàng

billDetail là array chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 billNumber string Mã hóa đơn
2 period string Kỳ thanh toán
3 amount int Số tiền hóa đơn
4 billType string Loại hóa đơn
5 otherInfo JSON string creationDate: Ngày tạo
expirationDate: Ngày đến hạn
payDate: Ngày thanh toán
addFee: Phụ phí (thu hộ nhà cung cấp)
partial: Thanh toán

* true: thanh toán 1 phần
* false: thanh toán toàn phần

minAmount: Số tiền thanh toán tối thiểu

* 0: yêu cầu thanh toán toàn bộ
* 0 < valueamount: cho phép thanh toán ≥ minAmount

customerInfo là object chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 customerCode string Mã khách hàng
2 customerName string Tên khách hàng
3 customerAddress string Địa chỉ khách hàng
4 customerOtherInfo string Thông tin khác:* customer_phone
* tax_code

Chú ý: Ở API truy vấn trả về thông tin otherInfo có giá trị addFee thì khi gọi thanh toán 1 phần cần phải truyền lên addFee được tính toán theo chính sách từng thời điểm (giá trị này MC tự tính toán)

Thanh toán hóa đơn - Hàm paybillv2

Request data

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 mc_request_id string Mã yêu cầu dịch vụ của merchant
2 service_code string Mã dịch vụ
3 publisher string Mã nhà cung cấp/phát hành
4 customer_code string Mã khách hàng
5 bill_payment array Thông tin hóa đơn truyền vào được truy vấn ở bước query
6 billNumber string Mã hóa đơn
7 period string Kỳ thanh toán
8 amount int Số tiền hóa đơn
9 billType string Loại hóa đơn
10 otherInfo JSON string creationDate: Ngày tạo
expirationDate: Ngày đến hạn
payDate: Ngày thanh toán
addFee: Phụ phí (yêu cầu truyền đúng giá trị từ hàm truy vấn)
partial: Thanh toán

* true: thanh toán 1 phần
* false: thanh toán toàn phần

minAmount: Số tiền thanh toán tối thiểu

* 0: yêu cầu thanh toán toàn bộ
* 0 < valueamount: cho phép thanh toán ≥ minAmount

channel_source: Kênh giao dịch

Response data là object chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 transaction_id string Mã giao dịch
2 billDetail array Mảng dữ liệu
3 customerInfo object Thông tin khách hàng

billDetail là array chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 billNumber string Mã hóa đơn
2 period string Kỳ thanh toán
3 amount int Số tiền hóa đơn
4 billType string Loại hóa đơn
5 billOtherInfo JSON string Thông tin khác

customerInfo là object chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 customerCode string Mã khách hàng
2 customerName string Tên khách hàng
3 customerAddress string Địa chỉ khách hàng
4 customerOtherInfo string Thông tin khác

Thanh toán hóa đơn – Hàm paybillpartial

Chú ý: Chỉ áp dụng với các trường hợp thanh toán một phần – hóa đơn tài chính

Request data

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 mc_request_id string Mã yêu cầu dịch vụ của merchant
2 service_code string Mã dịch vụ
3 publisher string Mã nhà cung cấp/phát hành
4 customer_code string Mã khách hàng
5 bill_payment array Thông tin hóa đơn truyền vào được truy vấn ở bước query
6 billNumber string Mã hóa đơn
7 period string Kỳ thanh toán
8 amount int Số tiền hóa đơn
9 billType string Loại hóa đơn
10 otherInfo JSON string creationDate: Ngày tạo
expirationDate: Ngày đến hạn
payDate: Ngày thanh toán
addFee: Phụ phí (thu hộ nhà cung cấp, lấy addfee qua hàm getaddfee)
partial: Thanh toán

* true: thanh toán 1 phần
* false: thanh toán toàn phần

minAmount: Số tiền thanh toán tối thiểu

* 0: yêu cầu thanh toán toàn bộ
* 0 < valueamount: cho phép thanh toán ≥ minAmount

channel_source: Kênh giao dịch

Response data là object chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 transaction_id string Mã giao dịch
2 billDetail array Mảng dữ liệu
3 customerInfo object Thông tin khách hàng

billDetail là array chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 billNumber string Mã hóa đơn
2 period string Kỳ thanh toán
3 amount int Số tiền hóa đơn
4 billType string Loại hóa đơn
5 billOtherInfo JSON string Thông tin khác

customerInfo là object chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 customerCode string Mã khách hàng
2 customerName string Tên khách hàng
3 customerAddress string Địa chỉ khách hàng
4 customerOtherInfo string Thông tin khác

Truy vấn phụ phí – Hàm getaddfee

Request data

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 mc_request_id string Mã yêu cầu dịch vụ của merchant
2 service_code string Mã dịch vụ
3 publisher string Mã nhà cung cấp/phát hành
4 customer_code string Mã khách hàng
5 amount int Số tiền hóa đơn

Response data

# Tham số Kiểu dữ liệu Mô tả
1 data JSON string addfee: Số tiền addfee

Kiểm tra giao dịch – Hàm checkbilltransaction

Request data

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 mc_request_id string Mã yêu cầu dịch vụ của merchant
2 service_code string Mã dịch vụ

Response data là array chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 transaction_id string Mã giao dịch

Kiểm hủy giao dịch – hàm revertbill

- Áp dụng hàm reverbill với giao dịch : thời gian paybill < 15 phút, giao dịch chưa gạch nợ bởi đơn vị điện lực

- Áp dụng với dịch vụ FE, thời gian xử lý giao dịch hoàn khoản 3 ngày từ khi nhà cung cấp nhận được lệnh reverbill

Request data

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 mc_request_id string Mã yêu cầu dịch vụ của merchant
2 mc_transaction_id string Mã giao dịch đã thanh toán
3 service_code string Mã dịch vụ
4 publisher string Mã nhà cung cấp/phát hành
5 customer_code string Mã khách hàng
6 bill_payment array Chứa thông tin hóa đơn truyền vào được truy vấn ở bước query
7 billNumber string Mã hóa đơn
8 period string Kỳ thanh toán
9 amount string Số tiền hóa đơn
10 billType string Loại hóa đơn
11 otherInfo JSON string creationDate: Ngày tạo
expirationDate: Ngày đến hạn
payDate: Ngày thanh toán
addFee: Phụ phí (thu hộ nhà cung cấp)
minAmount: Số tiền thanh toán tối thiểu

* 0: yêu cầu thanh toán toàn bộ
* 0 < valueamount: cho phép thanh toán ≥ minAmount

channel_source: Kênh giao dịch

Response data là object chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 transaction_id string Mã giao dịch
2 billDetail array Mảng dữ liệu
3 customerInfo object Thông tin khách hàng

billDetail là array chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 billNumber string Mã hóa đơn
2 period string Kỳ thanh toán
3 amount int Số tiền hóa đơn
4 billType string Loại hóa đơn
5 billOtherInfo JSON string Thông tin khác

customerInfo là object chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 customerCode string Mã khách hàng
2 customerName string Tên khách hàng
3 customerAddress string Địa chỉ khách hàng
4 customerOtherInfo string Thông tin khác

Một số lưu ý

Thanh toán hóa đơn điện

Các loại hóa đơn điện

Loại bill (billType) Mô tả
TD Hóa đơn loại TD – Tiền điện
(Nếu là EVN Hồ Chí Minh thì là loại Tiền điện – Thấp điểm)
CD Hóa đơn loại CD – Cấp điện
(Nếu là EVN Hồ Chí Minh thì là loại Tiền điện – Cao điểm)
BT Hóa đơn loại Tiền điện – Bình thường
DC Hóa đơn loại DC – Đóng cắt
DD Hóa đơn loại DD – Di dời
TC Hóa đơn loại TC – Thay đổi công suất
VC Hóa đơn loại VC – Vô công
LS Lãi suất do trả chậm

Đối với EVN Miền Bắc

Đối với EVN Hồ Chí Minh

Đối với EVN Miền Trung

Đối với EVN Miền Nam

Thanh toán hóa đơn nước

Đang cập nhật...

Thanh toán hóa đơn tài chính

Với những dịch vụ được refund: FEC, CASH24 thời gian phản hồi là 3 ngày làm việc kể từ khi nhận được yêu cầu, sẽ phối hợp với đối tác tài chính để có kết quả sớm nhất

Nạp tiền tài khoản điện thoại/game/data

Mua dịch vụ topup điện thoại/ game – Hàm topup

Request data

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 mc_request_id string Mã yêu cầu dịch vụ của merchant
2 service_code string Mã dịch vụ
3 publisher string Mã nhà cung cấp/phát hành
4 receiver string SĐT/Tài khoản người nhận
5 amount int Số tiền hóa đơn

Response data là object chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 transaction_id string Mã giao dịch

Mua dịch vụ topupdata – hàm topupdata

Request data

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 mc_request_id string Mã yêu cầu dịch vụ của merchant
2 service_code string Mã dịch vụ
3 publisher string Mã nhà cung cấp/phát hành
4 receiver string SĐT/Tài khoản người nhận
5 amount int Số tiền hóa đơn

Response data là object chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 transaction_id string Mã giao dịch

Kiểm tra giao dịch – hàm checktopuptransaction

Request data

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 mc_request_id string Mã yêu cầu dịch vụ của merchant
2 service_code string Mã dịch vụ

Response data là array chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 transaction_id string Mã giao dịch

Mua mã thẻ điện thoại/game

Mua dịch vụ mã thẻ – hàm pincode

Request data

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 mc_request_id string Mã yêu cầu dịch vụ của merchant
2 service_code string Mã dịch vụ
3 publisher string Mã nhà cung cấp/phát hành
4 quantity int Số lượng
5 amount int Số tiền hóa đơn

Response data là object chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 transaction_id string Mã giao dịch
2 cards Thông tin thẻ

cards là chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 cardCode string Mã thẻ
2 cardSerial string Số serial thẻ
3 expiryDate string Ngày hết hạn (format dd/mm/yyyy)
4 cardValue string Mệnh giá

Kiểm tra giao dịch – hàm getpincodetransaction

Request data

# Tham số Bắt buộc Kiểu dữ liệu Mô tả
1 mc_request_id string Mã yêu cầu dịch vụ của merchant
2 service_code string Mã dịch vụ
# Tham số Kiểu dữ liệu Mô tả
1 error_code string Mã lỗi
2 error_message string Mô tả lỗi
3 merchant_code string Mã merchant
4 checksum string Mã checksum
4 data array Dữ liệu trả về

Response data là array chứa các tham số:

# Tham số Kiểu dữ liệu Mô tả
1 transaction_id string Mã giao dịch

Bảng mã lỗi VAS

Mã lỗi Mô tả
00 Thành công
01 Thất bại
02 Tham số không hợp lệ
03 Checksum không hợp lệ
04 IP đối tác bị khóa hoặc chưa được khai báo
05 Đối tác bị khóa hoặc chưa được khai báo
06 Tham số chưa chính xác
07 Dịch vụ chưa được khai báo
08 Sản phẩm chưa được khai báo
09 Thuộc tính/Mệnh giá sản phẩm chưa được khai báo
20 Kênh chưa được khai báo
21 Dịch vụ Nhà cung cấp không hợp lệ
22 Mã giao dịch đối tác không được trùng nhau
23 Không tìm thấy yêu cầu dịch vụ
24 Mã yêu cầu thanh toán không được trùng nhau
25 Số dư không đủ để thanh toán
26 Mã hóa đơn không chính xác hoặc chưa đến kỳ thanh toán
27 Hết thời gian thanh toán