💸API Refund Transaction

TÀI LIỆU TÍCH HỢP DỊCH VỤ HOÀN TIỀN (REFUND)

I. Ngữ cảnh

Mô tả tài liệu

  • Dịch vụ dành cho các đối tác nền tảng có nhu cầu tích hợp tính năng hoàn tiền cho KH sử dụng gói VietQR Pro.

  • Dịch vụ cho phép khách hàng thực hiện việc hoàn tiền các giao dịch đã thanh toán bằng mã VietQR trực tiếp trên các nền tảng được tích hợp.

  • Tài liệu cung cấp thông tin nghiệp vụ:

    • Hoàn tiền đối với giao dịch đã thanh toán

  • Tài liệu này cung cấp thông tin kỹ thuật:

    • Thông tin bảo mật

    • Cấu hình kết nối dịch vụ hoàn tiền

    • Bộ API Services dịch vụ hoàn tiền.

  • Thuật ngữ viết tắt:

Thuật ngữ

Chú thích nội dung

ĐT

Đối tác

KH

Khách hàng, người dùng cuối của đối tác

TK/TKNH

Tài khoản/Tài khoản ngân hàng

LK

Liên kết

GD

Giao dịch

TT

Thanh toán

BĐSD

Biến động số dư

Nghiệp vụ

2.1. Luồng nghiệp vụ

Ảnh 1. Khái quát luồng nghiệp vụ hoàn tiền sau khi thanh toán thành công VietQR

Ảnh 2: Mô tả luồng nghiệp vụ hoàn tiền cho gói VietQR Pro

2.2. Mô tả luồng nghiệp vụ

Bước thực hiện

Người thực hiện

Hệ thống

Mô tả

Pre-condition

ĐT

- Đã khai báo kết nối đến hệ thống VietQR. - Đã liên kết TK MBBank/BIDV trên hệ thống VietQR.

- Sử dụng gói VietQR Pro.

1

ĐT

VietQR

KH yêu cầu hoàn tiền sau khi đã thanh toán thành công và ghi nhận BĐSD

2

VietQR

ĐT

VietQR kiểm tra thông tin:

  • Nếu thông tin không hợp lệ hoặc không khả dụng: VietQR báo lỗi nhận thông tin hoàn tiền không thành công

  • Nếu thông tin hợp lệ: Hệ thống VietQR tiến hành hoàn tiền

3

VietQR

ĐT

VietQR tiến hành hoàn tiền:

  • VietQR sẽ trả thông tin nếu hoàn tiền thành công

  • Người dùng cuối nhận được số tiền hoàn

2.3. Hoàn tiền

  • Dịch vụ hoàn tiền khả dụng cho các đối tác sử dụng gói dịch vụ VietQR Pro.

  • ĐT sử dụng API hoàn tiền để hoàn tiền cho người dùng cuối.

    • Đối với mỗi giao dịch có thể hoàn tiền được nhiều lần và tổng số tiền hoàn luôn phải bé hơn hoặc bằng số tiền người dùng cuối đã thanh toán cho ĐT,

    • Số tiền còn lại trong TKNH của ĐT phải lớn hơn số tiền hoàn cho người dùng cuối.

  • Hệ thống VietQR cần cung cấp secret_key cho ĐT để ĐT có thể sử dụng dịch vụ hoàn tiền.

II. Thông tin kỹ thuật

Quy định về xác thực bảo mật

  • ĐT sử dụng API Get Token để lấy thông tin xác thực Bearer Token. Đoạn Bearer Token này dùng để gọi API Hoàn tiền.

  • VietQR sẽ cung cấp 1 đoạn “secretKey” cho các ĐT để xác thực và mã hoá thông tin.

  • Quy định mã hoá thông tin dựa vào “secret_key”:

    • Secret Key: Liên hệ kỹ thuật VietQR để được cung cấp thông tin.

    • Đối với API Hoàn tiền, hệ thống yêu cầu field “checkSum” trong Request Body. Phía VietQR cung cấp thông tin để ĐT generate checksum:

API

Quy định checksum

API Hoàn tiền

MD5(secretKey + referenceNumber + amount + bankAccount)

  • Quy định về thông tin xác thực Bearer Token:

    • Thời gian hiệu lực: 300 giây.

    • Đoạn Bearer Token đánh dấu thông tin khách hàng sử dụng dịch vụ thanh toán qua mã VietQR, được sử dụng trên hệ thống ĐT. Vì vậy, ĐT không thể sử dụng đoạn 1 Bearer Token cho tất cả các KH.

Quy định về quy trình kết nối dịch vụ

  • ĐT và KH tuân thủ theo quy trình kết nối dịch vụ để đảm bảo hệ thống vận hành một cách hiệu quả nhất, giảm thiểu rủi ro không mong muốn.

III. Mô tả APIs

API Get Token:

  • URL: https://<vietqr-host>/<basepath>/api/token_generate

  • Method: POST

  • Mô tả:

    • API để lấy Bearer Token, sử dụng để xác thực cho các API khác liên quan đến việc hoàn tiền. Token có thời hạn là 300 giây (5 phút).

    • API yêu cầu sử dụng Basic Authentication. Gửi một yêu cầu HTTP với header Authorization chứa mã hóa base64 của username:password (do VietQR cung cấp)

  • Authorization: Basic Authentication

  • Request Body: Không.

  • Response Body: JSON

Field

Type

Description

access_token

String

Đoạn mã Bearer Token.

token_type

String

Mặc định: Bearer.

expires_in

int

Thời hạn của token, mặc định là 300 giây.

API Hoàn Tiền

  • URL: https://<vietqr-host>/<basepath>/api/transaction/refund

  • Method: POST

  • Mô tả:

    • API này được sử dụng để yêu cầu hoàn tiền cho người dùng cuối của đối tác.

    • Khách hàng có thể yêu cầu hoàn lại tiền nhiều lần cho một giao dịch người dùng cuối đã thực hiện với điều kiện tổng số tiền được hoàn luôn bé hơn hoặc bằng số tiền người dùng cuối đã thanh toán.

    • API yêu cầu sử dụng Bearer Token để xác thực. Bearer Token có thể được lấy từ API Get Token như đã mô tả ở mục 1.

  • Authorization: Bearer Token

  • Request Body: JSON

Field

Type

Required

Description

bankAccount

String

TK ngân hàng của KH

referenceNumber

String

Mã giao dịch của giao dịch cần hoàn tiền

amount

String

Số tiền cần hoàn tiền cho end-user của KH

content

String

Có

Nội dung hoàn tiền

checkSum

String

Có

Mã checkSum MD5 (secretKey + referenceNumber + amount + bankAccount)

  • Response Body: JSON

    • Trường hợp thành công:

Field

Type

Description

status

String

SUCCESS: Hoàn tiền thành công

message

String

Mã giao dịch hoàn tiền

    • Trường hợp khác:

Field

Type

Description

status

String

FAILED: Có lỗi trong quá trình thực hiện

message

String

Mã lỗi

  • Bảng mã lỗi:

Message

Description

Status

<Mã giao dịch>

Thành công

200

E05

Lỗi không xác định

400

E41

Checksum không hợp lệ

400

E42

Tài khoản của KH không có quyền hoàn tiền

400

E43

Hoàn tiền không thành công

400

E44

Mã giao dịch của giao dịch không tồn tại

400

E45

Số tiền refund không hợp lệ

400

E46

Request Body không hợp lệ

400

E74

Invalid token

400

E77

Tài khoản ngân hàng không thuộc quản lý của đại lý

400

E104

Không tìm thấy thông tin đại lý của ĐT

400

IV. Bảng mã lỗi

Message

Description

Status

<Mã giao dịch>

Thành công

200

E05

Lỗi không xác định

400

E41

Checksum không hợp lệ

400

E42

Tài khoản của KH không có quyền hoàn tiền

400

E43

Hoàn tiền không thành công

400

E44

Mã giao dịch của giao dịch không tồn tại

400

E45

Số tiền refund không hợp lệ

400

E46

Request Body không hợp lệ

400

E74

Invalid token

400

E77

Tài khoản ngân hàng không thuộc quản lý của đại lý

400

E104

Không tìm thấy thông tin đại lý của ĐT

400

Last updated