Collection Link
LUỒNG XỬ LÝ
Diễn giải sơ đồ
- Bước 1: Khách hàng kiểm tra đơn hàng sau khi mua sắm tại cửa hàng / trực tuyến
- Bước 2: Người bán gửi yêu cầu đến MoMo cho Liên kết thanh toán (kèm thông tin xác thực của người bán)
- Bước 3: MoMo xác thực thông qua hồ sơ người bán và tạo liên kết thanh toán sau đó gửi lại cho người bán.
- Bước 4: Có 3 trường hợp có thể xảy ra
- TH 1: Đơn vị bán hàng là kênh bán hàng trực tuyến, sau khi nhận được link hệ thống sẽ tự động chuyển đến trang thanh toán của MoMo
- TH 2: Đơn vị bán hàng là cửa hàng offline sử dụng máy POS, hệ thống sẽ gửi link qua Email / SMS của người mua, sau đó người mua sẽ mở link để chuyển đến trang thanh toán của MoMo.
- TH 3: Người bán hàng là đối tác của SaaS (Software as a Service), họ sẽ gửi liên kết trực tiếp thông qua kênh trao đổi của người mua (messenger, zalo,..), sau đó người mua nhấp vào liên kết để đến trang thanh toán của MoMo.
- Bước 5: Tùy từng thiết bị, MoMo sẽ hiển thị giao diện web di động hoặc web tương ứng.
- Bước 6: Khách hàng kiểm tra thông tin đơn hàng, sau đó lựa chọn một trong các phương thức thanh toán của MoMo.
- Bước 7: Tùy thuộc vào phương thức thanh toán đã chọn của khách hàng:
- Bước 7.1.
Chuyển hướng đến trang thanh toán QRC
: Hiển thị giao diện tùy theo thiết bị mà khách hàng đang sử dụng. Trong trường hợp thiết bị là máy tính để bàn hoặc máy tính bảng , thông tin thanh toán và hình ảnh QRC sẽ được hiển thị. Trường hợp thiết bị là di động , chỉ hiển thị thông tin thanh toán **, nếu khách hàng đã cài đặt ứng dụng MoMo, hệ thống sẽ nhận diện và chuyển thẳng sang bước tiếp theo. - Bước 7.2.
Chuyển hướng đến trang thanh toán ATM
: Hiển thị thông tin đơn hàng và yêu cầu người dùng nhập thông tin thẻ ATM trước khi thanh toán. Khách hàng kiểm tra thông tin đơn hàng, nhập thông tin thẻ và xác nhận thanh toán. Tùy thuộc vào thiết bị của khách hàng, nó có thể hiển thị giao diện máy tính để bàn hoặc webview. - Bước 7.3.
Chuyển hướng đến trang thanh toán Visa / Master / JCB
: Hiển thị thông tin đơn hàng và yêu cầu người dùng nhập thông tin thẻ quốc tế trước khi thanh toán. Khách hàng kiểm tra thông tin đơn hàng, nhập thông tin thẻ và xác nhận thanh toán. Tùy thuộc vào thiết bị của khách hàng, nó có thể hiển thị giao diện máy tính để bàn hoặc webview.
- Bước 7.1.
- Bước 8: Sau khi quét QRC trên máy tính để bàn hoặc mở trực tiếp từ Di động, khách hàng sẽ được chuyển đến màn hình xác nhận thanh toán an toàn, sau đó nhấp vào 'Xác nhận thanh toán'.
- Bước 9: Cổng thanh toán của MoMo xử lý thanh toán, sau đó trả kết quả giao dịch thanh toán cho Người bán.
Cấu hình API
Khởi tạo phương thức thanh toán
Trên trang thanh toán của merchant, sau khi khách hàng chọn phương thức thanh toán của MoMo, server merchant cần gọi API payWithMethod
của MoMo để lấy phương thức thanh toán và apply cái thích hợp cho platform của họ.
requestType
: Định danh kiểu của request
POST /v2/gateway/api/create
Attribute | Type | Required | Description |
---|---|---|---|
partnerCode | String | Thông tin tích hợp | |
storeId | String | Mã cửa hàng | |
requestId | String(50) | Định danh duy nhất cho mỗi yêu cầu, Đối tác sử dụng requestId cho xử lý idempotency | |
amount | Long | Số tiền cần thanh toán Nhỏ Nhất: 1.000 VND Tối đa: 50.000.000 VND Tiền tệ: VND Kiểu dữ liệu: Long Lưu ý: Giao dịch thanh toán thẻ ATM và thẻ Credit cần đặt giá trị tối thiểu là 10.000 VND | |
orderId | String | Mã đơn hàng của đối tác Regex: ^[0-9a-zA-Z]([-_.]*[0-9a-zA-Z]+)*$ | |
orderInfo | String | Thông tin đơn hàng | |
redirectUrl | String | Một URL của đối tác. URL này được sử dụng để chuyển trang (redirect) từ MoMo về trang mua hàng của đối tác sau khi khách hàng thanh toán. Hỗ trợ: AppLink and WebLink | |
ipnUrl | String | API của đối tác. Được MoMo sử dụng để gửi kết quả thanh toán theo phương thức IPN (server-to-server) | |
requestType | String | payWithMethod | |
extraData | String | Giá trị mặc định là rỗng"" Encode base64 theo định dạng Json: {"key": "value"} Ví dụ với dữ liệu: {"username": "momo"} thì data extraData : eyJ1c2VybmFtZSI6ICJtb21vIn0= | |
items | List | Danh sách các sản phẩm hiển thị trên trang thanh toán. Ví dụ: [{"image": "https://momo.vn/uploads/product1.jpg", "name": "Product 1", "quantity": 1, "amount": 20000}, {"image": "https://momo.vn/uploads/product2.jpg", "name": "Product 2", "quantity": 2, "amount": 30000}] | |
userInfo | Object | Thông tin người dùng Ví dụ: {"phoneNumber": "0123456789", "email": "momo@momo.vn", "name": "momo" } | |
autoCapture | Boolean | Nếu như thiết lập giá trị là false , Việc thanh toán sẽ không được capture tự động.Chú ý: autoCapture = 'false' chỉ áp dụng cho phương thức thanh toán thông qua MoMo E-Wallet và cho Credit Card | |
lang | String | Ngôn ngữ của message được trả về (vi or en ) | |
signature | String | Chữ ký để xác nhận giao dịch. sử dụng thuật toán Hmac_SHA256 với data theo định dạng: 1 chuỗi String được sort theo thứ tự alphabet: accessKey=$accessKey&amount=$amount&extraData=$extraData &ipnUrl=$ipnUrl&orderId=$orderId&orderInfo=$orderInfo &partnerCode=$partnerCode&redirectUrl=$redirectUrl &requestId=$requestId&requestType=$requestType |
Chi tiết nội dung của items
Attribute | Type | Required | Description |
---|---|---|---|
id | String | SKU number | |
name | String | Tên sản phẩm | |
description | String | Miêu tả sản phẩm | |
category | String | Phân loại ngành hàng của sản phẩm | |
imageUrl | String | Link hình ảnh của sản phẩm | |
manufacturer | String | Tên nhà sản xuất | |
price | Long | Đơn giá | |
currency | String | VND | |
quantity | Integer | Số lượng của sản phẩm. Cần là một số lớn hơn 0 | |
unit | String | Đơn vị đo lường của sản phẩm này | |
totalPrice | Long | Tổng giá = Đơn giá x Số lượng | |
taxAmount | Long | Tổng thuế |
Mẫu Item
{
"id": "204727",
"name": "YOMOST Bac Ha&Viet Quat 170ml",
"description": "YOMOST Sua Chua Uong Bac Ha&Viet Quat 170ml/1 Hop",
"category": "beverage",
"imageUrl":"https://momo.vn/uploads/product1.jpg",
"manufacturer":"Vinamilk",
"price": 11000,
"quantity": 5,
"unit":"hộp",
"totalPrice": 55000,
"taxAmount":"200"
}
Chi tiết nội dung của userInfo
Attribute | Type | Required | Description |
---|---|---|---|
name | String | Tên của người dùng | |
phoneNumber | String | Số điện thoại của người dùng | |
String | Email của người dùng |
Mẫu UserInfo
{
"name": "Nguyen Van A",
"phoneNumber": "0999888999",
"email": "email_add@domain.com"
}
Thông tin điều hướng(redirectUrl)
WebLink: Link để mở website.
AppLink: Link để mở ứng dụng điện thoại.
Tìm hiểu thêm về AppLink
- Android: https://developer.android.com/training/app-links
- IOS: https://developer.apple.com/documentation/uikit/core_app/..
Request mẫu
{
"partnerCode": "MOMO",
"partnerName" : "Test",
"storeId" : "MoMoTestStore",
"requestType": "payWithMethod",
"ipnUrl": "https://momo.vn",
"redirectUrl": "https://momo.vn",
"orderId": "MM1540456472575",
"amount": 150000,
"lang": "vi",
"orderInfo": "SDK team.",
"orderExpireTime" : 30,
"requestId": "MM1540456472575",
"extraData": "eyJ1c2VybmFtZSI6ICJtb21vIn0=",
"signature": "fd37abbee777e13eaa0d0690d184e4d7e2fb43977281ab0e20701721f07a0e07"
}
Attribute | Type | Required | Description |
---|---|---|---|
partnerCode | String | Thông tin tích hợp | |
requestId | String | Giống với request ban đầu | |
orderId | String | Mã đơn hàng của đối tác Regex: ^[0-9a-zA-Z]([-_.]*[0-9a-zA-Z]+)*$ | |
amount | Long | Giống với số tiền thanh toán ban đầu | |
responseTime | Long | Thời gian phản hồi kết quả thanh toán đến đối tác Định dạng: timestamp | |
message | String | Mô tả kết quả request, ngôn ngữ được dựa trên lang | |
resultCode | int | Result Code | |
payUrl | String | URL để điều hướng từ trang đối tác đến trang thanh toán MoMo | |
shortLink | String | URL ngắn đại diện cho payUrl chứa các tham số ở định dạng nhỏ hơn và đơn giản hơn |
Response mẫu
{
"partnerCode": "MOMO",
"requestId": "MM1540456472575",
"orderId": "MM1540456472575",
"amount": 150000,
"responseTime": 145256987,
"message": "Thành công",
"resultCode": 0,
"payUrl": "https://test-payment.momo.vn/v2/gateway/pay?t=TU9NT1NKSTEyMDE5MDgyM3wxNjEzNTMyMDk3OTIyOjAxMjM0NTY3Nzg="
"shortLink": "https://test-payment.momo.vn/shortlink/smTZN2oL2s"
}
Thanh toán
Bạn cần cài đặt ứng dụng MoMo Test và sử dụng tài khoản để test MoMo TEST Account để tiến hành thanh toán.
Hướng dẫn thanh toán: Đăng nhập > Màn hình Home > Quét QR.
Xử lý kết quả thanh toán
Xem thêm tại Payment Notification.
Mô tả tham số
Mô tả các tham số được dùng bởi MoMo trong URL redirectUrl
và nội dụng body trong ipnUrl
.
Attribute | Type | Required | Description |
---|---|---|---|
partnerCode | String | Thông tin tích hợp | |
orderId | String | Mã đơn hàng của đối tác Regex: ^[0-9a-zA-Z]([-_.]*[0-9a-zA-Z]+)*$ | |
requestId | String | requestId của đối tác | |
amount | Long | Số tiền thanh toán | |
orderInfo | String | Thông tin đơn hàng | |
partnerUserId | String | Định danh duy nhất của MoMo cho mỗi tài khoản ví MoMo. | |
orderType | String | momo_wallet | |
transId | Long | MoMo's transaction ID | |
resultCode | Integer | Transaction status of the order Result Code | |
message | String | Mô tả kết quả, ngôn ngữ dựa trên lang | |
payType | String | Loại hình thanh toán: qr , webApp , credit or napas | |
responseTime | Long | Thời gian phản hồi kết quả về cho đối tác Định dạng: timestamp | |
extraData | String | extraData. Default: "" | |
signature | String | Chữ ký để xác nhận thông tin. Sử dụng thuật toán Hmac_SHA256 với định dạng: Mỗi chuỗi bao gồm các key name được sắp xếp theo thứ tự alphabet: accessKey=$accessKey&amount=$amount&extraData=$extraData &message=$message&orderId=$orderId&orderInfo=$orderInfo &orderType=$orderType&partnerCode=$partnerCode&payType= $payType&requestId=$requestId&responseTime= $responseTime&resultCode=$resultCode&transId=$transId |