Open HienLe2004 opened 2 weeks ago
Mô tả vấn đề:
Yêu cầu kỹ thuật:
Phương thức HTTP:
ipnUrl
.Header yêu cầu:
Content-Type
: application/jsonPayload (Dữ liệu yêu cầu từ MoMo):
momo_wallet
.""
).Cấu trúc Dữ liệu HMAC_SHA256 cho signature:
HMAC_SHA256(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,secretKey)
Phản hồi API (HTTP Response):
Content-Type: application/json;charset=UTF-8
Các trạng thái giao dịch:
Đầu ra mong muốn:
Lưu ý:
Các bước thực hiện:
Demo:
Endpint: /api/v1/payment/momo-callback
Người dùng khởi tạo thanh toán:
Người dùng thanh toán:
Sau đó MoMo sẽ điều hướng từ trang thanh toán của MoMo về trang mua hàng của mình dựa vào field redirectUrl mà ta đã truyền vào ở lệnh captureWallet và sẽ đính kèm thêm các tham số vào URL
Đồng thời MoMo cũng sẽ sử dụng API được khai báo ở field ipnUrl để gửi một HTTP Request tới máy chủ đối tác.
Tags:
Assignees: @Sangquangnqs & @tacsquang
Mô tả vấn đề:
Yêu cầu kỹ thuật:
/v2/gateway/api/query
HMAC_SHA256(accessKey=$accessKey&orderId=$orderId&partnerCode=$partnerCode&requestId=$requestId,secretKey)
vi
hoặc en
) (Yêu cầu).Ví dụ yêu cầu:
{
"partnerCode": "123456",
"requestId": "1527246504579",
"orderId": "1527246478428",
"signature": "13be80957a5ee32107198920fa26aa85a4ca238a29f46e292e8c33dd9186142a",
"lang": "en"
}
Cần tính toán chữ ký HMAC_SHA256 dựa trên chuỗi dữ liệu:
HMAC_SHA256(accessKey=$accessKey&orderId=$orderId&partnerCode=$partnerCode&requestId=$requestId,secretKey)
vi
hoặc en
).Ví dụ phản hồi:
{
"partnerCode": "123456",
"requestId": "1527246504579",
"orderId": "1527246478428",
"extraData": "",
"amount": 1000,
"transId": 1234567890,
"payType": "qr",
"resultCode": 0,
"refundTrans": [],
"message": "Transaction successful.",
"responseTime": 1633504902954
}
/v2/gateway/api/query
để nhận yêu cầu kiểm tra trạng thái giao dịch.Demo:
/api/v1/payment/status
{
"orderId": "77c9d58fb000264",
"requestId": "77c9d58fb000264",
"lang": "vi"
}
Tags:
Assignees: @Sangquangnqs & @tacsquang
Mô tả vấn đề:
/api/v1/payment/confirm
success
khi giao dịch thành công.{
"order_id": "123456789",
"transaction_status": "success"
}
3.1. Xác thực yêu cầu:
3.2. Kiểm tra trạng thái giao dịch:
success
, API sẽ trả về lỗi.order_id
.3.3. Cập nhật thông tin đơn hàng:
3.4. Cập nhật VIP level cho người dùng:
3.5. Tạo lại Access Token và Refresh Token:
3.6. Trả kết quả:
{
"message": "Payment confirmed and VIP level upgraded"
}
order_id
, transaction_status
), API sẽ trả về mã lỗi 400
với thông báo lỗi chi tiết.404
với thông báo lỗi thích hợp.200 Status:
400 Status:
404 Status:
Tags:
Assignees: @Sangquangnqs & @tacsquang
Title: Phát triển tính năng khởi tạo thanh toán nâng cấp VIP qua Momo (VIP Upgrade Payment)
1. Description:
Mục tiêu:
Yêu cầu:
Endpoint:
/api/v1/payment/vip-upgrade (Phương thức POST)
Authorization: Bearer Token (JWT) trong header để xác thực quyền truy cập của người dùng.
Request Body: Gửi yêu cầu thanh toán với số tiền và mức VIP cần nâng cấp:
Xác thực yêu cầu:
vip_level
phải là một trong các mức VIP hợp lệ).Xử lý yêu cầu:
Xử lý phản hồi:
200 OK: Nếu khởi tạo thanh toán thành công, trả về thông tin URL thanh toán và ID đơn hàng:
400 Bad Request: Nếu thông tin không hợp lệ, trả về lỗi với thông báo:
401 Unauthorized: Nếu JWT token không hợp lệ hoặc không có quyền truy cập, trả về lỗi với thông báo:
2. Demo Kết quả:
Trường hợp thành công (200 OK): Khi người dùng gửi yêu cầu thanh toán hợp lệ, hệ thống sẽ trả về URL thanh toán Momo để người dùng hoàn tất giao dịch:
Trường hợp lỗi (400 Bad Request): Nếu yêu cầu không hợp lệ (ví dụ: số tiền không hợp lệ hoặc
vip_level
không đúng), trả về lỗi 400:Trường hợp lỗi (401 Unauthorized): Nếu người dùng không cung cấp JWT token hợp lệ trả về lỗi 401:
3. Screenshots:
200 OK:
URL Momo:
400 Bad Request: _viplevel không đúng amount không đúng
401 Unauthorized:
4. Proposed Solution:
Backend:
/api/v1/payment/vip-upgrade
với phương thứcPOST
: API này sẽ nhận yêu cầu thanh toán từ người dùng.amount
vàvip_level
trong request body.Frontend:
Assignees: @Sangquangnqs & @tacsquang