KBANK Open API คือ ระบบที่ถูกพัฒนาขึ้นมาเพื่อให้เราสามารถทำธุรกรรมทางการเงินในรูปแบบต่าง ๆ เช่น การชำระเงิน การเติมเงิน การดูรายงานรายการเดินบัญชี กับทางธนาคารกสิกรได้
ในอดีตการที่เราจะทำธุรกรรมทางการเงินในรูปแบบต่าง ๆ จำเป็นต้องใช้บริการของธนาคารนั้น ๆ เป็นหลัก เช่น จะตรวจสอบ Transactions ยอดเงินในบัญชี รายการโอน ถอน อาจจะต้องเข้าแอพ K Plus หรือเข้า K-Cyber Internet Banking เพื่อดูรายการ รายวัน รายเดือน
KBANK Open API จะเข้ามาช่วยให้เราสามารถทำสิ่งเหล่านั้นได้ โดยที่ไม่ขึ้นกับซอฟต์แวร์ของธนาคาร เราจะสามารถตรวจสอบยอดเงินในบัญชี รายการเดินบัญชี ผ่าน Mobile Apps หรือ หน้าเว็บไซต์ของเราเอง เราจะสามารถ Generate QR Code สำหรับการชำระเงินขึ้นมาเองได้ เป็นต้น
KBANK Open API แบ่งเป็น 5 บริการหลัก ๆ คือ
- QR PAYMENT ( สำหรับสร้าง QR Code ชำระเงิน )
- ACCOUNT / CASA ( ตรวจสอบยอดเงิน ธุรกรรมการเงินล่าสุด )
- CREDIT CARD API ( ข้อมูลบัตรเครดิต คะแนนสะสม ข้อมูลธุรกรรมบางประเภท )
- KBANK OPEN API INFORMATION ( ข้อมูลที่ตั้งตู้ ATM สาขาธนาคาร และอัตราแลกเปลี่ยน )
- PAY WITH K+ ( เอพีไอ การชำระเงินที่เชื่อมต่อกับแอพ K Plus )
จาก 5 บริการหลัก ตอนนี้ยังเปิดให้ใช้งานระบบเดียว คือ QR PAYMENT เท่านั้นนะครับ
วิธีการใช้งาน KBANK QR PAYMENT เบื้องต้น ( Test Mode )
- สมัครสมาชิก Kbank Open API ที่ https://apiportal.kasikornbank.com/open-api/register
- เข้าสู่ระบบ เลือก Create New App ติ๊กเลือกที่ QR Payment

- กรอกข้อมูลให้ครบ กด Create New App ไปที่หน้า Dashbaord

- สิ่งที่เราต้องใช้หลัก ๆ จากหน้า Dashboard มีอยู่ 3 อย่างครับ
- Merchant Id
- Partner Id
- Client Secret
- จากนั้นให้สร้าง php ไฟล์สำหรับทดสอบการ Request/Response เขียนโค๊ดส่ง json post data ด้วย curl ดังนี้ครับ
$ch = curl_init();
$form_field = array();
$form_field['partnerTxnUid'] = substr(uniqid(rand(), true), 0, 15);
$form_field['partnerId'] = 'ใส่ Partner ID ';
$form_field['partnerSecret'] = 'ใส่ Client Secret';
$form_field['requestDt'] = '2018-01-03T12:30:00+07:00';
$form_field['merchantId'] = 'ใส่ Merchant ID ดูที่ User Info';
$form_field['terminalId'] = 'term1';
$form_field['qrType'] = '3';
$form_field['txnAmount'] = 100.50;
$form_field['txnCurrencyCode'] = 'THB';
$form_field['reference1'] = 'INV001';
$form_field['reference2'] = NULL;
$form_field['reference2'] = NULL;
$form_field['reference4'] = NULL;
$form_field['metadata'] = 'ปลาร้าสับแพคถุง 100 บาท ยั่ว ๆ จ้าาา';
$post_string = json_encode($form_field);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Cache-Control:no-cache')
);
curl_setopt($ch, CURLOPT_URL, 'https://apiportal.kasikornbank.com:12002/pos/qr_request');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
$response = json_decode($data);
partnerTxnUid คือ unique id ที่เราสร้างขึ้นมาเองเพื่อกำกับไว้ในทุก ๆ ครั้งที่เราส่งไปขอ qrCode
ทดสอบ Run Script ถ้าข้อมูลที่ส่งไปถูกต้อง เราจะได้ข้อมูลที่ Return กลับมา errorCode เป็น 00 และได้ข้อมูล qrCode กลับมา ข้อมูลส่วนนี้สามารถนำไป generate QR code เพื่อใช้ในการ scan ชำระเงินได้
ตัวอย่าง Response Code
{
"partnerTxnUid": "QRH001030118001",
"partnerId": "POS001",
"statusCode": "00",
"errorCode": null,
"errorDesc": null,
"accountName": "นายสมชาย รักกสกิ ร",
"qrCode":
"00020101021230690016A000000677010112011301055580807780211LEX110000020313LE
X026039306931590016A00000067701011301030040211LEX110000020413LEX02603930695
303764540512.815802TH6304A2C1"
}
แต่การทดสอบของเราเป็นการทดสอบในโหมด sandbox นะครับ ถ้าเราทดสอบโดยการใช้แอพ K+ สแกน QR code จะยังไม่สามารถใช้งานได้จริง จนกว่าเราจะลงทะเบียนเปิดร้านจริง ๆ ซึ่งการลงทะเบียน จากวันที่ทดสอบ Kbank Open API เปิดให้ลงทะเบียนเฉพาะนิติบุคคลเท่านั้นครับ
ขั้นตอนการ Generate QR Code
ดาวน์โหลด QR code generator library ได้ที่ https://github.com/dwisetiyadi/CodeIgniter-PHP-QR-Code
สำหรับ codeigniter วาง library ไว้ที่ application/library และเรียกใช้งาน $this->load->library(‘ciqrcode’); สำหรับ pure php เรียกใช้งาน include ‘ciqrcode.php’;
การใช้งานหลังจากที่ได้ data ที่ response มาจาก open api ให้เรียกใช้งานหลังจากได้รับข้อมูล ตัวอย่างตามโค๊ดด้านล่าง
$response = json_decode($data);
$params['data'] = $response->qrCode;
$params['level'] = 'H';
$params['size'] = 10;
$params['savename'] = $img = 'qrcode/'.$response->partnerTxnUid.'.png';
$this->ciqrcode->generate($params);
ทดสอบการแสดงผลรูป QR Code
echo '<img src="'.$img.'"/>';
ผลลัพธ์ที่ได้ ทุก ๆ ครั้ง ที่เราส่ง request ไป จะได้ qr code ตัวใหม่มาเสมอ เราสามารถใช้ partnerTxnUid ในการตั้งชื่อรูปเพื่อที่จะระบุได้ว่า qr code ตัวนี้เป็นการ request ครั้งที่เท่าไหร่
