Klien PHP untuk berinteraksi dengan GoCardless Pro API.
Cara yang disarankan untuk menginstal gocardless-pro
adalah menggunakan Composer.
# Install Composer
curl -sS https://getcomposer.org/installer | php
Selanjutnya, jalankan perintah Composer untuk menginstal gocardless-pro
versi stabil terbaru.
php composer.phar require gocardless/gocardless-pro
Setelah menginstal, Anda perlu memerlukan autoloader Komposer:
require ' vendor/autoload.php ' ;
Buat instans GoCardlessProClient
, berikan token akses Anda dan lingkungan yang ingin Anda gunakan. Kami sangat menyarankan untuk menyimpan token akses Anda sebagai variabel lingkungan, bukan langsung dalam kode Anda. Anda dapat dengan mudah memuat variabel lingkungan dari file .env
dengan menggunakan sesuatu seperti phpdotenv, namun jauhkan dari kontrol versi!
$ access_token = getenv ( ' GC_ACCESS_TOKEN ' );
$ client = new GoCardlessPro Client ([
' access_token ' => $ access_token ,
' environment ' => GoCardlessPro Environment :: SANDBOX
]);
Anda dapat membuat access_token
dari tab "Pengembang" di dasbor GoCardless Anda.
Lingkungannya bisa berupa GoCardlessProEnvironment::SANDBOX
atau GoCardlessProEnvironment::LIVE
, bergantung pada apakah Anda ingin menggunakan sandbox atau API langsung.
Untuk dokumentasi lengkap, lihat dokumen API kami.
Anda dapat membuat permintaan untuk mendapatkan daftar sumber daya menggunakan metode list
.
$ client -> customers ()-> list ();
Catatan: README ini akan digunakan oleh pelanggan secara keseluruhan, tetapi setiap sumber daya di API tersedia di perpustakaan ini.
Jika Anda perlu meneruskan opsi apa pun, argumen terakhir (atau satu-satunya, jika tidak ada parameter URL) ke list()
adalah serangkaian parameter URL:
$ customers = $ client -> customers ()-> list ([ ' params ' => [ ' limit ' => 400 ]]);
Panggilan ke list()
mengembalikan instance ListResponse
. Anda dapat menggunakan atribut records
untuk mengulangi hasil.
echo count ( $ customers -> records );
foreach ( $ customers -> records as $ resource ) {
echo $ resource -> given_name ;
}
Jika parameter URL diperlukan, tanda tangan metode akan berisi argumen yang diperlukan:
$ customer = $ client -> customers ()-> get ( $ customer_id );
echo $ customer -> given_name ;
Seperti halnya daftar, argumen terakhir dapat berupa array opsi, dengan parameter URL apa pun yang diberikan:
$ client -> customers ()-> get ( $ customer_id , [ ' params ' => [ ' some_flag ' => true ]]);
Sumber daya individual dan instans ListResponse memiliki atribut api_response
, yang memungkinkan Anda mengakses properti permintaan berikut:
status
headers
body
$ api_response = $ client -> customers ()-> get ( $ customer_id )-> api_response ;
echo $ api_response -> status_code ;
Untuk permintaan POST dan PUT, Anda perlu menyediakan isi permintaan Anda dengan meneruskannya sebagai argumen pertama.
$ client -> customers ()-> create ([
' params ' => [ ' given_name ' => ' Pete ' , ' family_name ' => ' Hamilton ' ]
]);
Seperti halnya permintaan GET, jika ada parameter yang diperlukan, parameter ini harus didahulukan:
$ client -> customers ()-> update ( $ customer_id , [
' params ' => [ ' family_name ' => ' Smith ' ]
]);
API GoCardless menyertakan kunci idempotensi. Pustaka akan secara otomatis memasukkan ini ke dalam permintaan Anda saat Anda membuat sumber daya, mencegahnya diduplikasi jika terjadi kesalahan dengan API (misalnya masalah jaringan atau batas waktu).
Anda juga dapat menentukan kunci idempotensi Anda sendiri - Anda dapat, misalnya, menggunakan ID rekaman di database Anda, melindungi diri Anda tidak hanya dari masalah jaringan atau API, namun juga kesalahan di pihak Anda yang dapat menyebabkan pembuatan ganda:
$ client -> customers ()-> create ([
' params ' => [ ' given_name ' => ' Pete ' , ' family_name ' => ' Hamilton ' ]
' headers ' => [ ' Idempotency-Key ' => ' ABC123 ' ]
]);
Jika perpustakaan mengalami konflik kunci idempotensi (yaitu, Anda mencoba membuat sumber daya dengan kunci idempotensi yang telah Anda gunakan), perpustakaan akan secara otomatis memuat dan mengembalikan sumber daya yang sudah ada.
Ketika API mengembalikan kesalahan, perpustakaan akan mengembalikan subkelas ApiException
yang sesuai, salah satu dari:
InvalidApiUsageException
InvalidStateException
ValidationFailedException
Jenis kesalahan ini tercakup dalam dokumentasi API.
Jika kesalahannya adalah kesalahan lapisan transport HTTP (misalnya batas waktu atau masalah dalam infrastruktur GoCardless), permintaan akan otomatis dicoba ulang oleh perpustakaan hingga 3 kali, dengan penundaan 500 md di antara upaya, sebelum ApiConnectionException
dimunculkan.
Jika perpustakaan tidak dapat mengurai respons dari GoCardless, perpustakaan akan memunculkan MalformedResponseException
.
try {
$ client -> customer ()-> create ([
' params ' => [ ' invalid_name ' => ' Pete ' ]
]);
} catch ( GoCardlessPro Core Exception ApiException $ e ) {
// Api request failed / record couldn't be created.
} catch ( GoCardlessPro Core Exception MalformedResponseException $ e ) {
// Unexpected non-JSON response.
} catch ( GoCardlessPro Core Exception ApiConnectionException $ e ) {
// Network error.
}
Properti pengecualian dapat diakses dengan metode berikut:
$e->getType();
$e->getCode();
$e->getErrors();
$e->getDocumentationUrl();
$e->getMessage();
$e->getRequestId();
$e->getApiResponse();
GoCardless mendukung webhook, memungkinkan Anda menerima notifikasi real-time ketika terjadi sesuatu di akun Anda, sehingga Anda dapat mengambil tindakan otomatis sebagai respons, misalnya:
Klien memungkinkan Anda memvalidasi bahwa webhook yang Anda terima benar-benar dari GoCardless, dan menguraikannya ke dalam objek GoCardlessProResourcesEvent
yang mudah digunakan:
// When you create a webhook endpoint, you can specify a secret. When GoCardless sends
// you a webhook, it will sign the body using that secret. Since only you and GoCardless
// know the secret, you can check the signature and ensure that the webhook is truly
// from GoCardless.
//
// We recommend storing your webhook endpoint secret in an environment variable
// for security, but you could include it as a string directly in your code
$ webhook_endpoint_secret = getenv ( ' GOCARDLESS_WEBHOOK_ENDPOINT_SECRET ' );
$ request_body = file_get_contents ( ' php://input ' );
$ headers = getallheaders ();
$ signature_header = $ headers [ ' Webhook-Signature ' ];
try {
$ events = GoCardlessPro Webhook :: parse ( $ request_body , $ signature_header , $ webhook_endpoint_secret );
foreach ( $ events as $ event ) {
// You can access each event in the webhook.
echo $ event -> id ;
}
header ( ' HTTP/1.1 200 OK ' );
} catch ( GoCardlessPro Core Exception InvalidSignatureException ) {
// The webhook doesn't appear to be genuinely from GoCardless, as the signature
// included in the `Webhook-Signature` header doesn't match the one computed with
// your webhook endpoint secret and the body.
header ( ' HTTP/1.1 498 Invalid Token ' );
}
Untuk detail selengkapnya tentang bekerja dengan webhook, lihat panduan "Memulai" kami.
Pustaka klien ini hanya mendukung PHP >= 8.1 Rilis PHP sebelumnya sekarang dianggap sudah habis masa pakainya dan mungkin terkena kerentanan keamanan.
Klien ini dibuat secara otomatis dari Crank, sebuah rantai alat yang kami harap akan segera menjadi sumber terbuka. Masalah untuk saat ini harus dilaporkan pada repositori ini.
Harap jangan mengubah kode sumber sendiri, perubahan Anda akan ditimpa!