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