Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PayPal

Integrasi PayPal Bagian 3: Webhooks PayPal 

by
Length:MediumLanguages:
This post is part of a series called PayPal Integration.
PayPal Integration Part 2: PayPal REST API

Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)

Final product image
What You'll Be Creating

Webhook adalah callback HTTP yang terjadi saat terjadi sesuatu; sebuah sistem pemberitahuan kejadian sederhana melalui HTTP POST yang memungkinkan pengembang untuk dengan mudah mengakses pemberitahuan aktivitas pembayaran, seperti pembaruan status pembayaran, atau biaya berulang. Anda bisa melakukan tindakan di back-end setelah memproses setiap notifikasi, seperti:

  • Mengirim email konfirmasi pembelian ke pelanggan Anda.
  • Mengaktifkan pengunduhan media digital.
  • Menerbitkan pengembalian dana.
  • Melacak langganan yang aktif.

Untuk membuat Webhook, navigasikan ke Dashboard PayPal, dan klik My Apps & Credentials. Kemudian pilih aplikasi yang ingin Anda setel pada Webhooks.

PayPal Developer

Pengembang PayPalAnda dapat melihat rincian tentang aplikasi Anda. Perhatikan di kanan atas bahwa ada dua tombol (Sandbox, Live), saya akan menggunakan Sandbox selama tutorial ini, tapi Anda perlu mengatur pengaturan Live Anda sebelum pergi Live. Untuk mengkonfigurasi Webhooks untuk aplikasi ini, klik Add Webhook seperti yang ditampilkan di tangkapan layar:

Adding a WebHook

Pilih Event Types yang Anda minati untuk mendapatkan notifikasi, dan masukkan URL tempat Webhooks akan dikirimkan (itu harus HTTPS). Untuk menangani panggilan Webhook, saya akan menambahkan metode tindakan baru ke HomeController yang disebut 'Webhook':

Jadi Url Webhook dalam kasus ini adalah: https://pedroalonso.localtunnel.me/home/webhook. Saya akan menjelaskan bagian 'localtunnel' di bagian berikutnya.

PayPal Developer Dashboard

Dashboard Pengembang PayPalSaat Anda menyimpan Webhook, Anda akan melihat layar konfirmasi ini:

Webhook Created Successfully

Webhook Berhasil DibuatSekarang setelah Webhook disiapkan, Anda dapat melihat di menu kiri di bawah 'Webhooks Simulator', di sini Anda dapat mengirim kejadian webhook 'test' ke URL Anda untuk menguji kode Anda bekerja. Juga, di bawah 'Webhooks Events' Anda dapat melihat semua kejadian yang dikirim PayPal untuk aplikasi ini. Anda dapat memverifikasi bahwa Anda menangani kejadian dengan benar dan mengirimnya kembali jika Anda ingin melakukan pengujian lebih lanjut.

Untuk melihat bagaimana kerja Webhooks, saya menjalankan proyek yang kami bangun di tutorial sebelumnya, dan saya membuat 'otorisasi pembayaran dan penangkapan kemudian', sehingga PayPal akan mengirimkan kejadian tersebut. Setelah menjalankan sampel, saya mengklik 'Webhooks Event' dan saya dapat melihat bahwa kejadian telah dikirim:

Webhook Events

Kejadian WebHookSeperti yang bisa Anda lihat, di sebelah kanan ada tombol Resend jika Anda ingin men-debug kode Anda dan melihat bagaimana menerapkan handler dengan benar. Selain itu, jika Anda mengeklik kejadian tersebut, Anda dapat melihat semua detailnya:

Webhook Event Details

Rincian Kejadian WebHookIni adalah JSON penuh untuk Webhook Event:

Seperti yang dapat Anda lihat di gambar, detail kejadian dikodekan dalam JSON dan mereka dikirim sebagai body permintaan ke handler URL Webhook Anda. Juga, ada beberapa properti penting yang perlu kita gunakan di handler kita:

  • id: Ini adalah id dari kejadian webhook, dan kita perlu mengirimkan parameter ini ke PayPal jika kita ingin mengambil kejadian webhook yang spesifik.
  • event_type: Ini digunakan untuk mengetahui jenis kejadian yang kita terima karena kita mungkin perlu mengolah berbagai jenis kejadian dengan berbagai cara.
  • resource.parent_payment: Ini adalah id dari pembayaran yang berkaitan dengan kejadian ini. Kita mungkin menyimpan id ini dalam database, dan bisa mengirim email ke pelanggan kita atau mengirimkan barang yang dibeli oleh pelanggan.

Berdasarkan penjelasan sebelumnya, inilah kode tindakan controller untuk mengolah Webhook:

Beberapa hal yang perlu dijelaskan dari fungsi sebelumnya. Dari baris 10-16, saya hanya membaca body dari permintaan dan menguraikan objek JSON ke objek C# yang dinamis. Pada baris 18, yang bersifat opsional, saya menghubungi API PayPal dengan Id kejadian untuk mendapatkan detail kejadian lengkap. Hal ini dilakukan untuk keamanan untuk memverifikasi bahwa saya menggunakan objek PayPal yang valid. On line 24 Saya telah membuat sebuah tombol untuk mengevaluasi jenis Webhooks yang ingin saya proses dan menuliskan kode kustom sesuai kebutuhan.

Seperti yang juga bisa Anda lihat, baris 22 dikomentari. Rupanya metode tersebut memvalidasi bahwa sertifikat SSL dari Request adalah valid dan milik PayPal, namun tidak sesuai dengan mode Sandbox. Ini mungkin berhasil di Live, tapi saya tidak suka memiliki kode Live yang tidak diuji, terutama jika menangani Gateway Pembayaran, jadi saya memilih untuk menghapusnya dan menggunakan pendekatan yang berbeda. Jika Anda menggunakan versi PHP dari perpustakaan SDK PayPal, ingatlah bahwa fungsi 'ValidateReceivedEvent' tidak ada.

Pengujian Webhooks: Tunnel yang Aman

Seperti yang telah Anda lihat sebelumnya, untuk menguji Webhook, kita perlu mengonfigurasi URL publik yang dapat digunakan PayPal untuk mengirim kejadian. Jika kita bekerja secara lokal, biasanya kita kembangkan dengan menggunakan 'localhost', jadi itu akan menjadi masalah kecil. Untuk mengatasinya, kita perlu mengkonfigurasi tunnel yang aman ke komputer lokal kita.

Localtunnel adalah perangkat lunak kecil yang menciptakan tunnel yang aman antara mesin lokal Anda dan domain yang dapat diakses publik. Ini berguna untuk pengujian Webhook, namun Anda juga dapat menggunakannya untuk berbagi URL nyata ke aplikasi web yang berjalan di mesin pengembangan Anda untuk tujuan pengujian, umpan balik, atau tugas lainnya.

Anda harus memiliki Node.js untuk dapat menginstal localtunnel. Lalu cukup buka konsol atau terminal, dan jalankan:

$ npm install -g localtunnel

Untuk membuat tunnel, jalankan:

$ lt --port 5000 --subdomain pedroalonso

Itu akan memetakan URL 'https://pedroalonso.localtunnel.me' ke 'localhost: 5000'. Jika Anda menjalankan proyek Anda di IIS Express, Anda mungkin akan menggunakan port yang berbeda, jadi Anda harus memikirkannya dalam perintah Anda.

Setelah localtunnel disiapkan dan proyek kita berjalan, saya telah menambahkan sebuah breakpoint di Visual Studio untuk mengevaluasi data yang saya dapatkan. Seperti yang dapat Anda lihat di tangkapan layar ini, saya telah memetakan objek kejadian JSON ke objek dinamis C#.

Event Mapped to Dynamic Oject

Mengambil kejadian dari API PayPal menggunakan Id kejadian, kita juga mendapatkan detail kejadian, seperti yang dapat Anda lihat di sini:

WebHook Event

Kesimpulan

Webhooks menjadi cara standar untuk REST API untuk memberi tahu aplikasi tentang kejadian-kejadian. Seperti yang Anda lihat, mereka cukup mudah ditangani, dan mereka digunakan oleh banyak perusahaan seperti Stripe, SendGrid, MailChimp, dll. PayPal dulu memiliki Instant Payment Notification, dan ini masih digunakan, namun mereka menyarankan untuk menerapkan Webhooks bila memungkinkan.

Saya pikir akan sangat menarik jika lebih banyak aplikasi konsumen yang ditawarkan Webhooks juga. Kemampuan untuk memulai sebuah proses berdasarkan sebuah kejadian dalam aplikasi terpisah sangat berguna dan menawarkan sekilas pada masa depan web real-time.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.