Pustaka Stripe PHP menyediakan akses mudah ke Stripe API dari aplikasi yang ditulis dalam bahasa PHP. Ini mencakup serangkaian kelas yang telah ditentukan sebelumnya untuk sumber daya API yang menginisialisasi dirinya sendiri secara dinamis dari respons API sehingga membuatnya kompatibel dengan berbagai versi Stripe API.
PHP 5.6.0 dan yang lebih baru.
Anda dapat menginstal binding melalui Composer. Jalankan perintah berikut:
composer require stripe/stripe-php
Untuk menggunakan binding, gunakan autoload Composer:
require_once ' vendor/autoload.php ' ;
Jika Anda tidak ingin menggunakan Composer, Anda dapat mendownload rilis terbaru. Kemudian, untuk menggunakan binding, sertakan file init.php
.
require_once ' /path/to/stripe-php/init.php ' ;
Pengikatan memerlukan ekstensi berikut agar dapat berfungsi dengan baik:
curl
, meskipun Anda dapat menggunakan klien non-cURL Anda sendiri jika maujson
mbstring
(String Multibita)Jika Anda menggunakan Composer, dependensi ini akan ditangani secara otomatis. Jika Anda menginstal secara manual, Anda pasti ingin memastikan bahwa ekstensi ini tersedia.
Penggunaan sederhana terlihat seperti:
$ stripe = new Stripe StripeClient ( ' sk_test_BQokikJOvBiI2HlWgH4olfQ2 ' );
$ customer = $ stripe -> customers -> create ([
' description ' => ' example customer ' ,
' email ' => ' [email protected] ' ,
' payment_method ' => ' pm_card_visa ' ,
]);
echo $ customer ;
Anda dapat terus menggunakan pola integrasi lama yang digunakan sebelum versi 7.33.0. Tinjau panduan migrasi untuk perubahan pola klien/layanan yang kompatibel.
Lihat dokumen PHP API.
Lihat demonstrasi video yang mencakup cara menggunakan perpustakaan.
Jika Anda menggunakan PHP 5.4 atau 5.5, Anda harus mempertimbangkan untuk mengupgrade lingkungan Anda karena versi tersebut telah melewati masa pakainya masing-masing sejak September 2015 dan Juli 2016. Jika tidak, Anda masih dapat menggunakan Stripe dengan mengunduh stripe-php v6.43.1 (zip, tar.gz) dari halaman rilis kami. Versi ini akan berfungsi tetapi mungkin tidak mendukung fitur terbaru yang kami tambahkan sejak versi ini dirilis dan memutakhirkan PHP adalah tindakan terbaik.
Jika Anda menggunakan PHP 5.3, Anda harus meningkatkan lingkungan Anda karena versi ini telah melewati masa pakainya sejak Agustus 2014. Jika tidak, Anda dapat mengunduh v5.9.2 (zip, tar.gz) dari halaman rilis kami. Versi ini akan terus berfungsi dengan versi baru Stripe API untuk semua penggunaan umum.
Catatan Kami tidak menyarankan mengurangi waktu tunggu untuk panggilan non-baca saja (misalnya pembuatan biaya), karena meskipun Anda kehabisan waktu secara lokal, permintaan di pihak Stripe masih dapat diselesaikan. Jika Anda mengurangi waktu tunggu pada panggilan ini, pastikan untuk menggunakan token idempotensi untuk menghindari eksekusi transaksi yang sama dua kali sebagai akibat dari logika percobaan ulang batas waktu.
Untuk mengubah batas waktu permintaan (koneksi atau total, dalam hitungan detik) Anda harus memberi tahu klien API untuk menggunakan CurlClient selain defaultnya. Anda akan mengatur batas waktu di CurlClient itu.
// set up your tweaked Curl client
$ curl = new Stripe HttpClient CurlClient ();
$ curl -> setTimeout ( 10 ); // default is StripeHttpClientCurlClient::DEFAULT_TIMEOUT
$ curl -> setConnectTimeout ( 5 ); // default is StripeHttpClientCurlClient::DEFAULT_CONNECT_TIMEOUT
echo $ curl -> getTimeout (); // 10
echo $ curl -> getConnectTimeout (); // 5
// tell Stripe to use the tweaked client
Stripe ApiRequestor :: setHttpClient ( $ curl );
// use the Stripe API client as you normally would
Perlu menyetel proxy untuk permintaan Anda? Teruskan array CURLOPT_*
yang diperlukan ke konstruktor CurlClient, menggunakan sintaksis yang sama seperti curl_stopt_array()
. Ini akan menyetel opsi cURL default untuk setiap permintaan HTTP yang dibuat oleh SDK, meskipun banyak opsi yang lebih umum (misalnya batas waktu; lihat di atas tentang cara menyetelnya) akan diganti oleh klien meskipun disetel di sini.
// set up your tweaked Curl client
$ curl = new Stripe HttpClient CurlClient ([ CURLOPT_PROXY => ' proxy.local:80 ' ]);
// tell Stripe to use the tweaked client
Stripe ApiRequestor :: setHttpClient ( $ curl );
Sebagai alternatif, callable dapat diteruskan ke konstruktor CurlClient yang mengembalikan array di atas berdasarkan input permintaan. Lihat testDefaultOptions()
di tests/CurlClientTest.php
untuk contoh perilaku ini. Perhatikan bahwa callable dipanggil di awal setiap permintaan API, sebelum permintaan dikirim.
Pustaka melakukan pencatatan minimal, namun dapat dikonfigurasi dengan logger yang kompatibel PSR-3
sehingga pesan berakhir di sana, bukan error_log
:
Stripe Stripe :: setLogger ( $ logger );
Anda dapat mengakses data dari respons API terakhir pada objek apa pun melalui getLastResponse()
.
$ customer = $ stripe -> customers -> create ([
' description ' => ' example customer ' ,
]);
echo $ customer -> getLastResponse ()-> headers [ ' Request-Id ' ];
API Stripe sekarang mengharuskan semua koneksi menggunakan TLS 1.2. Beberapa sistem (terutama beberapa versi CentOS dan RHEL yang lebih lama) mampu menggunakan TLS 1.2 tetapi akan menggunakan TLS 1.0 atau 1.1 secara default. Dalam hal ini, Anda akan mendapatkan invalid_request_error
dengan pesan kesalahan berikut: "Stripe tidak lagi mendukung permintaan API yang dibuat dengan TLS 1.0. Harap mulai koneksi HTTPS dengan TLS 1.2 atau lebih baru. Anda dapat mempelajari lebih lanjut tentang ini di https://stripe .com/blog/upgrade-tls.".
Tindakan yang disarankan adalah memperbarui paket cURL dan OpenSSL Anda sehingga TLS 1.2 digunakan secara default, namun jika hal tersebut tidak memungkinkan, Anda mungkin dapat mengatasi masalah tersebut dengan mengatur opsi CURLOPT_SSLVERSION
ke CURL_SSLVERSION_TLSv1
atau CURL_SSLVERSION_TLSv1_2
:
$ curl = new Stripe HttpClient CurlClient ([ CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1 ]);
Stripe ApiRequestor :: setHttpClient ( $ curl );
Untuk aplikasi yang perlu menggunakan beberapa kunci selama masa proses, seperti aplikasi yang menggunakan Stripe Connect, Anda juga dapat menyetel kunci dan/atau akun per permintaan:
$ customers = $ stripe -> customers -> all ([],[
' api_key ' => ' sk_test_... ' ,
' stripe_account ' => ' acct_... '
]);
$ stripe -> customers -> retrieve ( ' cus_123456789 ' , [], [
' api_key ' => ' sk_test_... ' ,
' stripe_account ' => ' acct_... '
]);
Secara default, perpustakaan akan menggunakan bundel internal sertifikat CA yang dikenal, tetapi Anda dapat mengonfigurasinya sendiri:
Stripe Stripe :: setCABundlePath ( " path/to/ca/bundle " );
Pustaka dapat dikonfigurasi untuk secara otomatis mencoba ulang permintaan yang gagal karena masalah jaringan yang terputus-putus:
Stripe Stripe :: setMaxNetworkRetries ( 2 );
Kunci idempotensi ditambahkan ke permintaan untuk menjamin percobaan ulang aman.
Secara default, perpustakaan mengirimkan telemetri ke Stripe mengenai latensi permintaan dan penggunaan fitur. Angka-angka ini membantu Stripe meningkatkan latensi keseluruhan API-nya untuk semua pengguna, dan meningkatkan fitur-fitur populer.
Anda dapat menonaktifkan perilaku ini jika Anda mau:
Stripe Stripe :: setEnableTelemetry ( false );
Stripe memiliki fitur dalam tahap beta yang dapat diakses melalui versi beta paket ini. Kami ingin Anda mencobanya dan berbagi masukan dengan kami sebelum fitur ini mencapai fase stabil. Gunakan perintah composer require
dengan versi persis yang ditentukan untuk menginstal versi beta paket stripe-php.
composer require stripe/stripe-php:v9.2.0-beta.1
Catatan Mungkin ada perubahan yang dapat mengganggu antar versi beta. Oleh karena itu kami menyarankan untuk menyematkan versi paket ke versi beta tertentu di file composer.json Anda. Dengan cara ini Anda dapat menginstal versi yang sama setiap kali tanpa merusak perubahan kecuali Anda sengaja mencari versi beta terbaru.
Kami sangat menyarankan untuk memperhatikan kapan fitur beta yang Anda minati beralih dari beta ke stabil sehingga Anda dapat beralih dari menggunakan SDK versi beta ke versi stabil.
Jika fitur beta Anda memerlukan header Stripe-Version
untuk dikirim, atur properti apiVersion
dari objek config
dengan menggunakan fungsi addBetaVersion
:
Stripe :: addBetaVersion ( " feature_beta " , " v3 " );
Jika Anda ingin mengirim permintaan ke API yang tidak terdokumentasi (misalnya Anda berada dalam versi beta pribadi), atau jika Anda lebih memilih untuk mengabaikan definisi metode di perpustakaan dan menentukan detail permintaan Anda secara langsung, Anda dapat menggunakan metode rawRequest
di Klien Stripe.
$ stripe = new Stripe StripeClient ( ' sk_test_xyz ' );
$ response = $ stripe -> rawRequest ( ' post ' , ' /v1/beta_endpoint ' , [
" caveat " : " emptor "
], [
" stripe_version " => " 2022-11_15 " ,
]);
// $response->body is a string, you can call $stripe->deserialize to get a StripeStripeObject.
$ obj = $ stripe -> deserialize ( $ response -> body );
// For GET requests, the params argument must be null, and you should write the query string explicitly.
$ get_response = $ stripe -> rawRequest ( ' get ' , ' /v1/beta_endpoint?caveat=emptor ' , null , [
" stripe_version " => " 2022-11_15 " ,
]);
Fitur baru dan perbaikan bug dirilis pada versi utama terbaru dari perpustakaan Stripe PHP. Jika Anda menggunakan versi utama yang lebih lama, kami menyarankan Anda meningkatkan ke versi terbaru untuk menggunakan fitur baru dan perbaikan bug termasuk untuk kerentanan keamanan. Versi utama paket yang lebih lama akan terus tersedia untuk digunakan, tetapi tidak akan menerima pembaruan apa pun.
Dapatkan Komposer. Misalnya, di Mac OS:
brew install composer
Instal dependensi:
composer install
Test suite bergantung pada stripe-mock, jadi pastikan untuk mengambil dan menjalankannya dari terminal latar belakang (README stripe-mock juga berisi instruksi untuk menginstal melalui Homebrew dan metode lainnya):
go install github.com/stripe/stripe-mock@latest
stripe-mock
Instal dependensi seperti yang disebutkan di atas (yang akan menyelesaikan PHPUnit), lalu Anda dapat menjalankan test suite:
./vendor/bin/phpunit
Atau untuk menjalankan file pengujian individual:
./vendor/bin/phpunit tests/Stripe/UtilTest.php
Perbarui sertifikat CA yang dibundel dari rilis Mozilla cURL:
./update_certs.php
Perpustakaan menggunakan PHP CS Fixer untuk pemformatan kode. Kode harus diformat sebelum PR dikirimkan, jika tidak, CI akan gagal. Jalankan pemformat dengan:
./vendor/bin/php-cs-fixer fix -v .
Apakah Anda sedang menulis plugin yang mengintegrasikan Stripe dan menyematkan perpustakaan kami? Kemudian silakan gunakan fungsi setAppInfo
untuk mengidentifikasi plugin Anda. Misalnya:
Stripe Stripe :: setAppInfo ( " MyAwesomePlugin " , " 1.2.34 " , " https://myawesomeplugin.info " );
Metode ini harus dipanggil satu kali, sebelum permintaan apa pun dikirim ke API. Parameter kedua dan ketiga bersifat opsional.
Lihat paragraf "Masalah kompatibilitas SSL/TLS" di atas untuk konteks selengkapnya. Jika Anda ingin memastikan bahwa plugin Anda dapat digunakan di semua sistem, Anda harus menambahkan opsi konfigurasi agar pengguna dapat memilih di antara nilai yang berbeda untuk CURLOPT_SSLVERSION
: none (default), CURL_SSLVERSION_TLSv1
dan CURL_SSLVERSION_TLSv1_2
.