Omise อ่านว่า โอมิเซะ คือ ระบบชำระเงินออนไลน์ ( Online Payment Gateway ) รองรับช่องทางการชำระเงินที่หลากหลาย บัตรเครดิต / เดบิต Truemoney Wallet / PromptPay / Alipay เป็นต้น ดูเพิ่มเติมได้ที่ Omise Payment Method
สิ่งที่ควรทราบก่อนใช้งาน Omise
- โอมิเซะ มี SDK ให้ใช้งานหลากหลายภาษา เช่น Go, Java, PHP, .Net, Python, NodeJS, Ruby
- โอมิเซะ มี Plug-In พร้อมสำหรับระบบ CMS ค่อนข้างครบ Magento, OpenCart, Shopify, PrestaShop, WooCommerce
- โอมิเซะ คิดค่าธรรมเนียม 3.65% ต่อรายการ ( Transaction )
- คุณสามารถสมัครใช้งาน โอมิเซะ ได้ทั้งในนามบุคคลธรรมดา และ นิติบุคคล ( บริษัทจดทะเบียน ) ใช้เวลาเบ็ดเสร็จประมาณ 2 – 4 สัปดาห์ ประมาณการณ์เวลาจากตัวผู้เขียนเองที่ได้ทดลองสมัครทั้ง 2 แบบแล้ว
- สามารถสมัครสมาชิกและใช้งานในโหมดทดสอบ ( Sandbox Mode ) ได้ทันที หากต้องการใช้งานในโหมดใช้งานจริง ( Live Mode ) ต้องยื่นเอกสารเข้าไปตรวจสอบก่อน
- ค่าธรรมเนียมการโอน หมายถึง กรณีที่เราต้องการโอนเงินจากบัญชี Omise ไปยังไปบัญชีธนาคารอื่น ถ้ายอดโอนไม่เกิน 2,000,000 บาท จะเสียค่าธรรมเนียม 30 บาทต่อรายการ ถ้ายอดเกิน 2,000,000 บาท จะเสียค่าธรรมเนียมการโอน 150 บาท
เริ่มติดตั้งใช้งาน Omise กับ Codeigniter
- สามารถติดตั้งได้ทั้งกับ PHP ธรรมดา และ Codeigniter นะครับ ติดตั้ง Omise PHP Libary ตัวนี้ https://github.com/omise/omise-php ติดตั้งไว้ที่ application/third_party สามารถติดตั้งได้ทั้งแบบผ่าน composer หรือ download ลงมาติดตั้งแบบ manual
- กรณีติดตั้งผ่าน composer จะได้โครงสร้างและวิธีเรียกใช้งานแบบนี้ จากภาพให้ดูฝั่งขวามือนะครับ ในโฟลเด้อ omise-php

1 |
require_once APPPATH.'third_party/omise-php/vendor/autoload.php'; |
- กรณีติดตั้งแบบ Manually คือ ดาวน์โหลดมาและวางไฟล์ไว้ใน third_party จะได้โครงสร้าง และ วิธีเรียกใช้งานแบบนี้ จากภาพให้ดูฝั่งขวามือนะครับ ในโฟลเด้อ omise-php

1 |
require_once APPPATH.'third_party/omise-php/lib/Omise.php'; |
สร้าง UI การชำระเงินด้วยบัตรเครดิต / เดบิต
- ตัว Omise เองมี UI ต้นแบบที่สวยงามและน่าเชื่อถืออยู่แล้ว เราสามารถใช้ต้นแบบของ Omise ได้เลย สร้างไฟล์ payment_view.php และเขียนคำสั่งใน body ดังนี้
ส่วนของ html ในไฟล์ payment_view.php
1 2 3 4 5 6 |
// ไฟล์ payment_view.php ส่วนของ form การกรอกข้อมูลบัตรเครดิต <form id="checkoutForm" method="POST" action="<?php echo base_url(" payment="" create");="" ?="">"> <input type="hidden" name="omiseToken"> <input type="hidden" name="omiseSource"> <button type="submit" id="checkoutButton">ชำระด้วยบัตรเครดิต</button> </form> |
ส่วนของ Javascript ในไฟล์ payment_view.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<script type="text/javascript" src="https://cdn.omise.co/omise.js"></script> <script> OmiseCard.configure({ publicKey: "pkey_test_5k2raw4evpbv78fzhcy", // เข้าสู่ระบบของ Omise และไปที่ API -> Keys คีย์นี้จะเป็นตัวบอกว่า ชำระเข้าบัญชีของใคร }); var button = document.querySelector("#checkoutButton"); var form = document.querySelector("#checkoutForm"); button.addEventListener("click", (event) => { event.preventDefault(); OmiseCard.open({ frameLabel:"[ชื่อเว็บไซต์ที่ให้บริการ]", image:'[โลโก้ของร้าน]', amount: '[จำนวนเงิน]', // เช่น ถ้าชำระ 20 บาท ต้องใส่เป็น 2000; currency: "THB",// สกุลเงิน defaultPaymentMethod: "credit_card", // ช่องทางการชำระเงิน ค่าเริ่มต้นเป็น credit_card onCreateTokenSuccess: (nonce) => { if (nonce.startsWith("tokn_")) { form.omiseToken.value = nonce; } else { form.omiseSource.value = nonce; }; form.submit(); } }); }); </script> |
- สร้าง Controller ตั้งชื่อว่า Payment.php และอ่านอธิบายแต่ละส่วนใน comment code ด้านล่างเลยครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
require_once APPPATH.'third_party/omise-php/vendor/autoload.php'; //require_once APPPATH.'third_party/omise-php/lib/Omise.php';// ถ้าติดตั้ง ธรรมดาให้ เรียกใช้งานแบบนี้ define('OMISE_API_VERSION', '2019-05-29'); // เข้าระบบ omise และคลิกที่อีเมล คลิก api version เลือกระหว่าง ทดสอบ กับ ใช้งานจริง define('OMISE_PUBLIC_KEY', 'pkey_test'); define('OMISE_SECRET_KEY', 'skey_test'); class Payment extends MX_Controller { public function __construct(){ parent::__construct(); } public function index(){ $this->load->view('payment_view'); } public function create(){ $post = $this->input->post(); $omiseToken = $post['omiseToken']; // omiseToken จะถูกส่งมาอัตโนมัติผ่าน omise form $return_uri = base_url("payment/complete/".$ref_id); // ในขั้นตอนนี้ให้สร้าง ref_id สำหรับอ้างอิงไว้ใช้ในขั้นตอนต่อไป อาจจะใช้เป็น order id ก็ได้ ประมาณว่า order นี้กำลังจะชำระเงิน $charge = OmiseCharge::create(array( 'amount' => $amount, 'currency' => 'THB', 'card' => $omiseToken, 'return_uri' => $return_uri, // return_uri คือ uri สุดท้ายที่จะกลับมาที่หน้าเว็บไซต์ของเรา )); $charge_id = $charge['id']; $authorize_uri = $charge['authorize_uri']; // จังหวะนี้สำคัญ ก่อนที่จะ redirect ไปจากหน้านี้ ให้บันทึก ref_id และ charge_id ไว้ในฐานข้อมูลของเรา // เพื่อใช้อ้างอิงว่า transaction นี้ สำเร็จ หรือ ไม่สำเร็จ redirect($authorize_uri,'refresh'); // เราจะรีไปยังหน้าการยืนยันตัวตนผ่านระบบ OTP ของธนาคารนั้น ๆ } public function complete(){ $ref_id = $this->input->get("ref_id"); // ใช้ ref_id คิวรี่หา charge_id แล้วใช้หาค่า status ว่า transaction นี้สำเร็จหรือไม่สำเร็จ $charge = OmiseCharge::retrieve($charge_id); if($charge['status'] === 'successful') { // เงินเข้าบัญชีเรียบร้อยแล้ว }else{ // อาจจะ failed หรือ pending อยู่ } } } |
- เราสามารถทดสอบการทำงานได้ โดยเปิดไปที่ Payment Controller เช่น http://localhost:8080/payment
- กรณีที่เราจะเปิดใช้งาน การชำระเงินจริง ๆ ต้องเข้าระบบของ omise และเปลี่ยน mode จาก Sandbox เป็น Live ก่อน และนำ publicKey และ secretKey มาเปลี่ยนใน Code ของเราด้วย
ทดสอบใช้งานระบบได้ที่ www.ivomaker.com สมัครสมาชิกและเลือกเติมเครดิต