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

Jadi Anda Ingin Menerima Kartu Kredit Online?

by
Difficulty:BeginnerLength:LongLanguages:

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

aSampai saat ini, menerima kartu kredit di situs web itu mahal dan rumit. Tapi itu sebelum Stripe: perusahaan pemrosesan kartu kredit yang sangat berbeda dan luar biasa hebat. Hari ini, saya akan menunjukkan kepada Anda cara mendapatkan kartu kredit dalam waktu kurang dari 30 menit - tanpa mengeluarkan uang sepeser pun.

Tutorial yang Diterbitkan Ulang

Setiap beberapa minggu, kami mengunjungi kembali beberapa postingan favorit pembaca dari sepanjang sejarah situs. Tutorial ini pertama kali diterbitkan pada Juni 2012.


Cara Untuk Melakukannya

Tanpa Stripe, menerima kartu kredit di situs web adalah tugas besar. Pertama, Anda perlu membuka "akun pedagang", yang seperti rekening bank biasa, tetapi dengan biaya lebih banyak. Kemudian, Anda memerlukan "gerbang pembayaran" - karena pemrosesan kartu kredit tampaknya terjadi dalam dimensi terpisah di mana bankir berkuasa dengan tangan besi dan Lindsey Lohan memiliki karier akting yang sukses. Dan kemudian muncul pengeluaran: biaya bulanan $25. Biaya pengaturan $99. Biaya tahunan $50. Biaya gagal transaksi $0.35 (ANDA membayar ketika kartu pelanggan Anda gagal untuk melewati!). $0.25 + biaya transaksi sukses 2.0%. Biaya batch $ 2.00. $5.00 biaya-kebutuhan-poche-baru-ayah. Itu konyol. Prosesor kartu yang paling populer adalah Authorize.net, dan orang-orang di perusahaan itu (dan banyak resellernya) menghabiskan setiap hari memikirkan cara-cara baru dan konyol untuk mengambil uang Anda.


Masukkan Stripe

Pengaturan membutuhkan waktu sekitar lima menit.

Sayangnya, adalah tindakan ilegal jika menculik CEO dari Authorize.net, membakarnya dengan saus barbekyu dan menjatuhkannya ke dalam lubang luak madu. Tetapi, Anda dapat melakukan hal terbaik berikutnya: jangan menggunakan layanannya. Beralih ke Stripe. Anda tidak akan memerlukan akun pedagang atau gateway pembayaran. Stripe akan menyetor uang ke rekening bank manapun yang Anda suka. Tidak ada biaya. Setup memakan waktu sekitar lima menit. (Ya, serius.) Dan Anda membayar tepat satu hal: 2.9% + $0.30 untuk setiap transaksi kartu yang berhasil. (Jadi, jika Anda menjual sesuatu seharga $30, Anda menyimpan $28.83, dan Stripe mendapat $1.17.) Situs web ini sederhana dan intuitif dan stafnya sangat membantu. Satu-satunya kelemahannya adalah Stripe saat ini tidak tersedia di luar Amerika Serikat. (Catatan: Stripe TIDAK menerima kartu kredit dari luar negeri; Hanya saja Anda tidak dapat mendaftar untuk akun Stripe di luar AS). Mereka berupaya memperluas ke negara lain.

Sisa tutorial ini akan merinci cara menerapkan Stripe di situs web Anda dengan PHP dan Javascript (jQuery). Layanan ini juga memiliki API untuk Ruby, Python, Java, dan platform lainnya. Meskipun awalnya mungkin terlihat seperti ada banyak pekerjaan, sebenarnya tidak; Anda akan tetap berdiri dan terus maju dalam waktu singkat. Mari kita mulai:


Langkah 0: Menginstal Sertifikat SSL

Kami berhadapan dengan informasi kartu kredit, jadi tentu saja kita harus mengamankan koneksi pengguna ke server. Kita melakukan ini menggunakan sertifikat SSL dan itu bukan opsional. Tidak hanya pengguna mengharapkan untuk melihat protokol "https://" pada halaman pemesanan, Stripe juga membutuhkannya. Tapi jangan khawatir: menerapkan SSL sangat sederhana. Hampir semua penyedia hosting menawarkan instalasi sertifikat SSL otomatis. Anda cukup membeli sertifikat melalui penyedia Anda dan mereka secara otomatis menginstal dan mengkonfigurasinya untuk Anda. Anda tidak perlu melakukan hal lain di situs Anda. Jika formulir pemesanan Anda ada di http://mydomain.com/order.php, Anda cukup mengirim pelanggan ke https://mydomain.com/order.php sebagai gantinya dan koneksi akan diamankan dengan sertifikat SSL baru Anda. Itu saja!

Catatan: ada satu pengecualian. Jika halaman pesanan Anda memuat sumber seperti stylesheet, skrip, atau gambar menggunakan URL absolut (dibandingkan dengan relatif), Anda harus memastikan bahwa URL tersebut menggunakan protokol "https://". Misalnya, jika Anda memasukkan gambar pada halaman pesanan aman Anda seperti ini, Anda akan mendapat peringatan di browser bahwa halaman tersebut mengandung elemen aman dan tidak aman:

Untuk memperbaikinya, muat gambar dari URL aman, seperti ini:

Anda tidak perlu khawatir tentang masalah ini untuk url relatif (seperti "../images/someImage.jpg") karena server Anda akan secara otomatis memuat item-item ini dengan aman.


Langkah 1: Buat Akun

Kunjungi Stripe.com dan buat akun baru. Setelah Anda melewati prompt nama pengguna/kata sandi awal, klik menu "Akun Anda" di kanan atas dan buka panel "Pengaturan Akun", yang digambarkan di bawah ini. Pertama, pastikan Anda menetapkan "Penjelas Pernyataan" yang bagus. Inilah yang akan dilihat pelanggan pada laporan kartu kredit mereka. Deskriptor yang baik membantu pelanggan mengingat apa yang mereka beli sehingga mereka tidak salah mengira transaksi Anda sebagai penipuan dan membatalkan tagihan. (Ketika ini terjadi, hal ini disebut "chargeback" dan Anda akan membayar biaya $15 di atas kehilangan penjualan, jadi pastikan deskriptor Anda ditetapkan!) Selanjutnya, tentukan rekening bank tempat Anda ingin uang Anda disetorkan . Anda dipersilakan untuk menggunakan milik saya. Dan akhirnya, lihatlah tab "Tombol API". Kita akan segera menggunakannya, jadi biarkan seperti itu.


Langkah 2: Buat Formulir Pembayaran Anda

Hal berikutnya yang dibutuhkan adalah formulir yang diisi oleh pelanggan kita untuk melakukan pemesanan kartu kredit. Hari ini, kami akan menggunakan halaman PHP yang sangat disederhanakan ini, yang disebut "buy.php":

Ada tiga hal yang perlu diperhatikan tentang cuplikan kode di atas.

  1. Pertama, kita telah menetapkan tindakan formulir ke "javascript:" daripada menyediakan jalur ke skrip sisi server. (Anda akan melihat mengapa hanya dalam satu menit.)
  2. Kedua, ada potongan pendek PHP yang secara otomatis mengisi bidang tahun kedaluwarsa dengan 20 tahun ke depan sehingga kita tidak harus memperbarui itu secara manual di masa mendatang.
  3. Ketiga, tidak ada bidang formulir yang memiliki set parameter "nama". Ini sangat penting karena akan mencegah nilai bidang (seperti nomor kartu kredit) dikirim ke server kita ketika formulir dikirimkan. Kita akan membicarakan mengapa ini penting hanya dalam satu menit.

Berapa Banyak Info yang Harus Saya Kumpulkan?

Satu-satunya hal yang benar-benar harus Anda lakukan untuk menagih kartu kredit adalah nomor kartu dan tanggal kedaluwarsa. Tapi Anda selalu harus mengumpulkan setidaknya beberapa informasi tambahan. Inilah alasannya: jika seorang pelanggan membantah tagihan pada kartu mereka, Anda akan diminta untuk membuktikan bahwa mereka memang melakukan pemesanan kepada Anda.

Semakin banyak informasi yang Anda kumpulkan, semakin mudah untuk membuktikan bahwa pelanggan (sebagai lawan pencuri identitas) menempatkan pesanan di situs Anda.


Apa Selanjutnya: Gambar Besar

Oke, kita sudah menginstal SSL dan formulir pembayaran siap digunakan. Mari asumsikan kita akan menagih pelanggan $20.00 untuk pesanan ini. (Pada kenyataannya, Anda akan menghitung total berdasarkan apa yang dipesan pelanggan, dll. Terserah Anda.) Ketika dia mengisi formulir dan menekan tombol kirim, tiga hal terjadi dalam urutan ini:

  1. Menggunakan Javascript (jQuery), kita mengumpulkan nilai setiap bidang formulir. Kita meneruskan informasi ini langsung ke server Stripe, menggunakan Stripe.js.
  2. Server Stripe akan memastikan bahwa data kartu kredit terbentuk dengan baik, menyiapkan transaksi, dan mengirimkan kembali "token sekali pakai" kepada kita.
  3. Kita meneruskan token ke skrip sisi server di server kita sendiri, yang menghubungi Stripe lagi dan memicu tagihan aktual ke kartu kredit. Itu saja!

Mengapa Melakukannya Dengan Cara Ini?

Keamanan. Informasi kartu kredit pengguna tidak pernah menyentuh server kita sendiri. Kita meneruskannya langsung ke Stripe di sisi klien menggunakan Javascript. Server Stripe mengambil informasi itu dan menyiapkan transaksi. "Token" yang dikirimkan kembali kepada kita TIDAK berisi rincian kartu kredit, tetapi TIDAK mengandung ID yang memungkinkan kita memicu transaksi yang disiapkan Stripe pada akhirnya. Dengan demikian, kita dapat dengan aman meneruskan token ke server sendiri tanpa membahayakan keamanan detail kartu kredit pengguna.

Catatan: selagi Anda bisa menggunakan Stripe tanpa proses token, saya sangat mencegahnya. Jika Anda meneruskan rincian kartu kredit mentah ke server Anda sendiri, Anda harus berhati-hati untuk melindunginya dan ada banyak cara untuk mengacaukannya. Misalnya, log kesalahan server dapat dengan mudah merekam informasi sensitif, jadi Anda harus menggosoknya dengan aman dan teratur. Jika Anda menggunakan paket hosting bersama, Anda mungkin tidak memiliki kontrol yang diperlukan untuk melakukan itu. Plus, jika server Anda pernah diretas, Anda mungkin digugat oleh pelanggan yang sudah ditandai. Dan jika Anda melakukan sesuatu yang sangat bodoh seperti menyimpan informasi kartu yang tidak dienkripsi dalam database, saya pribadi akan pergi ke rumah Anda dan memukuli Anda dengan kaktus. Bermain dengan aman; gunakan proses token.


Langkah 3: Kumpulkan Nilai Formulir

Buat file Javascript baru, yang disebut "buy-controller.js". Mari mulai mengkodekan file itu dengan beberapa pemeriksaan validasi dasar:

Selanjutnya, kita perlu menambahkan file JavaScript baru ini ke elemen <head>  dari "buy.php" halaman. Kita juga akan menambahkan "Stripe.js", yang merupakan file yang di-host di server Stripe yang memungkinkan untuk menghubungi Stripe dari sisi klien untuk meneruskan detail kartu kredit dan menerima token kita. (Perhatikan bahwa kita memuat Stripe.js menggunakan protokol "https://"!) Memodifikasi elemen <head> dari "buy.php" terlihat seperti ini:


Kunci API

Sebelum dapat mengirimkan informasi kepada Stripe, kita harus memberi tahu Stripe siapa kita sebenarnya. Untuk melakukannya, kita menggunakan sepasang "kunci", yang merupakan string unik yang mengidentifikasi akun kita. Untuk menemukan kunci-kunci ini, buka panel pengaturan akun Stripe Anda dan tarik tab API Keys, digambarkan di sini:

Seperti yang Anda lihat, ada total empat kunci dalam dua set: "Test" dan "Live". Anda menggunakan set tes selama pengembangan sehingga Anda dapat memverifikasi kode Anda tanpa benar-benar mengisi daya kartu apa pun. Saat Anda siap menggunakan situs web, cukup ganti kunci uji dengan yang aktif. Ada dua kunci di setiap set: "dapat diterbitkan" dan "rahasia". (Kita akan menggunakan kunci "rahasia" di skrip sisi server setelah kita menerima token dari Stripe.) Untuk saat ini, ambil kunci uji yang dapat diterbitkan dan tambahkan ke elemen HEAD "buy.php" Seperti ini:

Peringatan: Anda HARUS menyertakan Stripe.js SEBELUM Anda mengatur kunci yang dapat diterbitkan. Selain itu, berhati-hatilah agar Anda tidak menayangkan situs web tanpa beralih ke kunci "langsung"! Dan akhirnya, pastikan untuk menjaga kunci rahasia Anda tetap aman dan rahasia!


Langkah 4: Minta Token

Kembali di bagian bawah "buy-controller.js", Kita siap menambahkan kode yang meminta token dari Stripe. Itu hanya beberapa baris:

Fungsi "createToken" (yang didefinisikan dalam Stripe.js) menerima dua parameter. Yang pertama adalah objek dengan rincian kartu kredit. Yang kedua adalah nama fungsi callback yang akan digunakan ketika server Stripe selesai mempersiapkan transaksi dan mengembalikan token. Dalam hal ini, fungsi callback disebut "stripeResponseHandler". Mari kita tambahkan fungsi itu ke bagian atas "buy-controller.js":

Fungsi ini pertama-tama memeriksa untuk melihat apakah ada kesalahan saat membuat token. Jika Stripe.js gagal mengembalikan token yang valid, biasanya karena pelanggan salah memasukkan informasi kartu kredit mereka. Mereka mungkin salah mengetik nomor atau memilih tanggal kedaluwarsa yang salah. Untungnya, pesan kesalahan yang menyertai respons akan memberi tahu Anda dengan tepat mengapa pembuatan token gagal. Stripe menjamin bahwa pesan kesalahan ini cocok untuk ditampilkan, tetapi itu tidak bertele-tele. Berharap untuk melihat string seperti "tanggal kedaluwarsa tidak valid" atau "CVC salah" daripada kalimat lengkap.

Sebaliknya, jika semuanya divalidasi dan Stripe membuat token, kita siap untuk menyerahkan token itu ke skrip sisi server dan benar-benar menempatkan biayanya. Dalam kode di atas, kita menggunakan fungsi Ajax jQuery untuk melakukan itu. Kita meneruskan token dan juga beberapa informasi yang mungkin ingin direkam dalam database: nama pelanggan dan email. Akhirnya, kita perlu tahu berapa banyak uang untuk mengisi kartu. Kita mengasumsikan $20.00 hari ini, tetapi Anda akan melewati nilai yang dihitung dari keranjang belanja Anda, dll. Kita membuang semua informasi itu ke objek JSON dan membuat panggilan Ajax ke skrip sisi server, "pay.php" (yang akan kita buat di bawah). Kemudian, kita cukup melihat respons dan menyajikan pesan sukses atau kesalahan kepada pengguna. Anda jelas akan menyesuaikan kode ini agar sesuai dengan desain situs Anda.


Langkah 5: Buat Skrip Sisi Server

Satu-satunya hal yang harus dilakukan adalah membuat skrip PHP sisi server yang sebenarnya memicu tagihan pada kartu pelanggan kita. Pertama, kita perlu perpustakaan PHP Stripe. Untuk mengunduhnya, buka situs web Stripe, klik tautan "Dokumentasi" di kanan atas, lalu pilih bagian "Perpustakaan API". (Atau Anda bisa langsung ke sana dengan mengklik di sini.) Gulir ke bawah halaman sampai Anda melihat bagian PHP, yang terlihat seperti ini:

Unduh versi terbaru dan hapus zipnya. Anda akan melihat dua item: "Stripe.php" dan folder bernama "Stripe" yang berisi banyak file PHP lainnya. Masukkan kedua item ini ke folder situs web Anda.

Sekarang, buat file baru yang disebut "pay.php". Kita akan mulai mengkodekan file ini dengan beberapa hal dasar:

Di bagian atas, kita memiliki fungsi sederhana yang akan dipanggil setiap kali skrip kita mengenai kesalahan. Ini mengembalikan objek JSON dengan dua item: "hasil" dan "errorMessage". Objek JSON ini dikirim kembali ke "buy-controller.js" (tempat kita menggunakan fungsi AJAX jQuery untuk memanggil skrip sisi server ini). Di sana, kita dapat memeriksa nilai "hasil" untuk melihat apa yang terjadi. Jika 0, skrip pembayaran selesai dengan sukses. Jika 1, skrip mengalami kesalahan dan kita dapat menggunakan item "errorMessage" untuk melaporkan apa yang terjadi pada pengguna.

Selanjutnya, kita membawa perpustakaan PHP Stripe yang diunduh sebelumnya. Tidak ada yang terlalu rumit di sini; pastikan Anda memperbarui jalur dalam pernyataan yang diperlukan ke lokasi relatif perpustakaan PHP Stripe. Setelah itu, kita memiliki kedua kunci SECRET API. Kita memanggil fungsi "setApiKey" (yang merupakan bagian dari perpustakaan PHP Stripe) dan memberikannya kunci percobaan. Dikombinasikan dengan kunci "yang dapat diterbitkan" yang kita atur sebelumnya, Stripe sekarang memiliki semua informasi yang diperlukan untuk memverifikasi identitas dan mengaitkan transaksi ini dengan akun kita. Tentu saja, ketika membuka situs webnya, kita akan mengalihkan pernyataan ini untuk menggunakan $liveAPIKey!

Peringatan: Jangan lupa untuk beralih ke kunci LIVE API ketika Anda mempublikasikan situs Anda! Anda harus mengganti kunci "publishable" di elemen HEAD dari "buy.php" dan kunci "secret", yang muncul di "pay.php", di atas.

Dan akhirnya, kita mengambil semua data yang dilewati dari panggilan AJAX di "buy-controller.js". Perhatikan bahwa Stripe mengharuskan kita menentukan jumlah biaya dalam sen. Di sini, kita meneruskan nilai dalam dolar, jadi dikalikan dengan 100 untuk mengonversinya menjadi sen.

Mengisi Kartu Sebenarnya

Berikut sisa kode untuk pay.php:

Sangat sederhana, bukan? Pertama, kita memverifikasi bahwa tidak ada variabel kita yang nol. Meskipun tidak memerlukan semuanya untuk mengisi daya kartu, kita mungkin ingin mencatat informasi ini dalam basis data atau menggunakannya untuk mengirimkan tanda terima kepada pelanggan melalui email, jadi kita tidak ingin melanjutkan jika tidak tersedia.

Kemudian, kita menggunakan metode "Stripe_Charge::create()", yang merupakan bagian dari perpustakaan PHP Stripe. Ini adalah baris yang benar-benar menagih kartu pengguna (atau tetap mencoba,). Dua item pertama dalam array cukup jelas. Yang ketiga, "card", adalah tempat kita melewati token yang diminta dari Stripe sebelumnya. Item yang keempat, "description" sangat penting. Apa pun yang dilewati di sini adalah apa yang KITA akan lihat ketika masuk ke Stripe dan melihat transaksi kita. Anda harus memilih sesuatu yang pendek yang mengidentifikasi pelanggan yang melakukan pemesanan ini. Alamat email adalah taruhan terbaik Anda, karena banyak pelanggan mungkin memiliki nama yang sama.

Mengapa Biaya Gagal Pada Saat Ini?

Jika kita berhasil mendapatkan token dari Stripe, mengapa tagihan gagal pada saat ini? Jawabannya adalah bahwa validasi Stripe yang dilakukan sebelumnya diperiksa hanya bahwa data kartu kredit terbentuk dengan baik; itu tidak menjalankan transaksi melalui jaringan kartu kredit. Mungkin saja kartu pelanggan melebihi batasnya. Atau, jika itu kartu debit, mungkin tidak ada cukup uang di akun pelanggan untuk menutup pembelian ini. Bisa juga perusahaan kartu kredit hanya menandai transaksi sebagai tidak biasa dan memerlukan persetujuan pelanggan untuk mengizinkannya (ini terjadi pada saya dengan pemegang kartu American Express). Dalam situasi seperti ini, kartu akan divalidasi dengan benar ketika kita meminta token, tetapi gagal ketika mencoba untuk mengisinya. Untungnya, Stripe membuatnya sangat mudah untuk menangani kegagalan ini. Kita cukup menggunakan blok coba/tangkap, seperti yang Anda lihat di atas.

Isi Ulang Kartu Terakhir!

Jika pelanggan itu adalah saya, Anda berada dalam jangkauan pukulan kaktus.

Jika situs web Anda perlu melakukan hal-hal, seperti membuat nomor seri untuk lisensi software, Anda harus melakukan itu SEBELUM Anda menagih kartu pelanggan. Jika Anda menagih kartu lebih dulu dan kemudian situs Anda gagal menghasilkan serial karena alasan apa pun, pelanggan Anda akan dikecualikan. (Jika pelanggan itu adalah saya, Anda berada dalam jangkauan pukulan kaktus.) Mereka bahkan dapat menghubungi perusahaan kartu kredit mereka untuk membatalkan tagihan, yang menghasilkan biaya $15 untuk Anda dan hilangnya penjualan. Jadi mainkan dengan aman: pastikan Anda memiliki segalanya untuk siap SEBELUM Anda menagih pelanggan!

Itu dia! Itu semua kode yang Anda butuhkan untuk menagih kartu kredit di situs web Anda. Sisa artikel ini membahas beberapa detail tambahan tentang penggunaan Stripe yang mungkin berguna bagi Anda:


Pengujian & Debugging

Saat menggunakan kunci API "test", kita dapat menggunakan nomor kartu kredit khusus yang memaksa Stripe untuk mengembalikan jenis respons tertentu sehingga dapat menguji kode kita secara menyeluruh. Ini nomor spesialnya:

  • 4242-4242-4242-4242: Mensimulasikan transaksi kartu yang berhasil
  • 4000-0000-0000-0002: Memaksa respons "kartu ditolak"
  • 4242-4242-4242-4241: Paksa tanggapan "nomor kartu tidak valid"

Dalam mode uji, nomor CVC 3 atau 4 digit dianggap valid. Setiap tanggal kedaluwarsa yang ada di masa depan adalah valid. Anda dapat melewati nomor CVC dua digit untuk menguji kasus kesalahan itu. Demikian juga, Anda dapat melewati tanggal apa pun di masa lalu untuk menguji tanggapan tanggal kedaluwarsa yang tidak valid. Dan akhirnya, jika Anda ingin menguji respon "jumlah tidak valid", cukup berikan non-integer (seperti 1.35) sebagai jumlah yang akan ditagihkan.

Untuk informasi lengkap tentang pengujian Stripe, Anda dapat mengunjungi halaman dokumentasinya.


Langganan, Menyimpan Info Kartu & Lainnya

Stripe memungkinkan Anda melakukan lebih dari satu kali tagihan ke kartu pelanggan. Anda dapat mengatur langganan yang akan menagih kartu sejumlah tertentu pada interval yang Anda pilih. API yang perlu Anda lakukan ini adalah bagian dari perpustakaan PHP Stripe dan situs webnya berisi dokumentasi yang luar biasa yang akan memandu Anda melalui prosesnya.

Bagaimana jika Anda ingin menyimpan informasi kartu kredit sehingga pelanggan tidak harus memasukkannya setiap kali mereka mengunjungi situs Anda? Stripe memungkinkan Anda melakukannya juga! Anda cukup membuat objek "pelanggan" dengan cara yang sama seperti yang dibuat token. Objek ini berisi semua data sensitif yang berkaitan dengan pelanggan tertentu. Stripe akan menyimpan informasi ini dengan aman di ujung mereka (yang berarti Anda tidak perlu mengambil risiko pemukulan kaktus) dan Anda dapat menagih pengguna kapan pun Anda suka hanya dengan meminta objek "pelanggan" yang tepat, seperti yang dilakukan dengan token. Sekali lagi, semua API adalah bagian dari perpustakaan PHP Stripe dan situs web akan memandu Anda melewatinya.


Lihat dalam Tindakan

Jadi begitulah: Stripe singkatnya! Jika Anda ingin melihat contoh kerja dari apa yang baru saja kita bahas dengan sedikit lebih rumit dan desain, mampir ke halaman ini dan periksa sumbernya. (Petunjuk: itu akan terlihat familiar.) Jika tidak, jika Anda memiliki pertanyaan, berikan komentar di bawah ini, lihat Halaman Dukungan Stripe atau temukan saya di Twitter: @bdkjones. Terima kasih dan semoga berhasil!

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.