🎉 PhaJay is service now. Get Started

v1
ເຊື່ອມຕໍ່ Payment QR
Payment Callback

Payment Callback

PhaJay ມີ ສອງວິທີ ສໍາລັບການຮັບຂໍ້ມູນ payment callback ຫຼັງຈາກທຸລະກໍາສໍາເລັດຜົນ.

1. Subscribe (Realtime ຜ່ານ SocketIO)

ເພື່ອຮັບຂໍ້ມູນການຊໍາລະເງິນເມື່ອມີທຸລະກໍາການຊໍາລະ, ແພລດຟອມຂອງທ່ານຕ້ອງ subscribe ກັບ Payment, ໂດຍເຊື່ອມຕໍ່ໃນຮູບແບບ SocketIO ຕາມລິ້ງ ແລະ ຕ້ອງ subscribe ກັບ event ດັ່ງລຸ່ມນີ້:

  • url ສໍາລັບກວດສອບການ subscribe
https://portal.phajay.co/?key=<PAYMENT_Support_SECRET>

Request

ParametersTypeຄໍາອະທິບາຍ
urlStringລິ້ງທີ່ໃຊ້ຕິດຕາມທຸລະກໍາ ໂດຍເບິ່ງລາຍລະອຽດທຸກຄັ້ງ. ຕ້ອງມີ key ທີ່ມີຄ່າດຽວກັນກັບ SecretKey ຂອງທ່ານໃນ URL.
<PAYMENT_Support_SECRET>StringSecretKey ຂອງທ່ານສາມາດເອົາໄດ້ຈາກ PhaJay Payemnt Support portal (opens in a new tab).
join::<PAYMENT_Support_SECRET>StringSecretKey ຂອງທ່ານສາມາດເອົາໄດ້ຈາກ PhaJay Payemnt Support portal (opens in a new tab).

ຕົວຢ່າງໂຄ້ດ

Nodejs-socketio
const onSubscribePaymentSupport = (models) => {
    try {
        const _socketPaymentUrl = "https://payment-gateway.phajay.co/"
        const socket = io(_socketPaymentUrl);
 
        if (socket.connected) {
        console.log('Socket is already connected.');
        return; // ບໍ່ຈໍາເປັນຕ້ອງເຊື່ອມຕໍ່ຊໍ້າອີກ
        }
        // ເຊື່ອມຕໍ່ກັບ server
        socket.on('connect', () => {
        console.log('Connected to the payment Support server!');
        // Subscribe ກັບ event ທີ່ກໍານົດເອງ
        socket.on('join::' + process.env.SECRET_KEY, async (data) => {     // SECRET_KEY ເອົາຈາກ PhaJay Portal 
            console.log('Data received:', data);
        });
        });
        // ຈັດການ error ການເຊື່ອມຕໍ່ (ທາງເລືອກ)
        socket.on('connect_error', (error) => {
        console.error('Connection failed:', error);
        });
        return;
    } catch (error) {
        console.log({ error })
    }
}

2. Webhook Callback (ວິທີໃໝ່)

ເພື່ອຮັບຂໍ້ມູນການຊໍາລະເງິນໂດຍອັດຕະໂນມັດເມື່ອທຸລະກໍາສໍາເລັດ, ທ່ານຕ້ອງຕັ້ງ Webhook URL ໃນ portal ຂອງ PhaJay ໂດຍໄປທີ່ Settings > Webhook (ເບິ່ງຮູບລຸ່ມນີ້).

images

Payment server ຈະສົ່ງ callback response ໄປຫາ URL ທີ່ທ່ານຕັ້ງໄວ້ ພ້ອມລາຍລະອຽດຂອງທຸລະກໍາ.

🔐 ກ່ອນທີ່ຈະເຊື່ອຖືຂໍ້ມູນນີ້, ໃຫ້ກວດສອບວ່າ request ມາຈາກ PhaJay ແທ້ — ເບິ່ງ Verify Webhook Signature.

  • Endpoint URL: URL ທີ່ຈະໃຊ້ຮັບການແຈ້ງເຕືອນການຊໍາລະ, ຕົວຢ່າງ https://yourdomain.com/payment.
  • Description: ໝາຍເຫດ ຫຼື ຊື່ເອີ້ນຂອງ webhook ຂອງທ່ານ (ບໍ່ບັງຄັບ, ໄວ້ອ້າງອີງສໍາລັບທ່ານເອງ).

ເມື່ອການຊໍາລະສໍາເລັດຜົນ, ລະບົບຈະ Response ຂໍ້ມູນທຸລະກໍາ (payload) ໄປຫາ webhook endpoint ຂອງທ່ານໃນຮູບແບບ JSON.

ຂໍ້ມູນ Response

FieldTypeຄໍາອະທິບາຍ
messageStringຂໍ້ຄວາມຕອບກັບຂອງການເອີ້ນ API.
refNoStringເລກອ້າງອີງທີ່ກໍານົດໃຫ້ທຸລະກໍາ.
exReferenceNoStringເລກອ້າງອີງພາຍນອກທີ່ກ່ຽວຂ້ອງກັບທຸລະກໍາ.
merchantNameStringຊື່ຂອງຮ້ານຄ້າ (merchant) ທີ່ກ່ຽວຂ້ອງກັບທຸລະກໍາ.
descriptionStringຄໍາອະທິບາຍກ່ຽວກັບທຸລະກໍາ (ຂໍ້ຄວາມທີ່ merchant ກໍານົດເອງ).
paymentMethodStringວິທີການຊໍາລະທີ່ໃຊ້ໃນທຸລະກໍາ (ເຊັ່ນ: BCEL, OnePay).
txnDateTimeStringວັນທີ ແລະ ເວລາທີ່ດໍາເນີນທຸລະກໍາ. ຮູບແບບ: DD/MM/YYYY HH:mm:ss.
txnAmountIntegerຈໍານວນເງິນຂອງທຸລະກໍາ.
billNumberStringເລກບິນທີ່ບໍ່ຊໍ້າກັນ ທີ່ກ່ຽວຂ້ອງກັບທຸລະກໍາ.
sourceAccountStringເລກບັນຊີຕົ້ນທາງທີ່ຕັດເງິນ.
sourceNameStringຊື່ເຈົ້າຂອງບັນຊີຕົ້ນທາງ.
sourceCurrencyStringສະກຸນເງິນຂອງທຸລະກໍາ.
userIdStringລະຫັດທີ່ບໍ່ຊໍ້າກັນຂອງຜູ້ໃຊ້ທີ່ເລີ່ມທຸລະກໍາ.
statusStringສະຖານະປັດຈຸບັນຂອງທຸລະກໍາ (ເຊັ່ນ: PAYMENT_COMPLETED).
transactionIdStringລະຫັດທີ່ບໍ່ຊໍ້າກັນຂອງທຸລະກໍາ, ບໍ່ຊໍ້າກັນ.
tag1–tag6Stringfield ກໍານົດເອງ (ບໍ່ບັງຄັບ) ສໍາລັບຕິດ tag ເພີ່ມເຕີມ (ວ່າງຖ້າບໍ່ໃຊ້).

ຕົວຢ່າງຂໍ້ມູນ Response

application/json
{
    "billNumber": "81f8b0a6-9277-45e5-a6d2-8c1bd248bedf",
     "description": "short is good",
     "exReferenceNo": "YQ75K0RG6AXG",
     "merchantName": "Lailao Payment",
     "message": "SUCCESS",
     "paymentMethod": "BCEL",
     "refNo": 580960503,
     "sourceAccount": "202509232428318",
     "sourceCurrency": "LAK",
     "sourceName": "ເຢີກື ເຊ່ຍເຊີ",
     "status": "PAYMENT_COMPLETED",
     "tag1": "",
     "tag2": "",
     "tag3": "",
     "tag4": "",
     "tag5": "",
     "tag6": "",
     "transactionId": "81f8b0a6-9277-45e5-a6d2-8c1bd248bedf",
     "txnAmount": 1,
     "txnDateTime": "23/09/2025 11:37:55",
     "userId": "683ae8e8912ff3f68e2faa78"
}

⚠️ ໝາຍເຫດ:
ແຕ່ລະທະນາຄານອາດສົ່ງ field ຕອບກັບແຕກຕ່າງກັນ.
ຢ່າງໃດກໍຕາມ, field ມາດຕະຖານຂອງລະບົບຕໍ່ໄປນີ້ຮັບປະກັນວ່າມີສະເໝີ:

  • paymentMethod → ທະນາຄານ/ວິທີການຊໍາລະທີ່ໃຊ້ (ເຊັ່ນ: BCEL, JDB, LDB).
  • transactionId → ລະຫັດທຸລະກໍາທີ່ບໍ່ຊໍ້າກັນ ທີ່ລະບົບສ້າງຂຶ້ນ.
  • txnAmount → ຈໍານວນເງິນທີ່ຊໍາລະ.

field ອື່ນໆ ທັງໝົດອາດແຕກຕ່າງກັນຕາມແຕ່ລະທະນາຄານ ແລະ ຄວນຈັດການຕາມຄວາມເໝາະສົມ.

ອັບເດດຫຼ້າສຸດ: 1 ເດືອນກ່ອນ