ติดตั้งใช้งาน Omise [ PHP ] ระบบชำระเงินออนไลน์

ติดตั้งใช้งาน-Omise-PHP-ระบบชำระเงินออนไลน์
ติดตั้งใช้งาน-Omise-PHP-ระบบชำระเงินออนไลน์

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

สร้าง​ UI การชำระเงินด้วยบัตรเครดิต / เดบิต

  • ตัว Omise เองมี UI ต้นแบบที่สวยงามและน่าเชื่อถืออยู่แล้ว เราสามารถใช้ต้นแบบของ Omise ได้เลย สร้างไฟล์ payment_view.php และเขียนคำสั่งใน body ดังนี้

ส่วนของ html ในไฟล์ payment_view.php

// ไฟล์ payment_view.php ส่วนของ form การกรอกข้อมูลบัตรเครดิต
">

ส่วนของ Javascript ในไฟล์ payment_view.php



  • สร้าง Controller ตั้งชื่อว่า Payment.php และอ่านอธิบายแต่ละส่วนใน comment code ด้านล่างเลยครับ
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 สมัครสมาชิกและเลือกเติมเครดิต

Leave a Reply