Apa itu webhook pada pink shortener? tips menggunakan

Dalam dunia web kita pasti mengenal istilah yang di sebut sebagai Webhook. Salah satu komponen penting dalam dunia web yang memungkinkan dua aplikasi dapat saling mengirimkan data tanpa harus membangun koneksi secara persisten/terus menerus.

Webhook di gunakan dalam skala luas untuk tujuan pengiriman data yang di sebut callback. Contoh, ketika suatu layanan membuat sebuah transaksi ke API sistem layanan A. Layananan A kita asumsikan sebagai website topup game misalnya, ketika ada pembeli ia menghit aggregator dan layanan payment gateway.

Sementara itu layanan payment gateway dan juga aggregator topup game, butuh waktu untuk memproses transaksi tersebut. Nah dengan bantuan webhoook, server payment gateway dan aggregator dapat mengirimkan data status transaksi apakah itu berhasil atau gagal melalui jalur webhook.

Singkatnya, webhook adalah URL aplikasi kamu yang di berikan kepada pihak ketiga sebagai jalur pengiriman data. Semoga kamu sudah paham mengenali perihal webhook, hampir semua layanan digital yang menggunakan API sistem pasti punya Webhook sendiri.


Webhook di pink shortener

Pink shortener menyediakan webhook juga, tujuan adanya webhook untuk memfasilitasi kreator mengintegrasikan layanan donasi ke platform mereka sendiri. Ketika ada yang berdonasi, maka server pink shortener akan mengirimkan hook ( Callback data ) ke URLyang sudah kamu berikan sebagai webhook di pengaturan profile.

Penggunaan webhook sebenarnya opsional, jika kamu adalah konten kreator gaming live stream bisa menggunakan halaman embed overlay. Halaman embed overlay merupakan fitur yang sama seperti webhook, bedanya overlay sudah di program sedemikian rupa untuk dapat menampilkan alert notifier ketika ada yang berdonasi.

Kalau webhook tadi menggunakan jaringan HTTPS, sementara Overlay Stream menggunakan jaringan TCP/Websocket. Untuk data yang di berikan kepada webhook hanya untuk transaksi yang berhasil, misalnya kamu mendapatkan donasi dari orang lain, atau tautan yang kamu buat di bayar oleh orang lain, maka kamu akan mendapatkan callback dalam bentuk body sebagai berikut.

{
    "transaction_id": "TRX12345",
    "is_link": false,
    "is_product": false,
    "product_sku": null,
    "product_info": [],
    "price": 500000,
    "net_amount": 475000,
    "quantity": 3,
    "supporter_message": "Mohon dikirim secepatnya",
    "supporter_name": "Budi Santoso",
    "date_send": "2024-09-22 14:30:00"
}


Bagaimana cara saya memproses API tersebut?

Kamu bisa membuat database sendiri atau membuat aplikasi sederhana yang dapat menampilkan data kepada pendukung secara realtime, atau aplikasi kamu adalah aplikasi yang membutuhkan hak akses donasi sukarela untuk memgakses nya, kamu juga dapat integrasikan ke aplikasi kamu tips nya gampang kok begini kira-kira bahasa pemrogramaanya.
Nodejs

const http = require('http');
const fs = require('fs');

// Token yang digunakan untuk validasi
const YOUR_API_TOKEN = 'ganti_dengan_api_token_pink_kamu';

// Fungsi untuk menyimpan data ke file
function saveToFile(data) {
    const filePath = './webhook-data.json';
    fs.writeFile(filePath, JSON.stringify(data, null, 2), (err) => {
        if (err) {
            console.error('Gagal menyimpan data ke file:', err);
        } else {
            console.log('Data webhook berhasil disimpan ke', filePath);
        }
    });
}

// Membuat server HTTP untuk menerima request webhook
const server = http.createServer((req, res) => {
    if (req.method === 'POST') {
        // Validasi token pada header
        const token = req.headers['x-webhook-token'];
        if (token !== YOUR_API_TOKEN) {
            res.writeHead(403, {'Content-Type': 'application/json'});
            return res.end(JSON.stringify({status: 'error', message: 'Invalid token'}));
        }

        let body = '';

        // Mengumpulkan data request
        req.on('data', chunk => {
            body += chunk.toString(); // kita jadikan string
        });

        // Setelah semua data diterima
        req.on('end', () => {
            try {
                // Parsing data JSON yang diterima
                const jsonData = JSON.parse(body);
                console.log('Data webhook diterima:', jsonData);

                // Menyimpan data ke file
                saveToFile(jsonData);

                // berikan respon ke server webhook
                res.writeHead(200, {'Content-Type': 'application/json'});
                res.end(JSON.stringify({status: 'success', message: 'Data received and saved'}));
            } catch (error) {
                console.error('Error parsing JSON:', error);
                res.writeHead(400, {'Content-Type': 'application/json'});
                res.end(JSON.stringify({status: 'error', message: 'Invalid JSON format'}));
            }
        });
    } else {
        res.writeHead(405, {'Content-Type': 'application/json'});
        res.end(JSON.stringify({status: 'error', message: 'Method not allowed'}));
    }
});

// Menjalankan server pada port 3000
server.listen(3000, () => {
    console.log('Server webhook berjalan pada http://localhost:3000');
});

PHP FPM

<?php

// Token yang digunakan untuk validasi
$YOUR_API_TOKEN = 'token_api_pink_kamu';

// Mendapatkan token dari header
$headers = getallheaders();
$token = isset($headers['X-Webhook-Token']) ? $headers['X-Webhook-Token'] : null;

// Memeriksa apakah metode request adalah POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    
    // Validasi token
    if ($token !== $YOUR_API_TOKEN) {
        http_response_code(403);
        echo json_encode([
            'status' => 'error',
            'message' => 'Invalid token'
        ]);
        exit;
    }

    // Membaca body dari request
    $data = file_get_contents('php://input');

    // Parsing JSON yang diterima
    $jsonData = json_decode($data, true);

    if (json_last_error() === JSON_ERROR_NONE) {
        // Menyimpan data ke file
        $filePath = './webhook-data.json';
        if (file_put_contents($filePath, json_encode($jsonData, JSON_PRETTY_PRINT))) {
            // Respons sukses
            http_response_code(200);
            echo json_encode([
                'status' => 'success',
                'message' => 'Data received and saved'
            ]);
        } else {
            // Gagal menyimpan file
            http_response_code(500);
            echo json_encode([
                'status' => 'error',
                'message' => 'Failed to save data to file'
            ]);
        }
    } else {
        // JSON yang diterima tidak valid
        http_response_code(400);
        echo json_encode([
            'status' => 'error',
            'message' => 'Invalid JSON format'
        ]);
    }
} else {
    // Jika metode request bukan POST
    http_response_code(405);
    echo json_encode([
        'status' => 'error',
        'message' => 'Method not allowed'
    ]);
}

Contoh di atas dalah cara menerima webhook di server kamu sendiri dan menyimpan nya ke dalam sebuah file. Untuk aplikasi yang lebih kompleks kamu bisa membuat program sendiri untuk menerima dan mengelolah data yang di kirimkan oleh webhook.



Data apa saja yang di kirim oleh Webhook?

Data yang di kirimkan oleh webhook adalah transaksi yang terjadi dan berhasil, misalnya ada seorang memberikan kamu donasi traktiran. Atau ada seorang yang membeli akses tautan yang kamu buat, atau mereka juga membeli produk yang kamu listing.

Setiap ada transaksi baru yang status pembayaranya berhasil terkonfirmasi pink shortener akan memberikan webhook. Dengan memberikan data ini kepada pengguna, kamu bisa melakukan langkah apa selanjutnya yang harus di lakukan, entah itu memberikan reward kepada pelanggan/suporterd, mengtag nama mereka dan memberikan rasa terimakasih, dan sebagainya.

Fitur webhook merupakan fitur beta yang di sediakan untuk integrasi layanan ke pink shortener.


Sampai di sini masih ada pertanyaan terkait layanan API pink shortener? jika ada pertanyaan langsung saja hubungi developer nya @ryax di telegram secara langsung.