LogoLogo
  • Ứng dụng VinID
  • Giới thiệu chung
    • Dịch vụ thanh toán VinID Pay
    • Dịch vụ loyalty VinID Point
    • Quy trình tích hợp
  • Tài liệu tích hợp
    • Môi trường tích hợp
    • Quy tắc kết nối chung
      • Request Header
      • X-Key-Code
      • Signature - chữ kí điện tử
      • Ví dụ Request / Response
      • Extra Data
    • OneID SSO Integration (PKCE)
      • Auth endpoint
      • Token endpoint
      • Refresh token
      • Logout endpoint
      • Profile endpoint
      • OpenID Configuration
    • Tích hợp với VinID Pay
      • Thanh toán Merchant QR
      • Thanh toán Transaction QR
      • Thanh toán App to App
      • Thanh toán Web Payment
      • Thanh toán Linked Account
      • Dịch vụ chi hộ
      • Callback / IPN
      • Refund giao dịch
    • Tích hợp với VinID Loyalty
      • Dịch vụ lấy hạng thành viên trung thành
      • Dịch vụ VinID Giftcode
        • Deprecated APIs
      • Dịch vụ Topup VinID Point
        • Deprecated APIs
    • Tích hợp với VinID Voucher
      • Dịch vụ E-Voucher
    • Mã lỗi chung
  • Đối soát
    • Đối soát Ví điện tử VinID Pay
  • Khác
    • Thuật ngữ
    • Câu hỏi thường gặp
    • Ứng dụng quản lý
      • Merchant Mobile App
      • Merchant Website
    • Thông tin hỗ trợ
Powered by GitBook
On this page
  • Giới thiệu dịch vụ
  • Luồng người dùng
  • APIs
  • Refund
  • Mã lỗi

Was this helpful?

Export as PDF
  1. Tài liệu tích hợp
  2. Tích hợp với VinID Pay

Refund giao dịch

Hoàn trả lại số tiền/điểm mà khách hàng đã thanh toán

PreviousCallback / IPNNextTích hợp với VinID Loyalty

Last updated 4 years ago

Was this helpful?

Giới thiệu dịch vụ

Dịch vụ Hoàn lại giao dịch (Refund) cho phép merchant trả lại số tiền/điểm mà người dùng đã thanh toán qua ví VinID Pay.

Merchant có thể thực hiện hoàn lại một phần hoặc toàn bộ giá trị của giao dịch tùy thuộc vào nghiệp vụ của mình. Người dùng sẽ được thông báo trên ứng dụng VinID về số tiền/điểm mà merchant hoàn trả.

VinID Pay cung cấp dịch vụ Refund thông qua 2 phương thức sử dụng:

  • User Frontend (Merchant Site/Merchant App): merchant đăng nhập bằng tài khoản merchant vào trang web/ ứng dụng của VinID cung cấp để hoàn tiền cho giao dịch.

  • Backend-to-Backend: merchant tích hợp kết nối hệ thống thanh toán của VinID và sử dụng API để yêu cầu hoàn tiền cho giao dịch.

Lưu ý

  • Hiện tại chỉ có thể refund trong kỳ (được hiểu là giao dịch gốc diễn ra vào ngày T và giao dịch refund diễn ra trong khoảng thời gian từ 00:00 ngày T đến hết 09:09:59 AM ngày T+1).

  • Không cho phép refund các giao dịch có khuyến mãi như sử dụng voucher, giao dịch có cashback, hoặc ưu đãi giảm giá khi thanh toán của VinID ….

  • Đối với các giao dịch thanh toán qua hình thức MerchantQR thì merchant cần sử dụng Merchant Site/Merchant App để thực hiện refund.

Luồng người dùng

  1. User thực hiện trả lại mặt hàng đã mua tại Merchant

  2. Merchant tạm giữ lại hàng và gửi yêu cầu refund giao dịch tới VinID

  3. VinID kiểm tra yêu cầu của Merchant:

    a. Nếu các thông tin yêu cầu hợp lệ, VinID sẽ thực hiện refund theo yêu cầu của Merchant

    b. Nếu các thông tin yêu cầu không hợp lệ, VinID sẽ từ chối yêu cầu và báo lỗi cho Merchant.

  4. VinID thông báo kết quả xử lý refund cho Merchant

  5. Dựa vào kết quả phản hồi của VinID, Merchant đưa ra quyết định việc trả hàng của User.

APIs

Refund

POST {API-HOST}/merchant-integration/v1/orders/refund

Tạo yêu cầu refund giao dịch

Request Body

Name
Type
Description

order_reference_id

string

Mã định danh đơn hàng hoàn tiền tại merchant. Cần unique trên mỗi request, tối đa 35 ký tự

original_order_reference_id

string

Mã định danh đơn hàng gốc cần refund. (Là giá trị order_reference_id mà merchant truyền sang VinID khi tạo giao dịch)

description

string

Mô tả lý do của việc refund

merchant_user_id

string

Mã nhân viên của merchant thực hiện hoàn tiền.

merchant_user_name

string

Tên nhân viên của merchant thực hiện hoàn tiền.

vnd_amount

number

Số tiền muốn hoàn lại cho khách hàng. Giá trị phải nguyên lớn hơn 0

point_amount

number

Số điểm muốn hoàn lại cho khách hàng. Giá trị phải nguyên lớn hơn 0

Hoàn tiền thành công
{
    "meta": {
        "code": 200,
        "string": "OK"
    },
    "data": {
        "original_loyalty_transaction_id": "string",
        "refund_transaction_id": "string",
        "refund_loyalty_transaction_id": "string",
        "refund_transaction_wallet_id": "string"
    }
}
GD thanh toán tiền lẫn điểm. Refund tiền thành công, điểm thất bại
{
    "meta": {
        "code": 2000801,
        "message": "Refund thành công. Khách hàng đã nhận lại tiền. Phần điểm hoàn lại sẽ được cập nhật trong thời gian sớm nhất."
    },
    "data": {
        "refund_transaction_id": "string",
        "refund_transaction_wallet_id": "string",
    }
}
GD thanh toán tiền lẫn điểm. Refund tiền thất bại, điểm thành công
{
    "meta": {
        "code": 2000802,
        "message": "Refund thành công. Khách hàng đã nhận lại điểm. Phần tiền hoàn lại sẽ được cập nhật trong thời gian sớm nhất"
    },
    "data": {
        "original_loyalty_transaction_id": "string",
        "refund_loyalty_transaction_id": "string",
        "refund_transaction_wallet_id": "string"
    }
}
GD chỉ thanh toán bằng tiền. Yêu cầu vượt quá số tiền có thể refund
{
    "meta": {
        "code": 4004009,
        "message": "Số tiền có thể refund còn lại không đủ"
    }
}
GD chỉ thanh toán bằng tiền. Yêu cầu refund truyền vào cả giá trị điểm
{
    "meta": {
        "code": 4000812,
        "message": "Giao dịch gốc không được thanh toán bằng điểm"
    }
}

Lưu ý

  • Nếu merchant không chỉ định giá trị cụ thể chovnd_amountvàpoint_amountthì không truyền hoặc truyền null.Nếu truyền 0 sẽ báo lỗi. Trường hợp cả 2 tham số đều không được chỉ định thì VinID sẽ thực hiện refund toàn phần cho giao dịch.

  • Hiện tại chỉ cho phép refund toàn phần điểm. Vì vậy nếu muốn refund điểm thì merchant cần truyền vào chính xác số điểm mà người dùng đã tiêu trong giao dịch gốc.

  • Thời gian timeout khi gọi API refund tối thiểu là 25s để đảm bảo nhận được response từ VinID

Mã lỗi

Mã lỗi

Thông báo

200

OK

2000801

Refund thành công. Khách hàng đã nhận lại tiền. Phần điểm hoàn lại sẽ được cập nhật trong thời gian sớm nhất

2000802

Refund thành công. Khách hàng đã nhận lại điểm. Phần tiền hoàn lại sẽ được cập nhật trong thời gian sớm nhất

4000001

Dữ liệu không hợp lệ

4000800

Mã đơn hàng gốc không tồn tại

4000801

Giao dịch gốc không phải là payment

4000802

Giao dịch gốc không thành công

4000803

Giao dịch gốc có khuyến mãi

4000804

Giao dịch gốc đã cashback

4000807

Giao dịch gốc không phải DIRECT PAY hoặc QR PAYMENT

4000809

Số tiền còn lại không đủ thực hiện giao dịch

4000810

Currency không đúng với giao dịch gốc

4000811

Số tiền refund phải là số nguyên dương

4000812

Giao dịch gốc không được thanh toán bằng điểm

4000813

Điểm loyalty không trùng với giao dịch gốc

4000817

Merchant không được thiết lập refund tự động

4000820

Giao dịch đã quá thời hạn có thể refund

4000824

Thiếu thông tin mã giao dịch gốc

4030800

Merchant không được phép thực hiện hoàn tiền

4040800

Giao dịch gốc không tồn tại trên core ví

4040801

Giao dịch gốc không tồn tại

4080804

Quá thời hạn kết nối

4090801

Mã đơn hàng đã tồn tại

5000800

Refund thất bại

5000801

Hệ thống xảy ra lỗi khi xử lý yêu cầu

5000802

Hệ thống xảy ra lỗi khi xử lý yêu cầu

Thông tin thêm:

Mã lỗi chung
Xem hướng dẫn tại đây
API Host