[英]Integrate CHARGEBEE library to LARAVEL
我開始使用 LARAVEL 最新版本 7.12,我在嘗試集成CHARGEBEE庫以向Chargebee api發出請求時遇到問題。
我讀到我可以用作曲家安裝包,我做到了:
composer require chargebee/chargebee-php:'>=2, <3'
這樣做現在我已經在這里下載了 chargebee 庫: /vendor/chargebee/chargebee-php/
現在我也在這里看到了這個堆棧溢出問題:
為了讓用戶正確使用這個 Library-Package,我需要創建一個ServiceProvider
,所以我做了:
php artisan make:provider ChargeBeeServiceProvider
那么我真的不知道如何在這里寫REGISTER()
function,我還添加了這一行: App\Providers\ChargebeeServiceProvider::class,
到/config/app.php
到'providers'
現在我有一個 controller: /app/http/controllers/PortalController
我正在嘗試使用它:
ChargeBee_Environment::configure("sitename","apikeyvalue");
$all = ChargeBee_Customer::all(array( "firstName[is]" => "John",
"lastName[is]" => "Doe", "email[is]" => "john@test.com" ));
foreach($all as $entry){
$customer = $entry->customer();
$card = $entry->card();
}
但是在前端它給了我一個錯誤:
錯誤 Class 未找到“App\Http\Controllers\ChargeBee_Customer”
不太確定如何在 Laravel 上使用此自定義Chargebee庫。
有人可以幫助以正確的方式整合嗎?
謝謝!
這里真正的問題是ChargeBee_Environment
class 不存在。
它應該是Chargebee\ChargeBee\Environment
。 模型在它們自己的文件夾中,例如 Portal 是ChargeBee\ChargeBee\Models\PortalSession
WPTC-Troop 的回答提供了一些有關直接使用服務提供商與庫的問題的重要信息,但最終您需要調用正確的類。
我創建門戶 session 的工作代碼如下。 客戶 object 的情況類似:
\ChargeBee\ChargeBee\Environment::configure("test-site","test_api_key");
$result = \ChargeBee\ChargeBee\Models\PortalSession::create(["customer" => ["id" => "AzZlwTSSVw9871E9g"]]);
$portalSession = $result->portalSession();
$output = $portalSession->getValues();
return $output;
兩件事,您可以在 Laravel 中使用任何第三方庫作為服務提供者 (DI),或者在需要的地方直接使用它(主要在控制器中)
不僅是第三方庫,您還可以在 Service Provider 中簡化 class 等的實例創建。 基本上它用於依賴注入,一般檢查IoC你會更好地理解它。
您在您的情況下嘗試/混合了這兩種方法,並且沒有完全使用任何單一方法。
您已經創建了一個名為ChargeBeeServiceProvider
的服務提供程序,但它不返回/綁定任何資源或沒有在register
方法中完成 API 初始化。 這是您注冊和使用 DI 的地方。 您也可以綁定屬性。 這是它的官方文檔。
您嘗試通過初始化ChargeBee_Environment
並使用ChargeBee_Customer
來直接使用,但您沒有提到在哪里查找此 class,這是您收到錯誤的原因(錯誤 Class 'App\Http\Controllers\ChargeBee_Customer' not found)。 我的意思是編譯器將從同一個本地空間中查找ChargeBee_Environment
,但ChargeBee_Environment
可從全局 scope 獲得。
相同代碼的簡單解決方案。 Add \
to the class to look from global scope or make use of use
statement in the top of your file similar to import in java but still we need to require/include the file in php but don't worry, chargebee make use of autoloader (在此處查看 -> composer.json )因此它將在兩種方法中自動加載。
\ChargeBee_Environment::configure("sitename","apikeyvalue");
$all = \ChargeBee_Customer::all(array( "firstName[is]" => "John",
"lastName[is]" => "Doe", "email[is]" => "john@test.com" ));
試試上面的,讓我知道。 從移動設備回答。 代碼未經過全面測試(只需復制您的並添加\
即可)。
原諒簡潔:)
我有一個使用 ChargeBee 和 Laravel 的解決方案。 不需要任何:注冊提供程序,添加別名或添加路徑以在 composer.json 中通過文件路徑自動加載。 只需在您的服務或 Controller 代碼中添加您需要的use
類。 喜歡use ChargeBee_Environment
等。
use ChargeBee_Environment;
use ChargeBee_Customer;
ChargeBee_Environment::configure("sitename","apikeyvalue");
$all = ChargeBee_Customer::all(array( "firstName[is]" => "John", "lastName[is]" => "Doe", "email[is]" => "john@test.com" ));
foreach($all as $entry){
$customer = $entry->customer();
$card = $entry->card();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.