PHP code example of pkomjit / omise-php

1. Go to this page and download the library: Download pkomjit/omise-php library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

pkomjit / omise-php example snippets




use Omise\Omise;

$omise = new Omise([
    'public_key' => 'pkey_...',
    'secret_key' => 'skey_...',
]);

// Credit Card payment (with 3D Secure)
$charge = $omise->payWithCard($tokenId, 100.00, 'THB', 'https://your-site.com/3ds');

// PromptPay - QR Code payment
$charge = $omise->payWithPromptPay(100.00);
$qrCodeUrl = $omise->promptPay()->getQrCodeUrl($charge);

// TrueMoney QR - QR Code payment
$charge = $omise->payWithTruemoneyQR(100.00);
$qrCodeUrl = $omise->truemoneyQR()->getQrCodeUrl($charge);

// TrueMoney App - Redirect payment
$charge = $omise->payWithTruemoneyJumpApp(100.00, 'https://your-site.com/callback');
$authorizeUrl = $omise->truemoneyJumpApp()->getAuthorizeUri($charge);

// Rabbit LINE Pay - Redirect payment
$charge = $omise->payWithRabbitLinePay(100.00, 'https://your-site.com/callback');
$authorizeUrl = $omise->rabbitLinePay()->getAuthorizeUri($charge);

// Mobile Banking - App redirect payment
use Omise\PaymentMethods\MobileBanking;

$charge = $omise->payWithMobileBanking(
    MobileBanking::BANK_KBANK,
    100.00,
    'https://your-site.com/callback'
);
$authorizeUrl = $omise->mobileBanking()->getAuthorizeUri($charge);

// ShopeePay QR - Redirect payment
$charge = $omise->payWithShopeepayQR(100.00, 'THB', 'https://your-site.com/callback');
$authorizeUrl = $omise->shopeepayQR()->getAuthorizeUri($charge);

// ShopeePay App - App redirect payment
$charge = $omise->payWithShopeepayJumpApp(100.00, 'THB', 'https://your-site.com/callback');
$authorizeUrl = $omise->shopeepayJumpApp()->getAuthorizeUri($charge);

use Omise\Laravel\Facades\Omise;

// PromptPay - QR Code payment
$charge = Omise::payWithPromptPay(100.00);
$qrCodeUrl = Omise::promptPay()->getQrCodeUrl($charge);

// TrueMoney QR
$charge = Omise::payWithTruemoneyQR(100.00);

// Rabbit LINE Pay - Redirect payment
$charge = Omise::payWithRabbitLinePay(100.00, route('payment.callback'));
return redirect(Omise::rabbitLinePay()->getAuthorizeUri($charge));

// Mobile Banking - App redirect payment
use Omise\PaymentMethods\MobileBanking;

$charge = Omise::payWithMobileBanking(
    MobileBanking::BANK_KBANK,
    100.00,
    route('payment.callback')
);
return redirect(Omise::mobileBanking()->getAuthorizeUri($charge));

// ShopeePay QR - Redirect payment
$charge = Omise::payWithShopeepayQR(100.00, 'THB', route('payment.callback'));
return redirect(Omise::shopeepayQR()->getAuthorizeUri($charge));

// ShopeePay App - App redirect payment
$charge = Omise::payWithShopeepayJumpApp(100.00, 'THB', route('payment.callback'));
return redirect(Omise::shopeepayJumpApp()->getAuthorizeUri($charge));

use Omise\Omise;

class PaymentController extends Controller
{
    public function __construct(private Omise $omise) {}

    public function createPayment(Request $request)
    {
        $charge = $this->omise->payWithPromptPay($request->amount);

        return response()->json([
            'qr_code' => $this->omise->promptPay()->getQrCodeUrl($charge),
            'charge_id' => $charge->getId(),
        ]);
    }
}

// Create a charge with source
$charge = $omise->charges()->create([
    'amount' => 10000, // 100 THB in satang
    'currency' => 'THB',
    'source' => ['type' => 'promptpay'],
]);

// Retrieve a charge
$charge = $omise->charges()->retrieve('chrg_...');

// List charges
$charges = $omise->charges()->all([
    'limit' => 10,
    'order' => 'reverse_chronological',
]);

// Update a charge
$charge = $omise->charges()->update('chrg_...', [
    'description' => 'Updated description',
]);

// Expire a pending charge
$charge = $omise->charges()->expire('chrg_...');

// Create a PromptPay source
$source = $omise->sources()->createPromptPay(10000, 'THB');

// Create an internet banking source
$source = $omise->sources()->createInternetBanking('scb', 10000, 'THB');

// Create a TrueMoney source
$source = $omise->sources()->createTrueMoney(10000, '0812345678', 'THB');

// Generic source creation
$source = $omise->sources()->create([
    'type' => 'promptpay',
    'amount' => 10000,
    'currency' => 'THB',
]);

// Retrieve an event
$event = $omise->events()->retrieve('evnt_...');

// List events
$events = $omise->events()->all([
    'limit' => 25,
]);

// Check event type
if ($omise->events()->isSuccessfulCharge($event)) {
    // Handle successful payment
}

use Omise\Webhook\WebhookHandler;

// With signature verification (recommended)
$handler = WebhookHandler::withVerification('your_webhook_secret');

// Register handlers
$handler->onChargeComplete(function ($event, $data) {
    if ($data['status'] === 'successful') {
        // Payment successful
        $chargeId = $data['id'];
        // Update your order...
    }
});

// Process the webhook
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_OMISE_SIGNATURE'] ?? '';
$timestamp = $_SERVER['HTTP_OMISE_SIGNATURE_TIMESTAMP'] ?? '';

try {
    $handler->handle($payload, $signature, $timestamp);
} catch (\Omise\Exceptions\WebhookException $e) {
    http_response_code(400);
    exit('Invalid webhook');
}

http_response_code(200);

use Illuminate\Http\Request;
use Omise\Webhook\WebhookHandler;
use Omise\Exceptions\WebhookException;

class OmiseWebhookController extends Controller
{
    public function __construct(private WebhookHandler $handler) {}

    public function handle(Request $request)
    {
        $this->handler->onChargeComplete(function ($event, $data) {
            if ($data['status'] === 'successful') {
                // Handle successful payment
            } elseif ($data['status'] === 'failed') {
                // Handle failed payment
            }
        });

        try {
            $this->handler->handle(
                $request->getContent(),
                $request->header('Omise-Signature'),
                $request->header('Omise-Signature-Timestamp')
            );
        } catch (WebhookException $e) {
            return response()->json(['error' => $e->getMessage()], 400);
        }

        return response()->json(['success' => true]);
    }
}

$omise = new Omise([
    // Required
    'public_key' => 'pkey_...',
    'secret_key' => 'skey_...',

    // Optional
    'api_url' => 'https://api.omise.co',     // API base URL
    'api_version' => '2019-05-29',            // API version
    'mode' => 'live',                         // 'live' or 'test'
    'webhook_secret' => 'whsec_...',          // For webhook verification
    'timeout' => 30,                          // Request timeout in seconds
    'ssl_verify' => true,                     // Verify SSL certificates
    'default_currency' => 'THB',              // Default currency for payments
]);

$omise = Omise::fromEnvironment();

use Omise\Exceptions\OmiseException;
use Omise\Exceptions\ApiException;
use Omise\Exceptions\ConfigurationException;
use Omise\Exceptions\WebhookException;

try {
    $charge = $omise->payWithPromptPay(100.00);
} catch (ApiException $e) {
    // API error
    echo $e->getMessage();
    echo $e->getOmiseCode();     // e.g., 'invalid_charge'
    echo $e->getHttpStatusCode(); // e.g., 400
} catch (ConfigurationException $e) {
    // Configuration error (missing keys, etc.)
    echo $e->getMessage();
} catch (OmiseException $e) {
    // General Omise error
    echo $e->getMessage();
}

$omise = new Omise([
    'public_key' => 'pkey_test_...',
    'secret_key' => 'skey_test_...',
]);

// Check mode
if ($omise->isTestMode()) {
    // Running in test mode
}
bash
composer 
bash
php artisan vendor:publish --tag=omise-config