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

Cara Menerima Pembayaran Dengan Stripe

by
Read Time:13 minsLanguages:

Indonesian (Bahasa Indonesia) translation by Suci Rohini (you can also view the original English article)

Memproses kartu kredit sayangnya jauh lebih sulit daripada yang kita harapkan, sebagai pengembang. Mengingat bahwa itu adalah tugas yang umum, apakah diperlukan kita melompat melalui lingkaran yang tak terhitung jumlahnya (dikelilingi oleh api, tentu saja) untuk tujuan semata-mata memproses pembayaran? Pedagang? Gateway? SSL? Keamanan? Sangat cepat, operasi yang tampaknya sederhana dapat menjadi tugas yang sangat membingungkan dan, yang lebih penting, berbahaya. Kapan pun Anda menemukan diri Anda menangani data sensitif pengguna, sebaiknya Anda berada di jari-jari kaki Anda.

Stripe menerjemahkan operasi yang rumit, membingungkan, dan berbahaya menjadi panggilan API sederhana.

Bukankah akan luar biasa jika ada layanan yang membuat proses ini semudah mungkin? Layanan yang dibuat oleh pengembang untuk pengembang. Pikiran apa itu! Masukkan Stripe; tidak ada akun pedagang, tidak ada gateway. Panggilan API, bersama dengan beberapa panduan keamanan, adalah semua yang Anda butuhkan untuk mulai menerima pembayaran kartu kredit hari ini.

Meskipun Stripe tidak gratis, mereka hanya meminta 2.9% dari setiap tagihan (plus 0.30 sen). Itu dia. Tidak ada biaya penyiapan, biaya penyimpanan, biaya tersembunyi - tidak ada itu. Hanya 2.9%. Tidak buruk!


5 Fitur Stripe Utama

  1. Sederhana: Memproses kartu kredit secara manual itu sulit dan berbahaya. Dengan Stripe, melakukannya sesuatu yang mudah! Anda bahkan dapat memproses tagihan dari baris perintah!
  2. Murah: Berbagai pedagang pembayaran terkenal karena biaya tersembunyi mereka. Stripe memberi tahu Anda di depan apa yang dapat Anda harapkan untuk dibayar: 2.9% per charge + 30 sen. Tanpa biaya penyiapan. Tidak ada biaya tersembunyi. Tidak ada biaya penyimpanan kartu.
  3. API Intuitif: API Stripe bersih, tenang, dan mudah digunakan.
  4. Digunakan oleh Anak-Anak Keren: Jika adopsi merupakan masalah, itu tidak perlu. Layanan tak terhitung memanfaatkan Stripe, termasuk Reddit, Grooveshark, dan Shopify.
  5. Dibangun oleh Pengembang: Sangat jelas, Stripe dibuat untuk menggaruk gatal pengembang. Tim ini penuh dengan pengembang dan pengusaha, sama seperti Anda.

Mari kita lakukan

Terjual? Aku juga. Mari kita proses pembayaran uji pertama. Tentu saja, sebelum memulai, kunjungi stripe.com, buat akun baru (gratis), dan isi berbagai formulir, seperti deskriptor pernyataan dan informasi perbankan Anda.

Perhatian Stripe pada keanggunan meluas ke departemen desainnya.

Pengisian pengguna membutuhkan dua langkah inti:

  1. Ambil informasi kartu kredit pengguna, dan kirim permintaan AJAX ke server Stripe, yang akan mengembalikan token unik yang mewakili data aman ini.
  2. Menggunakan bahasa pilihan sisi server Anda (PHP untuk artikel ini), buat biaya Stripe baru, melewati token unik.

Buat Formulir Pembayaran

Tentu saja, langkah pertama adalah membangun formulir pembayaran untuk produk Anda. Anda memiliki dua opsi: gunakan skrip pembayaran Stripe, yang akan secara otomatis membuat formulir, validasi masukan pengguna, dan buat token unik untuk data kartu kredit pengguna. Dalam situasi ketika konfigurasi dan styling fleksibel, ini adalah rute yang sangat baik untuk diambil. Masukkan tag skrip, bersama dengan beberapa atribut HTML5 khusus, dan selesai!

Stripe menawarkan formulir yang dapat disematkan yang semakin mempercepat proses penerimaan pembayaran.

Namun, dalam sebagian besar situasi, Anda perlu kontrol penuh. Karena itu, untuk keperluan artikel ini, kita akan menggunakan formulir khusus. Di bagian ini, kita akan menyelesaikan tiga hal:

  1. Gunakan formulir untuk mengumpulkan informasi kartu kredit pengguna
  2. Konversikan data tersebut menjadi token penggunaan tunggal unik
  3. Kirim formulir ke server, bersama dengan token

Bentuk pembayaran dasar mungkin terlihat seperti:

Perhatikan bagaimana kita tidak memerlukan banyak informasi untuk memproses kartu kredit. Secara teknis, satu-satunya informasi yang dituntut oleh Stripe adalah nomor kartu kredit dan tanggal kedaluwarsa. Namun, sebagai aturan praktis, semakin banyak informasi yang Anda ambil dari pengguna, semakin baik. Seandainya tuduhan itu disengketakan, informasi tambahan ini akan berguna. Atau, dengan kata lain, semakin banyak informasi yang Anda minta, semakin besar kemungkinan pemilik sebenarnya dari kartu kredit menempatkan transaksi. Kuncinya adalah menemukan garis antara cukup dan banyak sehingga pengguna tidak repot mengisi formulir. Minimal, minta nama pengguna, alamat email, nomor kartu kredit, tanggal kedaluwarsa, dan nomor CVC.

Untuk melanjutkan pengeboran ke kepala Anda, jangan pernah mengizinkan data kartu kredit sensitif untuk menyentuh server Anda. Melakukan hal itu berpotensi menciptakan dunia yang terluka, jika dilakukan dengan tidak benar. Sebaliknya, ambil jalan mudah: pastikan bahwa input untuk data kartu kredit pengguna tidak mengandung atribut nama. Dengan mengabaikan atribut ini, data tidak dapat diposkan ke server Anda.

Perhatikan dengan cermat atribut khusus pada input, seperti data-stripe="number". Stripe menawarkan plugin, stripe.js, yang membantu dalam proses mengumpulkan data yang disediakan pengguna, dan menghasilkan token. Stripe akan mencari atribut-atribut itu dan mengambil nilai masing-masing.

Untuk menggunakan stripe.js, rujuk skrip dalam proyek Anda, dan setel kunci yang dapat dipublikasikan, yang akan diberikan saat Anda mendaftar dengan Stripe. Kita juga akan menggunakan jQuery dalam artikel ini, meskipun tentu tidak diperlukan.

Pikirkan setPublishableKey sebagai cara mengidentifikasi situs web Anda saat berkomunikasi dengan Stripe. Setelah mendaftar, Anda akan disajikan dengan dua versi berbeda dari kunci ini, untuk pengujian dan produksi, masing-masing.

Selanjutnya, kita perlu membuat token unik, sekali pakai untuk data kartu kredit pengguna. Kita dapat menggunakan objek Stripe, yang disediakan oleh skrip yang diimpor, untuk tujuan ini. Lebih baik lagi, kita tidak perlu khawatir tentang serialisasi data formulir pembayaran; cukup melewati objek bentuk jQuery, dan Stripe akan menangani sisanya.

Dengan sedikit JavaScript ini, ketika formulir pembayaran dikirimkan, Stripe akan mencoba untuk menghasilkan token sekali pakai, menggunakan data terkait dari input yang menyertakan atribut khusus stripe-. Argumen kedua pada metode create adalah callback yang akan menerima token (respons.id) dari server Stripe, dan berjalan sesuai dengan itu.

Dalam callback ini, penting untuk memverifikasi hasilnya (apakah semua informasi yang diberikan benar), masukkan token ke input tersembunyi, dan kirim formulir ke server Anda. Sekali lagi, perhatikan bahwa informasi kartu kredit seharusnya/tidak akan memukul server Anda - hanya data token dan non-sensitif. Ini penting, jadi tulis penerimaan atau tes fungsional untuk memverifikasinya.

Callback Anda mungkin terlihat seperti ini:

Itu sangat sederhana! Kirimkan permintaan AJAX ke API Stripe (menggunakan plugin JavaScript bermanfaat mereka), ambil token yang dibuat, masukkan token ke dalam formulir, dan poskan ke server Anda!

Pengisian

Jika mengikuti, pada titik ini, Anda berhasil membuat token sekali pakai dan mengirimkan formulir pembayaran. Sekarang, saatnya untuk pilihan bahasa sisi server Anda untuk secara fisik membuat tagihan. Ingat, di bagian sebelumnya, tidak ada tagihan yang dilakukan. Kita hanya menghasilkan token yang mewakili data kartu kredit.

Stripe menawarkan sejumlah perpustakaan sisi server untuk mendaftarkan biaya baru, atau bahkan mengatur langganan. Peluang sangat tinggi sehingga bahasa yang Anda pilih terwakili (PHP, Ruby, Python, dll.).

Mirip dengan bagian sebelumnya, mengirimkan tagihan baru dapat diselesaikan dalam beberapa langkah:

  1. Deklarasikan kunci API Anda
  2. Menggunakan pustaka Stripe, membuat panggilan API, melewati detail transaksi
  3. Validasi tagihan, dan lanjutkan sesuai.

Lihat Library page Stripe untuk petunjuk pemasangan. Jika menggunakan PHP, karena kami akan berada di artikel ini, sebaiknya Anda memanfaatkan Composer untuk mengunduh paket Stripe.

Komposer adalah masa depan dari manajemen ketergantungan PHP, jadi naiklah sekarang, jika Anda belum melakukannya. Biaya Stripe dasar mungkin berupa:

Itu dia! Kunci API akan mengautentikasi Anda sebagai pengguna Stripe yang valid. Mirip dengan kunci yang dipublikasikan, Stripe akan memberi Anda dua versi berbeda dari kunci ini: satu untuk pengujian dan produksi, masing-masing.

Harap dicatat bahwa semua biaya untuk Stripe harus dinyatakan dalam sen (berdasarkan mata uang, tentu saja). Jika harga disimpan dalam basis data Anda sebagai dolar, euro, atau pound, maka Anda harus mengompensasi dengan tepat, ketika membuat tagihan.

Jika tidak ada pengecualian, Anda dapat yakin bahwa tagihan telah berhasil diproses. Lanjutkan dengan menawarkan pengguna unduhan digital mereka, atau mendaftarkan pembelian mereka dengan sistem Anda.

Percaya atau tidak, karya Stripe telah selesai. Ada lebih banyak lagi yang dapat Anda lakukan, seperti membuat pelanggan dan mengelola langganan, tetapi, ketika tiba saatnya memproses satu pembayaran, Anda selesai! ... Kecuali Anda belum.


SSL

Sementara, ya, karya Stripe selesai, milik Anda, di sisi lain, tidak. Terlepas dari penyedia pembayaran, kapan pun Anda bekerja dengan informasi kartu kredit, keamanan harus menjadi perhatian utama. Kami telah mengambil langkah pertama, dengan memastikan bahwa data kartu kredit tidak pernah menyentuh server, tetapi masih ada lagi yang harus dilakukan. Selanjutnya kita harus mengamankan koneksi pengguna ke server Anda. Dengan kata lain, Anda memerlukan sertifikat SSL. Dalam situasi apa pun Anda tidak boleh melewati langkah ini!

“SSL (Secure Sockets Layer) adalah teknologi keamanan standar untuk membuat tautan terenkripsi antara server web dan browser. Tautan ini memastikan bahwa semua data yang dilewatkan antara server web dan browser tetap bersifat pribadi dan integral. ”- info.ssl.com

Ketika seorang pengguna menawarkan situs web informasi kartu kredit mereka, mereka akan berharap untuk melihat https di dalam address bar. Untungnya, membeli sertifikat SSL jauh lebih mudah daripada dulu. Bahkan, sebagian besar host menawarkan add-on SSL, yang mengubah seluruh proses menjadi satu klik. Hal yang sama berlaku untuk berbagai opsi SaaS, seperti Pagoda Box atau Heroku.

Tips: Setelah Anda mengaktifkan SSL, mungkin gambar dan aset akan rusak. Untuk memperbaikinya, pastikan bahwa semua URL menggunakan https, bukan http. Atau, sebagai solusi yang lebih baik, gunakan URL protokol-relatif.

Dengan teknik ini, dipopulerkan oleh Paul Irish, jika halaman saat ini menggunakan HTTPS, maka aset tersebut juga akan diminta dengan HTTPS.

Dengan asumsi bahwa host Anda menawarkan pengaya SSL sekali klik, cukup arahkan pengguna Anda ke https:// versi laman pesanan, dan Anda sudah siap!


Tips dan Trik

Contoh-contoh dalam artikel ini sederhana dan kebanyakan prosedural. Peluangnya tinggi, bahwa Anda akan bekerja dengan kerangka kerja yang mendukung beberapa lingkungan, perutean, dan fasilitas pengujian. Gunakan tips berikut sebagai awal untuk mengintegrasikan Stripe dengan kerangka kerja pilihan Anda.

1. Nomor Kartu Kredit Khusus

Jelas, Anda tidak ingin menggunakan nomor kartu kredit nyata untuk menguji formulir pembayaran Anda! Untungnya, Stripe sudah memikirkan ini; mereka menyertakan sejumlah nomor kartu kredit yang menyimulasikan tanggapan spesifik, seperti tagihan yang berhasil, nomor tidak valid, kode CVC salah, dan banyak lagi.

Berikut adalah beberapa nomor kartu yang sering Anda rujuk:

  • Visa Approved: 4242424242424242
  • Mastercard Approved: 5555555555554444
  • Card Declined: 4000000000000002
  • Incorrect Number: 4242424242424241

2. Gunakan Lingkungan dengan Bijak

Saat bekerja dengan Stripe, Anda akan memiliki dua kunci unik, yang mewakili API dan kunci yang dapat dipublikasikan. Selanjutnya, ada varian pengujian dan produksi untuk masing-masing ini. Kebanyakan kerangka menawarkan cara untuk mengelola banyak lingkungan. Dengan cara ini, untuk pengembangan, aplikasi Anda akan menggunakan kunci pengujian dengan benar, sementara, setelah diterapkan, versi produksi akan direferensikan.

Di bawah ini adalah proyek khusus Laravel. Laravel menyediakan sistem lingkungan yang sederhana. Tambahkan file konfigurasi dalam folder yang sesuai dengan nama lingkungan, dan nilai-nilai tersebut akan mengambil alih di atas default.

Pertama, kita menetapkan kunci produksi:

Dan untuk pengembangan, kita mengganti kunci produksi dengan rekan uji mereka:

Sekarang, ketika aplikasi membutuhkan kunci API, menggunakan Config::get('stripe.apiKey'), nilai yang dikembalikan akan ditentukan oleh lingkungan. Sukses!

3. Jangan Hubungkan Aplikasi Anda ke Stripe

Kesalahan umum yang membuat pengembang bermula dari menghubungkan aplikasi mereka ke berbagai penyedia, seperti Stripe. Aplikasi Anda seharusnya tidak peduli penyedia penagihan mana yang digunakan. Itu hanya berkaitan dengan fakta bahwa ada yang tersedia. Dengan referensi hard-coding untuk Stripe di kelas Anda, Anda membuat koneksi langsung antara dua-satu yang kemungkinan akan sulit diubah.

Tanyakan kepada diri sendiri, "Jika, di masa depan, saya perlu menukar Stripe dengan penyedia yang berbeda, seberapa sulit itu?" Petunjuk: sesuatu yang lebih besar daripada "hanya sesaat" adalah bau kode.

Sebagai gantinya, kode ke antarmuka - mungkin BillingProvider atau BillingGateway. Dengan cara ini, Anda dapat membuat berbagai implementasi antarmuka: satu untuk Stripe, atau satu untuk layanan yang berbeda sepenuhnya, jika diperlukan. Berbagai penerapan ini akan menempatkan fungsi khusus layanan. Jika, pada titik tertentu, Anda menemukan penyedia penagihan yang lebih murah daripada Stripe, menukar pelaksanaan Stripe BillingProvider dengan versi ServiceX hanya akan memakan waktu sebentar - yaitu, setelah Anda membuat implementasi baru yang menanyakan API penagihan ServiceX.

Berikut ini kerangka untuk bagaimana tampilan ini:

Sekarang setelah memiliki dua penerapan, kita dapat mereferensikan layanan penagihan pilihan kita saat ini, menggunakan injeksi ketergantungan.

Dengan gaya pengembangan ini, jika Anda akhirnya harus pindah dari Stripe, pengontrol tidak perlu disentuh. Karena Stripe tidak dikodekan dengan susah payah, itu tidak tahu bedanya!

4. Jangan Tinggalkan Pembeli Gantung

Ketika menjual barang digital, tanyakan pada diri Anda, "Apa yang harus dilakukan pembeli jika ada yang salah pada tujuan saya?" Selalu sediakan beberapa cara bagi pembeli untuk menghubungi Anda atau perusahaan Anda. Bagaimana jika email konfirmasi yang menyertakan tautan untuk mengunduh file digital tidak pernah tiba di kotak masuk pembeli? Apa yang harus mereka lakukan?

Situs dukungan, atau bahkan alamat email sederhana di halaman rumah akan membantu dalam situasi yang tak terelakkan ini.

5. Sertifikat SSL

DigiCert adalah Stripes yang direkomendasikan penyedia sertifikat SSL.

Jika Anda harus membeli sertifikat SSL secara manual, ada sejumlah layanan yang dapat dipilih. Berdasarkan pengalaman sebelumnya, Anda dapat menghabiskan waktu tiga puluh menit hingga satu jam untuk menyiapkan segala sesuatunya. Perlu diingat bahwa sebagian besar sertifikat tidak gratis, dan dapat berkisar dari $10-$500, tergantung pada penyedia.

Tim Stripe merekomendasikan DigiCert dan Namecheap, meskipun, jika Anda suka, Anda dapat mempertimbangkan solusi gratis, seperti StartSSL.

6. Jangan Mengandalkan Harga Formulir

Kesalahan sering berasal dari menggunakan data formulir untuk memuat harga produk yang dibeli, mungkin melalui input tersembunyi. Karena pengguna dapat dengan mudah mengedit nilai masukan ini, tidak bijaksana untuk bergantung padanya. Selalu ambil harga produk dari sisi server. Jangan mengandalkan formulir untuk memberi tahu Anda. Database query yang sederhana adalah opsi yang disukai.

7. File Digital Tidak Harus Dapat Diakses Publik

Aset yang Anda jual tidak boleh dapat diakses oleh publik, bahkan jika URL itu, menurut pendapat Anda, cukup panjang dan membingungkan hingga sebagian besar orang tidak akan pernah mempelajarinya. Ini adalah praktik yang buruk karena sejumlah alasan.

Sebagai gantinya, buat tabel downloads yang menampung kode pembelian unik, bersama dengan id produk asosiasinya. Dengan cara ini, ketika URI, seperti /downloads/23gsfga831g, diminta, aplikasi Anda akan:

  1. Verifikasi token yang diberikan terhadap apa yang disimpan dalam tabel database.
  2. Tanggapi dengan menawarkan unduhan untuk file yang terkait dengan token pembelian.

Untuk lebih jauh, Anda mungkin juga menerapkan batas unduhan. Mengizinkan untuk ini hanya akan mengharuskan bahwa bidang download_count ditambahkan ke tabel Purchases. Dengan setiap permintaan, jumlah itu harus ditambah satu. Setelah nomor ini mencapai ambang yang Anda tetapkan, unduhan tidak lagi disediakan. Ini dapat membantu dalam hal ketika Anda ingin memastikan bahwa tautan unduhan tidak dibagikan.


Kesimpulan

Hal yang menakjubkan tentang Stripe adalah ia menerjemahkan operasi yang rumit, membingungkan, dan berbahaya menjadi satu panggilan API sederhana. Tidak ada akun pedagang, tidak ada gateway, tidak ada biaya tersembunyi. Ada alasan mengapa mereka mengatakan bahwa Stripe itu mudah digunakan. Inilah!

Advertisement
Did you find this post useful?
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.