ไลบรารี Stripe PHP ช่วยให้เข้าถึง Stripe API ได้อย่างสะดวกจากแอปพลิเคชันที่เขียนด้วยภาษา PHP ประกอบด้วยชุดคลาสที่กำหนดไว้ล่วงหน้าสำหรับทรัพยากร API ที่เริ่มต้นตัวเองแบบไดนามิกจากการตอบสนองของ API ซึ่งทำให้เข้ากันได้กับ Stripe API เวอร์ชันต่างๆ มากมาย
PHP 5.6.0 และใหม่กว่า
คุณสามารถติดตั้งการเชื่อมโยงผ่าน Composer รันคำสั่งต่อไปนี้:
composer require stripe/stripe-php
หากต้องการใช้การเชื่อมโยง ให้ใช้การโหลดอัตโนมัติของ Composer:
require_once ' vendor/autoload.php ' ;
หากคุณไม่ต้องการใช้ Composer คุณสามารถดาวน์โหลดรุ่นล่าสุดได้ จากนั้น หากต้องการใช้การเชื่อมโยง ให้รวมไฟล์ init.php
require_once ' /path/to/stripe-php/init.php ' ;
การผูกต้องมีส่วนขยายต่อไปนี้เพื่อให้ทำงานได้อย่างถูกต้อง:
curl
แม้ว่าคุณสามารถใช้ไคลเอนต์ที่ไม่ใช่ cURL ของคุณเองได้หากต้องการjson
mbstring
(สตริงหลายไบต์)หากคุณใช้ Composer การขึ้นต่อกันเหล่านี้ควรได้รับการจัดการโดยอัตโนมัติ หากคุณติดตั้งด้วยตนเอง คุณจะต้องแน่ใจว่าส่วนขยายเหล่านี้พร้อมใช้งาน
การใช้งานที่เรียบง่ายดูเหมือนว่า:
$ stripe = new Stripe StripeClient ( ' sk_test_BQokikJOvBiI2HlWgH4olfQ2 ' );
$ customer = $ stripe -> customers -> create ([
' description ' => ' example customer ' ,
' email ' => ' [email protected] ' ,
' payment_method ' => ' pm_card_visa ' ,
]);
echo $ customer ;
คุณสามารถใช้รูปแบบการรวมระบบเดิมที่ใช้ก่อนเวอร์ชัน 7.33.0 ต่อไปได้ ตรวจสอบคู่มือการย้ายข้อมูลสำหรับการเปลี่ยนแปลงรูปแบบไคลเอนต์/บริการที่เข้ากันได้แบบย้อนหลัง
ดูเอกสาร PHP API
ชมวิดีโอสาธิตวิธีการใช้ห้องสมุด
หากคุณใช้ PHP 5.4 หรือ 5.5 คุณควรพิจารณาอัปเกรดสภาพแวดล้อมของคุณ เนื่องจากเวอร์ชันเหล่านั้นหมดอายุการใช้งานไปแล้วตั้งแต่เดือนกันยายน 2015 และกรกฎาคม 2016 ตามลำดับ มิฉะนั้น คุณยังคงสามารถใช้ Stripe ได้โดยดาวน์โหลด stripe-php v6.43.1 (zip, tar.gz) จากหน้าเผยแพร่ของเรา เวอร์ชันนี้จะใช้งานได้ แต่อาจไม่รองรับฟีเจอร์ล่าสุดที่เราเพิ่มนับตั้งแต่เวอร์ชันเปิดตัว และการอัพเกรด PHP เป็นแนวทางปฏิบัติที่ดีที่สุด
หากคุณใช้ PHP 5.3 คุณควรอัปเกรดสภาพแวดล้อมของคุณเนื่องจากเวอร์ชันนี้หมดอายุการใช้งานไปแล้วตั้งแต่เดือนสิงหาคม 2014 หรือมิฉะนั้น คุณสามารถดาวน์โหลด v5.9.2 (zip, tar.gz) ได้จากหน้าเผยแพร่ของเรา เวอร์ชันนี้จะยังคงทำงานร่วมกับ Stripe API เวอร์ชันใหม่ต่อไปสำหรับการใช้งานทั่วไปทั้งหมด
หมายเหตุ เราไม่แนะนำให้ลดการหมดเวลาสำหรับการโทรที่ไม่ใช่แบบอ่านอย่างเดียว (เช่น การสร้างการเรียกเก็บเงิน) เนื่องจากแม้ว่าคุณจะหมดเวลาในเครื่องแล้ว คำขอในฝั่งของ Stripe ก็ยังสามารถดำเนินการให้เสร็จสิ้นได้ หากคุณกำลังลดการหมดเวลาในการเรียกเหล่านี้ ตรวจสอบให้แน่ใจว่าใช้โทเค็น idempotency เพื่อหลีกเลี่ยงการดำเนินการธุรกรรมเดียวกันสองครั้งอันเป็นผลมาจากตรรกะการหมดเวลาอีกครั้ง
หากต้องการแก้ไขการหมดเวลาของคำขอ (เชื่อมต่อหรือทั้งหมดเป็นวินาที) คุณจะต้องแจ้งให้ไคลเอ็นต์ API ใช้ CurlClient อื่นที่ไม่ใช่ค่าเริ่มต้น คุณจะตั้งค่าการหมดเวลาใน CurlClient นั้น
// 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
ต้องการตั้งค่าพรอกซีสำหรับคำขอของคุณหรือไม่? ส่งผ่านอาร์เรย์ที่จำเป็น CURLOPT_*
ไปยังตัวสร้าง CurlClient โดยใช้ไวยากรณ์เดียวกันกับ curl_stopt_array()
การดำเนินการนี้จะตั้งค่าตัวเลือก cURL เริ่มต้นสำหรับคำขอ HTTP แต่ละรายการที่สร้างโดย SDK แม้ว่าตัวเลือกทั่วไปอื่นๆ อีกมากมาย (เช่น การหมดเวลา ดูวิธีการตั้งค่าเหล่านั้นด้านบน) จะถูกแทนที่โดยไคลเอ็นต์ แม้ว่าจะตั้งค่าไว้ที่นี่ก็ตาม
// 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 );
อีกทางหนึ่ง สามารถส่งค่าที่เรียกใช้ได้ไปยังตัวสร้าง CurlClient ที่ส่งคืนอาร์เรย์ด้านบนตามอินพุตคำขอ ดู testDefaultOptions()
ใน tests/CurlClientTest.php
สำหรับตัวอย่างพฤติกรรมนี้ โปรดทราบว่าการเรียกใช้จะถูกเรียกใช้ที่จุดเริ่มต้นของทุกคำขอ API ก่อนที่จะส่งคำขอ
ไลบรารีทำการบันทึกน้อยที่สุด แต่สามารถกำหนดค่าด้วยตัวบันทึกที่เข้ากันได้กับ PSR-3
เพื่อให้ข้อความไปอยู่ที่นั่นแทน error_log
:
Stripe Stripe :: setLogger ( $ logger );
คุณสามารถเข้าถึงข้อมูลจากการตอบสนองของ API ล่าสุดบนออบเจ็กต์ใดก็ได้ผ่าน getLastResponse()
$ customer = $ stripe -> customers -> create ([
' description ' => ' example customer ' ,
]);
echo $ customer -> getLastResponse ()-> headers [ ' Request-Id ' ];
API ของ Stripe ต้องการให้การเชื่อมต่อทั้งหมดใช้ TLS 1.2 บางระบบ (โดยเฉพาะอย่างยิ่ง CentOS และ RHEL รุ่นเก่าบางรุ่น) สามารถใช้ TLS 1.2 ได้ แต่จะใช้ TLS 1.0 หรือ 1.1 เป็นค่าเริ่มต้น ในกรณีนี้ คุณจะได้รับข้อความ invalid_request_error
พร้อมข้อความแสดงข้อผิดพลาดต่อไปนี้: "Stripe ไม่รองรับคำขอ API ที่สร้างด้วย TLS 1.0 อีกต่อไป โปรดเริ่มต้นการเชื่อมต่อ HTTPS ด้วย TLS 1.2 หรือใหม่กว่า คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่ https://stripe .com/blog/upgrading-tls"
แนวทางปฏิบัติที่แนะนำคืออัปเกรดแพ็คเกจ cURL และ OpenSSL เพื่อให้ใช้ TLS 1.2 เป็นค่าเริ่มต้น แต่หากไม่สามารถทำได้ คุณอาจสามารถแก้ไขปัญหาได้โดยการตั้งค่าตัวเลือก CURLOPT_SSLVERSION
เป็น CURL_SSLVERSION_TLSv1
หรือ CURL_SSLVERSION_TLSv1_2
:
$ curl = new Stripe HttpClient CurlClient ([ CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1 ]);
Stripe ApiRequestor :: setHttpClient ( $ curl );
สำหรับแอปที่จำเป็นต้องใช้หลายคีย์ตลอดอายุการใช้งานของกระบวนการ เช่น แอปที่ใช้ Stripe Connect คุณยังสามารถตั้งค่าคีย์และ/หรือบัญชีตามคำขอได้:
$ customers = $ stripe -> customers -> all ([],[
' api_key ' => ' sk_test_... ' ,
' stripe_account ' => ' acct_... '
]);
$ stripe -> customers -> retrieve ( ' cus_123456789 ' , [], [
' api_key ' => ' sk_test_... ' ,
' stripe_account ' => ' acct_... '
]);
ตามค่าเริ่มต้น ไลบรารีจะใช้ชุดใบรับรอง CA ที่รู้จักภายในของตัวเอง แต่คุณสามารถกำหนดค่าของคุณเองได้:
Stripe Stripe :: setCABundlePath ( " path/to/ca/bundle " );
คุณสามารถกำหนดค่าไลบรารีให้ลองคำขอที่ล้มเหลวอีกครั้งโดยอัตโนมัติเนื่องจากปัญหาเครือข่ายไม่ต่อเนื่อง:
Stripe Stripe :: setMaxNetworkRetries ( 2 );
คีย์ Idempotency จะถูกเพิ่มลงในคำขอเพื่อรับประกันว่าการลองใหม่นั้นปลอดภัย
ตามค่าเริ่มต้น ไลบรารีจะส่งการตรวจวัดทางไกลไปยัง Stripe เกี่ยวกับเวลาแฝงของคำขอและการใช้งานฟีเจอร์ ตัวเลขเหล่านี้ช่วยให้ Stripe ปรับปรุงเวลาแฝงโดยรวมของ API สำหรับผู้ใช้ทุกคน และปรับปรุงคุณสมบัติยอดนิยม
คุณสามารถปิดใช้งานพฤติกรรมนี้ได้หากต้องการ:
Stripe Stripe :: setEnableTelemetry ( false );
Stripe มีคุณสมบัติในช่วงเบต้าที่สามารถเข้าถึงได้ผ่านแพ็คเกจรุ่นเบต้านี้ เราอยากให้คุณลองใช้สิ่งเหล่านี้และแบ่งปันความคิดเห็นกับเราก่อนที่ฟีเจอร์เหล่านี้จะเข้าสู่ระยะเสถียร ใช้คำสั่ง composer require
พร้อมระบุเวอร์ชันที่แน่นอนเพื่อติดตั้งเวอร์ชันเบต้าของแพ็คเกจ stripe-php
composer require stripe/stripe-php:v9.2.0-beta.1
หมายเหตุ อาจมีการเปลี่ยนแปลงที่เกิดขึ้นระหว่างเวอร์ชันเบต้า ดังนั้น เราขอแนะนำให้ปักหมุดเวอร์ชันแพ็กเกจเป็นเวอร์ชันเบต้าที่ต้องการในไฟล์ composer.json ของคุณ วิธีนี้ทำให้คุณสามารถติดตั้งเวอร์ชันเดียวกันได้ทุกครั้งโดยไม่ทำให้การเปลี่ยนแปลงเสียหาย เว้นแต่ว่าคุณตั้งใจจะมองหาเวอร์ชันเบต้าล่าสุด
เราขอแนะนำให้จับตาดูเมื่อฟีเจอร์เบต้าที่คุณสนใจเปลี่ยนจากเบต้าเป็นเสถียร เพื่อให้คุณสามารถย้ายจากการใช้ SDK เวอร์ชันเบต้าไปเป็นเวอร์ชันเสถียรได้
หากฟีเจอร์เบต้าของคุณต้องการให้ส่งส่วนหัว Stripe-Version
ให้ตั้งค่าคุณสมบัติ apiVersion
ของวัตถุ config
โดยใช้ฟังก์ชัน addBetaVersion
:
Stripe :: addBetaVersion ( " feature_beta " , " v3 " );
หากคุณต้องการส่งคำขอไปยัง API ที่ไม่มีเอกสาร (เช่น คุณอยู่ในรุ่นเบต้าส่วนตัว) หรือหากคุณต้องการข้ามคำจำกัดความของวิธีการในไลบรารีและระบุรายละเอียดคำขอของคุณโดยตรง คุณสามารถใช้วิธี rawRequest
บน StripeClient.
$ 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 " ,
]);
คุณสมบัติใหม่และการแก้ไขข้อบกพร่องได้รับการเผยแพร่ในไลบรารี Stripe PHP เวอร์ชันหลักล่าสุด หากคุณใช้เวอร์ชันหลักที่เก่ากว่า เราขอแนะนำให้คุณอัปเกรดเป็นเวอร์ชันล่าสุดเพื่อใช้คุณลักษณะใหม่และการแก้ไขข้อบกพร่อง รวมถึงช่องโหว่ด้านความปลอดภัย แพ็คเกจเวอร์ชันหลักที่เก่ากว่าจะยังคงใช้งานได้ต่อไป แต่จะไม่ได้รับการอัปเดตใดๆ
รับผู้แต่ง. ตัวอย่างเช่น บน Mac OS:
brew install composer
ติดตั้งการพึ่งพา:
composer install
ชุดทดสอบขึ้นอยู่กับ stripe-mock ดังนั้นอย่าลืมดึงข้อมูลและเรียกใช้จากเทอร์มินัลพื้นหลัง (README ของ stripe-mock ยังมีคำแนะนำสำหรับการติดตั้งผ่าน Homebrew และวิธีการอื่น ๆ ):
go install github.com/stripe/stripe-mock@latest
stripe-mock
ติดตั้งการขึ้นต่อกันตามที่กล่าวไว้ข้างต้น (ซึ่งจะแก้ไข PHPUnit) จากนั้นคุณสามารถรันชุดทดสอบได้:
./vendor/bin/phpunit
หรือเพื่อเรียกใช้ไฟล์ทดสอบแต่ละไฟล์:
./vendor/bin/phpunit tests/Stripe/UtilTest.php
อัปเดตใบรับรอง CA แบบรวมจากรุ่น Mozilla cURL:
./update_certs.php
ไลบรารีใช้ PHP CS Fixer สำหรับการจัดรูปแบบโค้ด ต้องจัดรูปแบบโค้ดก่อนที่จะส่ง PR มิฉะนั้น CI จะไม่สำเร็จ รันฟอร์แมตเตอร์ด้วย:
./vendor/bin/php-cs-fixer fix -v .
คุณกำลังเขียนปลั๊กอินที่รวม Stripe และฝังไลบรารีของเราหรือไม่? จากนั้นโปรดใช้ฟังก์ชัน setAppInfo
เพื่อระบุปลั๊กอินของคุณ ตัวอย่างเช่น:
Stripe Stripe :: setAppInfo ( " MyAwesomePlugin " , " 1.2.34 " , " https://myawesomeplugin.info " );
ควรเรียกเมธอดนี้เพียงครั้งเดียวก่อนที่จะส่งคำขอใดๆ ไปยัง API พารามิเตอร์ที่สองและสามเป็นทางเลือก
ดูย่อหน้า "ปัญหาความเข้ากันได้ของ SSL / TLS" ด้านบนสำหรับบริบททั้งหมด หากคุณต้องการให้แน่ใจว่าปลั๊กอินของคุณสามารถใช้กับทุกระบบ คุณควรเพิ่มตัวเลือกการกำหนดค่าเพื่อให้ผู้ใช้เลือกระหว่างค่าต่างๆ สำหรับ CURLOPT_SSLVERSION
: none (ค่าเริ่มต้น), CURL_SSLVERSION_TLSv1
และ CURL_SSLVERSION_TLSv1_2