ไลบรารี PHP (omise-php)
ไลบรารี omise-php ให้อินเทอร์เฟซ PHP ที่สอดคล้องกับ PSR สำหรับ Omise API พร้อมการผสานรวม Laravel และ Symfony ที่ยอดเยี่ยม คุณสมบัติ PHP สมัยใหม่ และการจัดการข้อผิดพลาดที่ครอบคลุม
การติดตั้ง
การใช้ Composer (แนะนำ)
composer require omise/omise-php
composer.json
{
"require": {
"omise/omise-php": "^2.15"
}
}
ข้อกำหนด
- PHP 7.2 หรือสูงกว่า (รวมถึง PHP 8.x)
- ส่วนขยาย cURL
- ส่วนขยาย JSON
- Composer สำหรับการจัดการ dependency
เริ่มต้นอย่างรวดเร็ว
การกำหนดค่าพื้นฐาน
<?php
require_once 'vendor/autoload.php';
// กำหนดค่าด้วย API key ของคุณ
define('OMISE_SECRET_KEY', 'skey_test_123456789');
define('OMISE_PUBLIC_KEY', 'pkey_test_123456789');
// ตั้งค่าเวอร์ชัน API
define('OMISE_API_VERSION', '2019-05-29');
การกำหนดค่า Laravel
เผยแพร่ไฟล์กำหนดค่า:
php artisan vendor:publish --provider="Omise\OmiseบริการProvider"
กำหนดค่าใน .env:
# config/services.php
OMISE_SECRET_KEY=skey_test_123456789
OMISE_PUBLIC_KEY=pkey_test_123456789
OMISE_API_VERSION=2019-05-29
กำหนดค่าเซอร์วิส:
<?php
// config/services.php
return [
'omise' => [
'secret_key' => env('OMISE_SECRET_KEY'),
'public_key' => env('OMISE_PUBLIC_KEY'),
'api_version' => env('OMISE_API_VERSION', '2019-05-29'),
],
];
การกำหนดค่า Symfony
# config/packages/omise.yaml
omise:
secret_key: '%env(OMISE_SECRET_KEY)%'
public_key: '%env(OMISE_PUBLIC_KEY)%'
api_version: '2019-05-29'
การตรวจสอบสิทธิ์
ไลบรารีใช้ secret key ของคุณสำหรับการดำเนินการ API ทั้งหมด:
<?php
require_once 'vendor/autoload.php';
// ตัวเลือกที่ 1: การกำหนดค่าแบบ Global
define('OMISE_SECRET_KEY', getenv('OMISE_SECRET_KEY'));
define('OMISE_PUBLIC_KEY', getenv('OMISE_PUBLIC_KEY'));
// ตัวเลือกที่ 2: การกำหนดค่าแบบ Per-request
$charge = OmiseCharge::retrieve('chrg_test_123', 'skey_test_alternate');
การดำเนินการทั่วไป
การสร้างค่าธรรมเนียม
ด้วยโทเค็น
<?php
require_once 'vendor/autoload.php';
define('OMISE_SECRET_KEY', getenv('OMISE_SECRET_KEY'));
try {
$charge = OmiseCharge::create([
'amount' => 100000, // 1,000.00 THB (in smallest currency unit)
'currency' => 'THB',
'card' => 'tokn_test_123',
'description' => 'Order #1234',
'metadata' => [
'order_id' => '1234',
'customer_name' => 'John Doe'
]
]);
if ($charge['paid']) {
echo "Charge successful: " . $charge['id'];
} else {
echo "Charge failed: " . $charge['failure_message'];
}
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
ด้วย Type Declarations (PHP 7.4+)
<?php
declare(strict_types=1);
class Paymentบริการ
{
public function createCharge(
int $amount,
string $currency,
string $token,
array $metadata = []
): array {
return OmiseCharge::create([
'amount' => $amount,
'currency' => $currency,
'card' => $token,
'metadata' => $metadata
]);
}
}
// การใช้
$service = new Paymentบริการ();
$charge = $service->createCharge(
100000,
'THB',
'tokn_test_123',
['order_id' => '1234']
);
ด้วยลูกค้า
<?php
// สร้างค่าธรรมเนียมสำหรับลูกค้าที่มีอยู่
$charge = OmiseCharge::create([
'amount' => 50000,
'currency' => 'THB',
'customer' => 'cust_test_123',
'description' => 'Subscription payment'
]);
ด้วย 3D Secure
<?php
// สร้างค่าธรรมเนียมที่อาจต้องใช้ 3D Secure
$charge = OmiseCharge::create([
'amount' => 100000,
'currency' => 'THB',
'card' => 'tokn_test_123',
'return_uri' => 'https://example.com/payment/callback'
]);
if ($charge['authorized']) {
if (isset($charge['authorize_uri'])) {
// เปลี่ยนเส้นทางลูกค้าไปยัง authorize_uri สำหรับ 3D Secure
header('Location: ' . $charge['authorize_uri']);
exit;
} else {
// การเรียกเก็บเงินสำเร็จโดยไม่ต้องใช้ 3D Secure
processSuccessfulPayment($charge);
}
}
การดึงค่าธรรมเนียม
<?php
// ดึงข้อมูลค่าธรรมเนียมโดยใช้ ID
$charge = OmiseCharge::retrieve('chrg_test_123');
echo "Amount: " . $charge['amount'] . PHP_EOL;
echo "Currency: " . $charge['currency'] . PHP_EOL;
echo "Status: " . $charge['status'] . PHP_EOL;
echo "Paid: " . ($charge['paid'] ? 'Yes' : 'No') . PHP_EOL;
การแสดงรายชื่อค่าธรรมเนียม
<?php
// แสดงรายการค่าธรรมเนียมทั้งหมดพร้อม pagination
$charges = OmiseCharge::retrieve([
'limit' => 20,
'offset' => 0,
'order' => 'reverse_chronological'
]);
foreach ($charges['data'] as $charge) {
echo $charge['id'] . ": " . $charge['amount'] . " " . $charge['currency'] . PHP_EOL;
}
// แสดงรายการค่าธรรมเนียมพร้อมตัวกรอง
$weekAgo = (new DateTime('-7 days'))->format('Y-m-d');
$today = (new DateTime())->format('Y-m-d');
$recentCharges = OmiseCharge::retrieve([
'from' => $weekAgo,
'to' => $today
]);
การสร้างลูกค้า
<?php
// สร้างลูกค้าโดยไม่มีบัตร
$customer = OmiseCustomer::create([
'email' => 'customer@example.com',
'description' => 'John Doe',
'metadata' => [
'user_id' => '12345',
'account_type' => 'premium'
]
]);
echo "สร้างลูกค้าแล้ว: " . $customer['id'];