Mulai Sekarang

Apakah Anda siap untuk memulai integrasi dengan webhook Xendit? Anda dapat mengikuti panduan ini untuk memulai langsung menggunakan webhook Xendit dan mengintegrasikannya dengan sistem Anda. Panduan ini tidak hanya dapat digunakan pada satu produk Xendit atau bahasa pemrograman tertentu, namun dapat digunakan pada setiap produk Xendit dan beragam macam bahasa pemrograman.

Daftar Webhook

Langkah pertama untuk memulai integrasi webhook adalah untuk mencari webhook yang akan Anda gunakan di aplikasi Anda. Ini tergantung pada produk Xendit yang Anda gunakan. Berikut daftar webhook Xendit:

Tentu saja, projek Anda tidak memerlukan semua webhook diatas - namun Anda dapat menambahkan fungsionalitas yang menarik dan dapat membantu Anda dengan menggunakan webhook.

Menyambut Webhook

Langkah selanjutnya adalah untuk menentukan bagaimana sistem Anda akan menyambut atau mengembalikan respon balik ke Xendit sebagai bukti penerimaan webhook. Kami merekomendasikan Anda untuk mengembalikan respon dengan kode status HTTP 2xx secara langsung. Bila algoritma webhook Anda melakukan proses yang kompleks, atau membuat panggilan lainnya untuk proses selanjutnya sebelum mengirimkan respon balik ke Xendit, besar kemungkinan webhook tersebut akan timeout sebelum Xendit menerima respon dari sistem Anda. Idealnya, sistem Anda mengembalikan respon dengan HTTP status 2xx secara langsung sebelum ada algortima atau proses-proses lainnya yang hendak dilakukan untuk event tersebut.

INFO

Xendit menentukan sebuah event telah timeout apabila kami tidak menerima respon dalam waktu 30 detik

Gunakan simulasi Webhook untuk pengembangan

Setelah Anda menentukan webhook mana yang hendak Anda gunakan, saatnya untuk memulai menulis kode. Untuk tujuan pengujian ad-hoc selama pengembangan, Anda mungkin perlu menyiapkan sistem HTTP tiruan (mock) ke aplikasi Anda. Kami merekomendasi Anda untuk menggunakan command-line tool seperti curl, atau aplikasi desktop seperti Postman.

Anda dapat menggunakan contoh permintaan webhook yang ada di Referensi Xendit API sebagai permulaan untuk membuat pesan webhook, dan kirim webhook Xendit ke layanan seperti Webhook.site atau RequestBin untuk menangkap permintaan HTTP yang dikirim.

Contoh data ewallet webhook. Lihat data webhook lainnya di API Reference

{
  "event": "ewallet.capture",
  "created": "2020-10-21T13:59:14.536400713Z",
  "business_id": "59e0daf7049b567510c63f67",
  "data": {
    "id": "ewc_95d47d3a-db03-4b4b-9b6c-71077157cbc8",
    "basket": null,
    "status": "SUCCEEDED",
    "actions": {
      "mobile_web_checkout_url": "",
      "desktop_web_checkout_url": "",
      "mobile_deeplink_checkout_url": "https://wsa.uat.wallet.airpay.co.id/universal-link/wallet/pay?deep_and_deferred=1&token=dFhkbmR1bTBIamhWwFfJaB-n_6eGjr1eAHnlwWEJDsEpIU_-8m0QS5Tb1nFp_ZEtGrgHWKV8LuV6rwVL2COCVw"
    },
    "created": "2020-10-21T13:57:43.355897Z",
    "updated": "2020-10-21T13:57:43.730483Z",
    "currency": "IDR",
    "metadata": {
      "branch_code": "senayan_372"
    },
    "voided_at": null,
    "capture_now": true,
    "customer_id": null,
    "callback_url": "https://webhook.site/5eebb675-6102-453a-a81c-de95fb08bc77",
    "channel_code": "ID_SHOPEEPAY",
    "failure_code": null,
    "reference_id": "test-payload",
    "charge_amount": 20000,
    "capture_amount": 20000,
    "checkout_method": "ONE_TIME_PAYMENT",
    "payment_method_id": null,
    "channel_properties": {
      "success_redirect_url": "https://google.com"
    },
    "is_redirect_required": true
  }
}

Jalankan aplikasi Anda menggunakan URL publik

Xendit memerlukan URL publik untuk mengirim webhook. Ada 2 cara untuk membuat URL publik:

  1. Deploy aplikasi Anda ke server pengembangan atau pengujian yang dapat dijangkau oleh Internet publik
  2. Gunakan tunneling tool seperti ngrok untuk membuat URL publik yang menargetkan aplikasi lokal yang Anda jalankan di komputer Anda (seperti https://n3f6j25.ngrok.io/)

Pada kasus tertentu, ngrok atau tunneling tool lainnya dapat diblokir oleh firewall Internet Anda. Pada kasus demikian, Anda dapat mendirikan server pengembangan untuk pengujian dengan Xendit, sebelum menjalankan projek webhook Anda ke mode Live.

Untuk informasi lebih lanjut mengenai cara membuat lingkungan pengembangan lokal Anda menjadi URL publik menggunakan ngrok, Anda dapat mengikuti panduan-panduan komunitas berikut:

  • MacOS. Kredit kepada: Pentacode
  • Windows. Kredit kepada: Awais Mirza

Setel URL webhook publik

Sekarang, Xendit perlu mengetahui URL Anda untuk mengirim webhook. Anda dapat menyetel URL Webhook Anda menggunakan Dasbor atau API. URL Webhook harus bersifat publik agar dapat menerima webhook dari Xendit.

Setel URL menggunakan Dasbor

INFO

Anda memerlukan akses developer untuk akses ke halaman Setelan Callback

  1. Navigasi ke setelan Callback di Dasbor Xendit
  2. Pada bagian Callback, tempel dan simpan URL Anda pada produk Xendit yang hendak Anda gunakan. Apabila Anda menggunakan API Invoice, maka Anda dapat menyetel URL webhook pada bagian Invoice. Mekanisme yang sama berlaku pada produk-produk Xendit lainnya.
INFO

Fitur Tes dan Simpan akan selalu menyimpan URL Anda terlepas dari hasil tes

Setel URL menggunakan API

Anda dapat juga menyetel URL Webhook Anda menggunakan API. Lihat Set URL API Reference untuk rincian parameter-parameternya. API ini berguna untuk pengguna XenPlatform untuk menyetel URL Webhook pada sub-akun. Fitur ini hanya dapat digunakan untuk sub-akun tipe Managed. Sub-akun tipe Owned akan menggunakan URL Webhook yang sama dengan akun Platform.

  <?php
      $url = 'https://api.xendit.co/callback_urls';
      $apiKey = 'tambah_api_key_disini';
      $headers = [];
      $headers[] = 'Content-Type: application/json';
      $data = [
          'url' => 'https://www.xendit.co/callback_catcher'
      ];

      $curl = curl_init();

      $payload = json_encode($data);
      curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
      curl_setopt($curl, CURLOPT_USERPWD, $apiKey.":");
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_POST, true);
      curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

      $result = curl_exec($curl);
      echo $result;
?>

Validasi bahwa webhook yang diterima berasal dari Xendit

Anda perlu melakukan validasi pengirim webhook untuk memastikan bahwa webhook yang diterima berasal dari Xendit. Validasi ini untuk mencegah pihak-pihak lain selain Xendit untuk membuat webhook request ke sistem Anda.

Xendit melampirkan header parameter x-callback-token ketika mengirimkan webhook ke sistem Anda. Nilai x-callback-token adalah unik untuk akun Xendit Anda per environment, dimana Anda dapat menemukan nilainya di Setelan Callback dan melakukan validasi terhadap nilai tersebut. Bila webhook tersebut memiliki nilai yang sesuai dengan nilai yang Anda temui di Dasbor, maka Anda dapat menerima webhook tersebut, bila tidak, harap menolak webhook tersebut.

Tes webhook Anda di mode Live

Apabila semuanya sudah berjalan sesuai ekspektasi di mode Tes, saatnya mencoba integrasi webhook Anda di mode Live. Anda dapat mulai membuat VA, melakukan pembayaran VA, atau apa pun yang telah Anda buat dan eksekusi di mode Tes. Cobalah untuk melakukan testing sebanyak mungkin dengan aplikasi Anda, terutama untuk kasus-kasus positif dan negatif, sehingga Anda dapat melihat apakah ada asumsi yang tertinggal dari unit test atau pengujian integrasi Anda. Tambahkan kasus-kasus positif dan negatif tersebut ke pengujian otomatis Anda, saat Anda melakukan pengujian manual.

Menaikkan aplikasi Anda ke Tes dan Live

Sekarang Anda dapat mempromosikan aplikasi web Anda ke lingkungan Test, dan kemudian ke Live. Perbarui URL webhook yang Anda gunakan di Dasbor Xendit untuk memastikan bahwa pengujian yang Anda lakukan berjalan ke mode / lingkungan yang benar.

Periksa kembali apakah URL Live Xendit Anda mengarah ke environment Live pada aplikasi Anda. Demikian pula, pastikan bahwa webhook diterima dengan baik, dan aturan jaringan tidak perlu diubah di firewall.

Uji webhook Anda dengan SSL aktif dan sertifikat yang Anda gunakan di mode Live, untuk memastikan semuanya berfungsi dengan baik dan benar. Webhook Xendit tidak akan berfungsi pada URL HTTPS dengan sertifikat SSL yang ditandatangani sendiri.

Selamat! Aplikasi web Anda sudah siap di mode Live, dan siap untuk menanggapi webhook Xendit! Jika Anda mengalami pertanyaan, kunjungi Pertanyaan Umum Webhook.

Last Updated on 2024-02-15