ndradev/okeconnect-php-client
Composer 安装命令:
composer require ndradev/okeconnect-php-client
包简介
PHP Client untuk OkeConnect H2H API - Parsing lengkap untuk transaksi, webhook, dan price list
关键字:
README 文档
README
Package PHP untuk integrasi API OkeConnect H2H dengan parsing lengkap untuk semua response.
Requirement: PHP 8.2 atau lebih baru
Developer: NdraDeveloper
Instalasi
composer require ndradev/okeconnect-php-client
Daftar Contoh Penggunaan
Tersedia 10 file contoh penggunaan lengkap di folder examples/:
| File | Deskripsi |
|---|---|
01_transaction.php |
Transaksi pulsa/data (fixed denom) |
02_transaction_open_denom.php |
Transaksi e-wallet (open denom/bebas nominal) |
03_check_status.php |
Cek status transaksi |
04_parse_webhook.php |
Parse webhook callback |
05_get_price_list.php |
Ambil semua daftar harga |
06_get_price.php |
Ambil harga satu produk |
07_find_product_by_code.php |
Cari produk berdasarkan kode |
08_find_product_by_category.php |
Cari produk berdasarkan kategori |
09_find_product_by_keterangan.php |
Cari produk berdasarkan keterangan |
10_find_product_by_status.php |
Cari produk berdasarkan status |
webhook.php |
Handler webhook untuk callback |
Cara Penggunaan
1. Inisialisasi Client
use OkeConnect\OkeConnect; $oke = new OkeConnect( memberId: 'OK00123', pin: '123456', password: 'secret' ); OkeConnect::setInstance($oke);
2. Menggunakan Helper Function
oke_connect('OK00123', '123456', 'secret'); $response = oke_transaction('T1', '089660522887', 'REF123');
Fitur Transaksi
Transaksi Fixed Denom (Pulsa/Data)
use OkeConnect\OkeConnectException; try { $response = $oke->transaction('T1', '089660522887', 'TRX123'); echo $response->transactionId; echo $response->refId; echo $response->provider; echo $response->nominal; echo $response->destination; if ($response->isSuccessful()) { echo "Berhasil"; echo $response->serialNumber; } if ($response->isFailed()) { echo "Gagal: " . $response->failureReason; } } catch (OkeConnectException $e) { echo "Error: " . $e->getUserMessage(); }
Transaksi Open Denom (E-Wallet)
try { $response = $oke->transactionOpenDenom('BBSDN', '085736044280', 50000, 'EW123'); echo $response->nominal; echo $response->transactionId; } catch (OkeConnectException $e) { if ($e->getCode() === OkeConnectException::INVALID_PARAMETER) { echo "Nominal harus antara 10.000 - 10.000.000"; } }
Cek Status Transaksi
try { $status = $oke->checkStatus('T5', '08980204060', 'REF123'); echo $status->getStatusText(); if ($status->isSuccessful()) { echo $status->serialNumber; echo $status->price; } if ($status->isFailed()) { echo $status->failureReason; } if ($status->isPending()) { echo "Transaksi masih pending"; } if ($status->isNoData()) { echo "Data tidak ditemukan"; } } catch (OkeConnectException $e) { echo "Error: " . $e->getUserMessage(); }
Parse Webhook Callback
try { $callback = $oke->parseWebhook($_GET); echo $callback->transactionId; echo $callback->refId; echo $callback->getStatusText(); if ($callback->isSuccessful()) { echo $callback->serialNumber; echo $callback->date; echo $callback->time; } if ($callback->isFailed()) { echo $callback->failureReason; } } catch (OkeConnectException $e) { echo "Error: " . $e->getUserMessage(); }
Price List dan Pencarian Produk
Ambil Semua Price List
try { $products = $oke->getPriceList(); foreach ($products as $product) { echo $product->code; echo $product->description; echo $product->getFormattedPrice(); if ($product->isAvailable()) { echo "Tersedia"; } } } catch (OkeConnectException $e) { echo "Error: " . $e->getUserMessage(); }
Cari Produk Berdasarkan Kode
$produk = $oke->findProductByCode('SMDC150'); if ($produk) { echo $produk->description; echo $produk->getFormattedPrice(); }
Cari Produk Berdasarkan Kategori
$products = $oke->findProductByCategory('SMARTFREN'); foreach ($products as $product) { echo $product->code . ": " . $product->description; }
Cari Produk Berdasarkan Keterangan
$products = $oke->findProductByKeterangan('30GB'); foreach ($products as $product) { echo $product->code . ": " . $product->description; }
Cari Produk Berdasarkan Status
$available = $oke->findProductByStatus('1'); $unavailable = $oke->findProductByStatus('0');
Ambil Harga Produk
$harga = $oke->getPrice('SMDC150');
Helper Functions
$response = oke_transaction('T1', '089660522887', 'REF123'); $response = oke_topup('BBSDN', '085736044280', 50000, 'REF123'); $status = oke_check_status('T5', '08980204060', 'REF123'); $callback = oke_webhook($_GET); $products = oke_products(); $product = oke_product('SMDC150'); $price = oke_price('SMDC150'); $product = oke_find_product_by_code('SMDC150'); $products = oke_find_product_by_category('SMARTFREN'); $products = oke_find_product_by_keterangan('30GB'); $products = oke_find_product_by_status('1');
Webhook Handler
<?php require_once 'vendor/autoload.php'; use OkeConnect\OkeConnect; use OkeConnect\OkeConnectException; header('Content-Type: application/json'); if (empty($_GET['message'])) { http_response_code(400); echo json_encode(['error' => 'Missing message parameter']); exit; } try { $oke = new OkeConnect('OK00123', '123456', 'secret'); $callback = $oke->parseWebhook($_GET); if ($callback->isSuccessful()) { echo json_encode([ 'success' => true, 'ref_id' => $callback->refId, 'transaction_id' => $callback->transactionId, 'serial_number' => $callback->serialNumber, ]); } if ($callback->isFailed()) { echo json_encode([ 'success' => false, 'ref_id' => $callback->refId, 'failure_reason' => $callback->failureReason, ]); } } catch (OkeConnectException $e) { http_response_code(400); echo json_encode([ 'success' => false, 'error' => $e->getUserMessage(), ]); }
Exception Handling
OkeConnectException Codes
| Code | Constant | Keterangan |
|---|---|---|
| 1001 | MISSING_CREDENTIALS | Kredensial tidak lengkap |
| 1002 | INVALID_PARAMETER | Parameter tidak valid |
| 1003 | REQUEST_FAILED | Gagal connect ke server |
| 1004 | PARSE_ERROR | Gagal parse response |
| 1005 | TRANSACTION_FAILED | Transaksi gagal |
| 1006 | INSUFFICIENT_BALANCE | Saldo tidak cukup |
| 1007 | PRODUCT_NOT_FOUND | Produk tidak ditemukan |
Cara Menggunakan Exception
try { $response = $oke->transaction('T1', '089660522887', 'REF123'); } catch (OkeConnectException $e) { echo $e->getCode(); echo $e->getUserMessage(); echo $e->getMessage(); print_r($e->getContext()); if ($e->isCredentialError()) { echo "Periksa kredensial Anda"; } if ($e->isTransactionError()) { echo "Transaksi gagal"; } }
Validation
Ref ID Validation
- Tidak boleh kosong
- Maksimal 50 karakter
Phone Number Validation
- Tidak boleh kosong
- Harus 10-15 digit angka
Qty Validation (Open Denom)
- Minimal 10.000
- Maksimal 10.000.000
Response Models
TransactionResponse
| Property | Tipe | Keterangan |
|---|---|---|
| transactionId | string | null |
| refId | string | null |
| provider | string | null |
| nominal | string | null |
| productCode | string | null |
| destination | string | null |
| status | string | null |
| price | float | null |
| time | string | null |
| serialNumber | string | null |
| failureReason | string | null |
Methods:
isProcessing()- Cek apakah sedang diprosesisSuccessful()- Cek apakah berhasilisFailed()- Cek apakah gagalgetStatusText()- Dapatkan teks statustoArray()- Convert ke arraytoJson()- Convert ke JSON
StatusCheckResponse
| Property | Tipe | Keterangan |
|---|---|---|
| refId | string | null |
| provider | string | null |
| nominal | string | null |
| productCode | string | null |
| destination | string | null |
| transactionTime | string | null |
| status | string | null |
| serialNumber | string | null |
| price | float | null |
| failureReason | string | null |
| transactionId | string | null |
Methods:
isSuccessful()- Cek apakah suksesisFailed()- Cek apakah gagalisPending()- Cek apakah pendingisNoData()- Cek apakah tidak ada datagetStatusText()- Dapatkan teks statustoArray()- Convert ke arraytoJson()- Convert ke JSON
WebhookCallback
| Property | Tipe | Keterangan |
|---|---|---|
| transactionId | string | null |
| refId | string | null |
| provider | string | null |
| nominal | string | null |
| productCode | string | null |
| destination | string | null |
| status | string | null |
| serialNumber | string | null |
| price | float | null |
| date | string | null |
| time | string | null |
| failureReason | string | null |
Methods:
isSuccessful()- Cek apakah suksesisFailed()- Cek apakah gagalgetStatusText()- Dapatkan teks statusgetFullDateTime()- Dapatkan tanggal + waktutoArray()- Convert ke arraytoJson()- Convert ke JSON
PriceListItem
| Property | Tipe | Keterangan |
|---|---|---|
| code | string | Kode Produk |
| description | string | Deskripsi |
| product | string | Nama Produk |
| category | string | Kategori |
| price | float | Harga |
| status | string | Status (1=tersedia) |
Methods:
isAvailable()- Cek ketersediaangetFormattedPrice()- Format harga RupiahgetCategoryShort()- Nama kategori pendektoArray()- Convert ke arraytoJson()- Convert ke JSON
Testing
composer install vendor/bin/phpunit
Changelog
Lihat CHANGELOG.md untuk riwayat perubahan lengkap.
License
MIT License
Developer
NdraDeveloper
- GitHub: https://github.com/NdraDev
- Package: https://github.com/NdraDev/okeconnect-php-client
- Packagist: https://packagist.org/packages/ndradev/okeconnect-php-client
Support
Jika ada pertanyaan atau masalah, silakan buat issue di: https://github.com/NdraDev/okeconnect-php-client/issues
ndradev/okeconnect-php-client 适用场景与选型建议
ndradev/okeconnect-php-client 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 6 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 02 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「api」 「indonesia」 「ppob」 「pulsa」 「okeconnect」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ndradev/okeconnect-php-client 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ndradev/okeconnect-php-client 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ndradev/okeconnect-php-client 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
iPay88 integration with Magento 2
A PSR-7 compatible library for making CRUD API endpoints
Tripay Payment Gateway SDK for Laravel 10, 11, 12 and PHP 8.2+
Date formatter for Bahasa Indonesia
Alfabank REST API integration
Package Laravel yang berisi data Provinsi, Kabupaten/Kota, Kecamatan, dan Keluarahan/Desa di seluruh Indonesia. clone from laravolt/indonesia
统计信息
- 总下载量: 6
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 25
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-02-19