0
0
Lập trình
TT

Hướng Dẫn Tích Hợp API KCB M-PESA STK Push

Đăng vào 3 tuần trước

• 5 phút đọc

Hướng Dẫn Tích Hợp API KCB M-PESA STK Push

KCB BUNI M-PESA STK Push cho phép bạn khởi tạo yêu cầu thanh toán trực tiếp đến điện thoại của khách hàng. KCB cung cấp một API bảo mật giúp các doanh nghiệp và nhà phát triển thu thập thanh toán từ khách hàng một cách dễ dàng. Hướng dẫn này sẽ giúp bạn qua các bước xác thực, gửi yêu cầu STK Push, xử lý callback và hiểu các phản hồi có thể xảy ra.

Mục Lục

  1. Xác Thực và Tạo Token
  2. Khởi Tạo Yêu Cầu STK Push
  3. Phản Hồi Thành Công
  4. Callback Response
  5. Các Phản Hồi Lỗi Có Thể Xảy Ra
  6. Điều Kiện Đi Live
  7. Thực Hành Tốt Nhất
  8. Câu Hỏi Thường Gặp

1. Xác Thực và Tạo Token

Trước khi thực hiện bất kỳ yêu cầu API nào, bạn cần xác thực bằng Consumer KeyConsumer Secret mà bạn nhận được trong quá trình đăng ký.

Endpoint:

Copy
POST https://uat.buni.kcbgroup.com/token?grant_type=client_credentials

Headers:

Copy
Authorization: Basic {Base64(consumerKey:consumerSecret)}

Ví dụ Yêu cầu:

Copy
curl --location --request POST 'https://uat.buni.kcbgroup.com/token?grant_type=client_credentials' \
--header 'Authorization: Basic XENo...ZTdh' \
--data ''

Phản Hồi Thành Công:

Copy
{
  "access_token": "eyJ4NyRqV5xTbuwcwdi7...",
  "token_type": "Bearer",
  "expires_in": 3599
}

Tham Số Token

Tên Loại Bắt Buộc Mô Tả
access_token String Token bạn sẽ sử dụng trong tất cả các yêu cầu API tiếp theo dưới dạng Bearer token.
token_type String Luôn là "Bearer".
expires_in Số Thời gian tính bằng giây trước khi token hết hạn (thường là 3600 giây = 1 giờ).

2. Khởi Tạo Yêu Cầu STK Push

Khi bạn đã có token, bạn có thể bắt đầu một yêu cầu STK Push.

Endpoint:

Copy
POST https://uat.buni.kcbgroup.com/mm/api/request/1.0.0/stkpush

Headers:

Copy
Authorization: Bearer {access_token}
Content-Type: application/json

Ví dụ Yêu Cầu:

Copy
{
  "phoneNumber": "254708920430",
  "amount": "1",
  "invoiceNumber": "1123412831049",
  "sharedShortCode": true,
  "orgShortCode": "522522",
  "orgPassKey": "",
  "callbackUrl": "https://example.com/callback",
  "transactionDescription": "thanh toán học phí"
}

Tham Số Yêu Cầu

Tên Loại Bắt Buộc Mô Tả
phoneNumber String Số điện thoại của khách hàng ở định dạng 2547XXXXXXXX mà STK Push sẽ được gửi đến.
amount String Số tiền thanh toán bằng Shilling Kenya (KES).
invoiceNumber String Không Tham chiếu hóa đơn duy nhất cho hệ thống của bạn.
sharedShortCode Boolean Cho biết có sử dụng mã ngắn chia sẻ hay không.
orgShortCode String Không Số Paybill hoặc Till được chỉ định cho tổ chức của bạn.
orgPassKey String Không Mã khóa duy nhất cho tổ chức được KCB chỉ định.
callbackUrl String Endpoint máy chủ của bạn nơi kết quả thanh toán sẽ được gửi (phải là HTTPS).
transactionDescription String Không Mô tả ngắn gọn về giao dịch.

3. Phản Hồi Thành Công

Nếu yêu cầu hợp lệ, bạn sẽ nhận được phản hồi sau:

Copy
{
  "response": {
    "MerchantRequestID": "0c43-471f-b0cb-f80bcaee5e9e242149",
    "ResponseCode": "0",
    "CustomerMessage": "Thành công. Yêu cầu đã được chấp nhận để xử lý",
    "CheckoutRequestID": "ws_CO_17092025150413517708920430",
    "ResponseDescription": "Thành công. Yêu cầu đã được chấp nhận để xử lý"
  },
  "header": {
    "statusDescription": "Thành công. Yêu cầu đã được chấp nhận để xử lý",
    "statusCode": "0"
  }
}

Tham Số Phản Hồi

Tên Loại Mô Tả
MerchantRequestID String ID duy nhất cho yêu cầu được tạo bởi API.
CheckoutRequestID String ID giao dịch duy nhất để theo dõi thanh toán.
ResponseCode String 0 nghĩa là yêu cầu đã được chấp nhận; giá trị khác không là lỗi.
CustomerMessage String Thông điệp hiển thị cho khách hàng xác nhận yêu cầu đã được chấp nhận.
ResponseDescription String Thông tin chi tiết hơn về trạng thái phản hồi.
statusCode String Mã trạng thái API (0 = thành công).
statusDescription String Mô tả trạng thái dễ hiểu.

4. Callback Response

Khi khách hàng nhập PIN và hoàn tất giao dịch, API sẽ gửi callback đến callbackUrl mà bạn đã chỉ định.

Ví dụ Payload Callback:

Copy
{
  "Body": {
    "stkCallback": {
      "MerchantRequestID": "0c43-471f-b0cb-f80bcaee5e9e242149",
      "CheckoutRequestID": "ws_CO_17092025150413517708920430",
      "ResultCode": 0,
      "ResultDesc": "Yêu cầu dịch vụ đã được xử lý thành công.",
      "CallbackMetadata": {
        "Item": [
          {"Name": "Amount", "Value": 1},
          {"Name": "MpesaReceiptNumber", "Value": "TIH8BED1K4"},
          {"Name": "Balance"},
          {"Name": "TransactionDate", "Value": 20250917150425},
          {"Name": "PhoneNumber", "Value": 254708920430}
        ]
      }
    }
  }
}

Tham Số Callback

Tên Loại Mô Tả
ResultCode Số 0 = Thành công, mã khác chỉ ra lý do thất bại.
ResultDesc String Mô tả kết quả giao dịch.
Amount Số Số tiền khách hàng đã thanh toán.
MpesaReceiptNumber String ID giao dịch M-PESA.
TransactionDate Số Ngày và giờ giao dịch theo định dạng YYYYMMDDHHMMSS.
PhoneNumber Số Số điện thoại của khách hàng đã thực hiện thanh toán.

5. Các Phản Hồi Lỗi Có Thể Xảy Ra

Ví dụ Lỗi Mô Tả
{ "fault": { "code": 900901, "message": "Invalid Credentials", "description": "Invalid token" }} Token cung cấp không hợp lệ.
{ "fault": { "code": 900902, "message": "Missing Credentials", "description": "Provide credentials" }} Không cung cấp thông tin xác thực.
{ "response": {}, "header": { "statusDescription": "Bad Request - Invalid Remarks", "statusCode": "1" }} Thiếu hoặc không hợp lệ một số tham số.
Thành công: ResponseCode: "0" Yêu cầu đã được chấp nhận; chờ callback.

6. Điều Kiện Đi Live

Để đi live:

  • Mẫu thư yêu cầu chính thức cần thiết để đi live
  • Điền và nộp một thư yêu cầu đã ký tới buni@kcbgroup.com
  • Đối với bất kỳ câu hỏi và hỗ trợ nào khác, hãy liên hệ với buni@kcbgroup.com

7. Thực Hành Tốt Nhất

  • Kiểm Tra Lỗi: Luôn kiểm tra phản hồi từ API và xử lý lỗi một cách thích hợp.
  • Bảo Mật: Giữ bí mật các thông tin xác thực và không công khai chúng.
  • Thời Gian Xử Lý: Đảm bảo rằng bạn có một cơ chế cho phép xử lý thời gian trễ trong giao dịch.

8. Câu Hỏi Thường Gặp

1. API KCB M-PESA STK Push là gì?

KCB M-PESA STK Push là một API cho phép bạn gửi yêu cầu thanh toán đến điện thoại của khách hàng thông qua dịch vụ M-PESA.

2. Tôi cần thông tin gì để sử dụng API?

Bạn cần Consumer KeyConsumer Secret từ KCB để xác thực.

3. Làm thế nào để xử lý callback từ API?

Bạn cần thiết lập một endpoint mà API có thể gửi thông tin callback đến, và xử lý dữ liệu trong payload callback.

4. Những lỗi phổ biến khi tích hợp API là gì?

Một số lỗi phổ biến bao gồm thông tin xác thực không hợp lệ, thiếu tham số, và thời gian phản hồi quá lâu.


Nếu bạn cần bất kỳ sự trợ giúp nào liên quan đến tích hợp thanh toán, hãy liên hệ với chúng tôi!

Chúc bạn lập trình vui vẻ!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào