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

23 September 2021     MatumWeb

Omise อ่านว่า "โอมิเซะ" เป็นระบบชำระเงินออนไลน์ที่รองรับช่องทางการชำระเงินหลากหลาย เช่น บัตรเครดิต/เดบิต, TrueMoney Wallet, PromptPay, Alipay เป็นต้น คุณสามารถศึกษารายละเอียดเพิ่มเติมเกี่ยวกับ Omise Payment Method ได้ที่เว็บไซต์อย่างเป็นทางการของ Omise


ขั้นตอนการติดตั้งและใช้งาน Omise กับ CodeIgniter

1. ดาวน์โหลดไลบรารี Omise PHP คุณสามารถดาวน์โหลด omise.php ได้จาก Omise PHP GitHub Repository

2. โครงสร้างไฟล์ HTML และการเขียน JavaScript ตัวอย่างฟอร์ม HTML สำหรับการชำระเงินผ่าน TrueMoney Wallet:

3. โค้ด PHP สำหรับการจัดการการเรียกชำระเงิน


Code HTML


        <form id="checkoutTrueWallet" method="POST" action="omise/charge">

            <input type="hidden" name="omiseToken">

            <input type="hidden" name="omiseSource">

            <input type="text" name="money" value="300" class="form-control mb-3" placeholder="จำนวนเงิน">

            <button type="submit" id="checkoutButton" class="btn btn-primary">Checkout</button>

        </form>


    



Code ๋Javascript


    <script src="https://cdn.omise.co/omise.js"></script>

    <script>

        $(document).ready(function() {

            OmiseCard.configure({

                publicKey: "pkey_test_xxxxxx" // ใส่ Public Key ที่ได้จาก Omise

            });

            var button = document.querySelector("#checkoutButton");

            var form = document.querySelector("#checkoutTrueWallet");


            button.addEventListener("click", (event) => {

                event.preventDefault();

                OmiseCard.open({

                    amount: 300 * 100, // จำนวนเงิน (300) ต้องระบุเป็นหน่วยสตางค์

                    currency: "THB",

                    locale: "th",

                    defaultPaymentMethod: "truemoney", // วิธีการชำระเงิน

                    frameDescription: "ร้าน Matumweb",

                    image: "img/logo.img",

                    onCreateTokenSuccess: (nonce) => {

                        if (nonce.startsWith("tokn_")) {

                            form.omiseToken.value = nonce;

                        } else {

                            form.omiseSource.value = nonce;

                        }

                        form.submit();

                    }

                });

            });

        });

    </script>




Code PHP


require_once APPPATH.'third_party/omise-php/lib/Omise.php';


define('OMISE_API_VERSION', "2019-05-29");

define('OMISE_PUBLIC_KEY', "pkey_test_xxxxxx"); // ใส่ Public Key ที่ได้จาก Omise

define('OMISE_SECRET_KEY', "skey_test_xxxxxx"); // ใส่ Secret Key ที่ได้จาก Omise


class Omise extends MY_Controller {


    public function __construct() {

        parent::__construct();

    }


    public function charge() {

        $source = $this->input->post('omiseSource'); // รับค่า Source/Token ที่ส่งมาจาก Omise form

        $money = $this->input->post('money');

        $amount_conv = $money * 100; // แปลงเป็นหน่วยสตางค์


        // สร้าง return URI เพื่อใช้ในขั้นตอนการตรวจสอบ

        $topup_id = uniqid(); // สร้าง ID อ้างอิง (อาจใช้ Order ID)

        $return_uri = base_url("omise/check/".$topup_id);


        $charge = OmiseCharge::create([

            'amount' => $amount_conv,

            'currency' => "THB",

            'return_uri' => $return_uri,

            'source' => $source,

        ]);


        $charge_id = $charge['id'];

        $authorize_uri = $charge['authorize_uri'];


        // บันทึกข้อมูล charge_id และ topup_id ไว้ในฐานข้อมูล (ยังไม่ได้เขียนในตัวอย่างนี้)


        redirect($authorize_uri, 'refresh'); // ไปยังหน้าการยืนยันตัวตน

    }


    public function check($topup_id) {

        sleep(5); // รอให้ Omise ดำเนินการเสร็จสิ้น


        // ดึง charge_id จากฐานข้อมูลโดยอ้างอิงจาก topup_id

        $charge = OmiseCharge::retrieve($charge_id);


        if ($charge['status'] === 'successful') {

            // การชำระเงินสำเร็จ

        } else {

            // การชำระเงินล้มเหลวหรืออยู่ระหว่างรอดำเนินการ

        }

    }

}

?>