承接 ndradev/digiflazz-sdk-laravel 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ndradev/digiflazz-sdk-laravel

Composer 安装命令:

composer require ndradev/digiflazz-sdk-laravel

包简介

Laravel SDK for DigiFlazz API - Professional wrapper for DigiFlazz payment gateway

README 文档

README

Latest Version on Packagist Total Downloads License

SDK Laravel profesional untuk DigiFlazz API - Platform PPOB (Payment Point Online Bank) terkemuka di Indonesia untuk pembelian pulsa, paket data, token listrik, dan berbagai produk digital lainnya.

Daftar Isi

Fitur

  • Integrasi mudah dengan Laravel 10 dan 11
  • Cakupan lengkap API DigiFlazz
  • Autentikasi aman dengan SHA256
  • Type-safe models dan DTOs
  • Webhook handler untuk callback otomatis
  • Event system untuk integrasi yang fleksibel
  • Siap untuk production
  • Dokumentasi lengkap dalam Bahasa Indonesia

Persyaratan

  • PHP >= 8.1
  • Laravel >= 10.0
  • Guzzle HTTP Client >= 7.8
  • Akun DigiFlazz aktif (daftar di https://digiflazz.com)

Instalasi

Instal package melalui Composer:

composer require ndradev/digiflazz-sdk-laravel

Laravel (Auto-discovery)

Untuk Laravel 5.5 ke atas, service provider dan facade akan otomatis terdaftar melalui package auto-discovery.

Laravel (Registrasi Manual)

Untuk versi Laravel yang lebih lama, tambahkan service provider dan facade ke config/app.php:

'providers' => [
    // ...
    NadrDev\Digiflazz\Providers\DigiflazzServiceProvider::class,
],

'aliases' => [
    // ...
    'Digiflazz' => NadrDev\Digiflazz\Facades\Digiflazz::class,
],

Konfigurasi

Publish file konfigurasi:

php artisan vendor:publish --provider="NadrDev\Digiflazz\Providers\DigiflazzServiceProvider" --tag="digiflazz-config"

Tambahkan kredensial DigiFlazz Anda ke file .env:

DIGIFLAZZ_USERNAME=username_anda
DIGIFLAZZ_API_KEY=api_key_anda
DIGIFLAZZ_PRODUCTION=false
DIGIFLAZZ_WEBHOOK_SECRET=api_key_anda
DIGIFLAZZ_WEBHOOK_ENABLED=true

Penjelasan Konfigurasi

Konfigurasi Deskripsi Default
DIGIFLAZZ_USERNAME Username akun DigiFlazz Anda -
DIGIFLAZZ_API_KEY API Key dari dashboard DigiFlazz -
DIGIFLAZZ_PRODUCTION Mode production (true) atau development (false) false
DIGIFLAZZ_WEBHOOK_SECRET Secret untuk verifikasi webhook API Key
DIGIFLAZZ_WEBHOOK_ENABLED Aktifkan webhook handler true

Penggunaan

Menggunakan Facade

use NadrDev\Digiflazz\Facades\Digiflazz;

// Mendapatkan daftar harga
$priceList = Digiflazz::getPriceList();

// Mendapatkan saldo
$balance = Digiflazz::getBalance();

// Membuat transaksi
$transaction = Digiflazz::createTransaction([
    'buyer_sku_code' => 'TELKOMSEL10',
    'customer_number' => '081234567890',
    'ref_id' => 'ORDER-' . time(),
]);

Menggunakan Dependency Injection

use NadrDev\Digiflazz\Http\DigiFlazzClient;

class PaymentController extends Controller
{
    private DigiFlazzClient $digiFlazz;

    public function __construct(DigiFlazzClient $digiFlazz)
    {
        $this->digiFlazz = $digiFlazz;
    }

    public function purchase()
    {
        $balance = $this->digiFlazz->getBalance();
        // ...
    }
}

Metode yang Tersedia

Produk & Harga

Mendapatkan Daftar Harga

// Semua produk
$priceList = Digiflazz::getPriceList();

// Berdasarkan kategori (pulsa, data, pln, dll)
$priceList = Digiflazz::getPriceList('pulsa');
$priceList = Digiflazz::getPriceList('data');
$priceList = Digiflazz::getPriceList('pln');

Mendapatkan Produk Berdasarkan SKU

$product = Digiflazz::getProductBySku('TELKOMSEL10');

Transaksi

Membuat Transaksi Baru

use NadrDev\Digiflazz\Models\TransactionRequest;

// Menggunakan array
$response = Digiflazz::createTransaction([
    'buyer_sku_code' => 'TELKOMSEL10',
    'customer_number' => '081234567890',
    'ref_id' => 'ORDER-' . time(),
    'extra_data' => 'data_opsional',
]);

// Menggunakan TransactionRequest DTO
$request = TransactionRequest::create('TELKOMSEL10', '081234567890')
    ->setRefId('ORDER-' . time());

$response = Digiflazz::createTransaction($request->toArray());

Parameter:

Parameter Tipe Wajib Deskripsi
buyer_sku_code string Ya Kode produk yang akan dibeli
customer_number string Ya Nomor tujuan (nomor HP, ID pelanggan, dll)
ref_id string Tidak ID referensi unik dari sistem Anda
extra_data string Tidak Data tambahan (opsional)

Cek Status Transaksi

$status = Digiflazz::getTransactionStatus('ORDER-123');

Riwayat Transaksi

// Semua transaksi
$history = Digiflazz::getTransactionHistory();

// Dengan filter
$history = Digiflazz::getTransactionHistory(
    startDate: '2024-01-01',
    endDate: '2024-01-31',
    status: 'success',
    buyerSkuCode: 'TELKOMSEL10',
    page: 1,
    limit: 20
);

Parameter:

Parameter Tipe Wajib Deskripsi
start_date string Tidak Tanggal mulai (format: Y-m-d)
end_date string Tidak Tanggal akhir (format: Y-m-d)
status string Tidak Filter status (pending, success, failed)
buyer_sku_code string Tidak Filter berdasarkan kode produk
page int Tidak Halaman (default: 1)
limit int Tidak Jumlah data per halaman (default: 20)

Saldo & Akun

Cek Saldo

use NadrDev\Digiflazz\Models\Balance;

$response = Digiflazz::getBalance();
$balance = Balance::fromArray($response);

echo $balance->getBalanceInRupiah(); // Rp 1.000.000
echo $balance->getBalanceFormatted(); // 1.000.000

Cek Tagihan

Cek PLN Prabayar (Token)

$info = Digiflazz::checkPlnPrepayment('123456789012');

// Response berisi:
// - meter_number: Nomor meter
// - customer_name: Nama pelanggan
// - segment_power: Daya listrik
// - status: Status ketersediaan

Cek PLN Pascabayar

$info = Digiflazz::checkPlnPostpayment('123456789012');

Cek PDAM

$info = Digiflazz::checkPdam(
    customerNumber: '123456789012',
    companyCode: 'PDAM_JKT'
);

Cek BPJS

$info = Digiflazz::checkBpjs('123456789012');

Cek Kartu Kredit

$info = Digiflazz::checkCreditCard(
    cardNumber: '1234567890123456',
    bankCode: 'BCA'
);

Webhook/Callback

Setup Webhook di Dashboard DigiFlazz

  1. Login ke dashboard DigiFlazz
  2. Masuk ke menu Callback/Webhook
  3. Masukkan URL endpoint webhook Anda
  4. Simpan konfigurasi

URL webhook harus dapat diakses dari internet.

Testing Webhook

// Test callback URL
Digiflazz::testCallback('https://your-domain.com/api/digiflazz/webhook');

Models

SDK ini menyediakan beberapa model untuk memudahkan pengolahan data:

Product Model

use NadrDev\Digiflazz\Models\Product;

$product = Product::fromArray($responseData);

echo $product->name;
echo $product->price;
echo $product->isAvailable() ? 'Tersedia' : 'Habis';

Transaction Model

use NadrDev\Digiflazz\Models\Transaction;

$transaction = Transaction::fromArray($responseData);

if ($transaction->isSuccess()) {
    // Transaksi berhasil
    echo $transaction->serialNumber;
} elseif ($transaction->isFailed()) {
    // Transaksi gagal
    echo $transaction->message;
} elseif ($transaction->isPending()) {
    // Transaksi masih diproses
}

Balance Model

use NadrDev\Digiflazz\Models\Balance;

$balance = Balance::fromArray($responseData);

echo $balance->getBalanceInRupiah(); // Rp 1.000.000
echo $balance->balance; // 1000000
echo $balance->point; // 0

TransactionRequest Model

use NadrDev\Digiflazz\Models\TransactionRequest;

$request = TransactionRequest::create('TELKOMSEL10', '081234567890')
    ->setRefId('ORDER-' . time())
    ->setExtraData('catatan');

$data = $request->toArray();

Penanganan Error

SDK ini menyediakan beberapa exception class untuk penanganan error yang lebih baik:

use NadrDev\Digiflazz\Exceptions\ApiException;
use NadrDev\Digiflazz\Exceptions\ConnectionException;
use NadrDev\Digiflazz\Exceptions\ValidationException;

try {
    $result = Digiflazz::createTransaction([
        'buyer_sku_code' => 'TELKOMSEL10',
        'customer_number' => '081234567890',
    ]);
} catch (ValidationException $e) {
    // Error validasi data
    $errors = $e->getErrors();
    foreach ($errors as $field => $message) {
        logger()->error("Validasi {$field}: {$message}");
    }
} catch (ConnectionException $e) {
    // Error koneksi ke API
    logger()->error('Koneksi ke DigiFlazz gagal: ' . $e->getMessage());
} catch (ApiException $e) {
    // Error dari API DigiFlazz
    logger()->error('Error dari DigiFlazz: ' . $e->getMessage());
    logger()->error('Context: ' . json_encode($e->getContext()));
}

Webhook Handler

Setup Route Webhook

Tambahkan route untuk webhook di routes/api.php:

use Illuminate\Support\Facades\Route;
use NadrDev\Digiflazz\Http\Controllers\WebhookController;
use NadrDev\Digiflazz\Http\WebhookHandler;

Route::post('/digiflazz/webhook', function (
    Illuminate\Http\Request $request,
    WebhookHandler $webhookHandler
) {
    $controller = new WebhookController();
    return $controller->handle($request, $webhookHandler);
})->name('digiflazz.webhook');

Event Listener

SDK ini memancarkan event TransactionStatusChanged ketika webhook diterima. Anda bisa membuat listener:

// app/Providers/EventServiceProvider.php
protected $listen = [
    \NadrDev\Digiflazz\Events\TransactionStatusChanged::class => [
        \App\Listeners\DigiFlazzWebhookListener::class,
    ],
];
// app/Listeners/DigiFlazzWebhookListener.php
namespace App\Listeners;

use NadrDev\Digiflazz\Events\TransactionStatusChanged;

class DigiFlazzWebhookListener
{
    public function handle(TransactionStatusChanged $event): void
    {
        $transaction = $event->transaction;

        // Update status transaksi di database Anda
        // Kirim notifikasi ke customer
        // dll
    }
}

Contoh Lengkap Webhook Handler

// routes/api.php
Route::post('/digiflazz/webhook', function (Illuminate\Http\Request $request) {
    $signature = $request->header('X-Digiflazz-Signature') 
        ?? $request->header('X-Signature')
        ?? $request->input('signature');

    if (!$signature) {
        return response()->json(['success' => false, 'message' => 'Missing signature'], 400);
    }

    $webhookHandler = new \NadrDev\Digiflazz\Http\WebhookHandler(
        config('digiflazz.webhook.secret')
    );

    try {
        $data = $webhookHandler->handleFromRequest($request->getContent(), $signature);

        // Proses transaksi berdasarkan data webhook
        \Log::info('Webhook DigiFlazz diterima', $data);

        // Update database Anda
        // Order::where('ref_id', $data['ref_id'])->update([
        //     'status' => $data['status'],
        //     'serial_number' => $data['serial_number'],
        //     'message' => $data['message'],
        // ]);

        // Kirim notifikasi
        // if ($data['status'] === 'success') {
        //     // Kirim SMS/Email ke customer
        // }

        return response()->json(['success' => true]);
    } catch (\Exception $e) {
        \Log::error('Error webhook DigiFlazz: ' . $e->getMessage());
        return response()->json(['success' => false], 500);
    }
});

Testing

Jalankan test suite:

composer test

Contoh Penggunaan Lengkap

Controller untuk Pembelian Pulsa

namespace App\Http\Controllers;

use App\Models\Order;
use Illuminate\Http\Request;
use NadrDev\Digiflazz\Facades\Digiflazz;
use NadrDev\Digiflazz\Exceptions\ApiException;
use NadrDev\Digiflazz\Exceptions\ConnectionException;
use NadrDev\Digiflazz\Exceptions\ValidationException;

class PulsaController extends Controller
{
    public function purchase(Request $request)
    {
        $validated = $request->validate([
            'phone_number' => 'required|numeric',
            'product_sku' => 'required|string',
        ]);

        $refId = 'ORDER-' . uniqid();

        try {
            $response = Digiflazz::createTransaction([
                'buyer_sku_code' => $validated['product_sku'],
                'customer_number' => $validated['phone_number'],
                'ref_id' => $refId,
            ]);

            // Simpan ke database
            Order::create([
                'ref_id' => $refId,
                'buyer_sku_code' => $validated['product_sku'],
                'customer_number' => $validated['phone_number'],
                'status' => $response['status'] ?? 'pending',
                'price' => $response['price'] ?? 0,
            ]);

            return response()->json([
                'success' => true,
                'data' => $response,
            ]);
        } catch (ValidationException $e) {
            return response()->json([
                'success' => false,
                'message' => 'Data tidak valid',
                'errors' => $e->getErrors(),
            ], 422);
        } catch (ConnectionException $e) {
            return response()->json([
                'success' => false,
                'message' => 'Gagal terhubung ke DigiFlazz',
            ], 503);
        } catch (ApiException $e) {
            return response()->json([
                'success' => false,
                'message' => $e->getMessage(),
            ], 400);
        }
    }

    public function status(string $refId)
    {
        try {
            $status = Digiflazz::getTransactionStatus($refId);

            return response()->json([
                'success' => true,
                'data' => $status,
            ]);
        } catch (\Exception $e) {
            return response()->json([
                'success' => false,
                'message' => $e->getMessage(),
            ], 500);
        }
    }
}

Troubleshooting

Error: Invalid Signature

Pastikan API Key yang digunakan benar dan sesuai dengan yang ada di dashboard DigiFlazz.

Error: Connection Timeout

Periksa koneksi server Anda ke internet dan pastikan firewall tidak memblokir koneksi ke api.digiflazz.com.

Webhook Tidak Diterima

  1. Pastikan URL webhook dapat diakses dari internet (tidak localhost)
  2. Periksa SSL certificate jika menggunakan HTTPS
  3. Pastikan endpoint webhook mengembalikan response JSON dengan status 200

Saldo Tidak Cukup

Pastikan saldo DigiFlazz Anda mencukupi sebelum melakukan transaksi. Gunakan Digiflazz::getBalance() untuk cek saldo.

Kontribusi

Kami sangat menghargai kontribusi dari komunitas. Silakan buat Pull Request untuk fitur atau perbaikan bug.

Changelog

Lihat CHANGELOG untuk informasi lebih lanjut.

Keamanan

Jika Anda menemukan masalah keamanan, silakan kirim email ke nadradev@example.com.

Kredit

Lisensi

MIT License (MIT). Lihat LICENSE untuk informasi lebih lanjut.

ndradev/digiflazz-sdk-laravel 适用场景与选型建议

ndradev/digiflazz-sdk-laravel 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 02 月 20 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「api」 「payment」 「sdk」 「gateway」 「laravel」 「digiflazz」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 ndradev/digiflazz-sdk-laravel 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 ndradev/digiflazz-sdk-laravel 我们能提供哪些服务?
定制开发 / 二次开发

基于 ndradev/digiflazz-sdk-laravel 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 1
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 20
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-02-20