簡體   English   中英

集成CHARGEBEE庫到LARAVEL

[英]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'

Chargebee服務提供商

現在我有一個 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你會更好地理解它。

您在您的情況下嘗試/混合了這兩種方法,並且沒有完全使用任何單一方法。

  1. 您已經創建了一個名為ChargeBeeServiceProvider的服務提供程序,但它不返回/綁定任何資源或沒有在register方法中完成 API 初始化。 這是您注冊和使用 DI 的地方。 您也可以綁定屬性。 這是它的官方文檔

  2. 您嘗試通過初始化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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM