>
鑰匙要點- Laravel收銀員通過管理訂閱賬單,處理優惠券,交換訂閱,取消寬限期和生成發票PDFS來簡化基本付費會員網站的創建。
- > >要將Laravel收銀員集成到現有的Laravel項目中,通過作曲家安裝包裹,運行遷移以在用戶表中添加必要的列,設置API鍵,然後將計費性狀添加到模型中。 Laravel Abasier可以通過自動重試付款來處理失敗的付款。如果付款繼續失敗,則將取消訂閱。
- > Laravel Abasier目前僅支持Stripe和Braintree,但可以擴展到與其他付款網關合作,並以良好的了解Laravel和付款網關的API。
- 設置工作環境
- 我們需要創建一個佈置項目才能開始,我們可以通過兩種不同的方式來做:
我們可以克隆github repo到我們的項目文件夾。 >
>假設您已經安裝了作曲家(請查看安裝指南以獲取更多詳細信息)。 我們運行作曲家create-project laravel/laravel laravel_membership-首發,這將在我們的laravel_membership文件夾中創建一個laravel樣板項目。
- >現在,我們需要通過將“ Laravel/Cashier”:“ 〜1.0”添加到我們的Composer.json上的“要求”部分和運行作曲家更新以更新我們的依賴項,從而需要Laravel收銀員包。 之後,我們需要告訴我們的應用程序加載收銀員服務提供商類。我們可以通過在config/app.php文件上的提供商數組中添加“ LaravelCashierCashierServiceProvider”來做到這一點。 注意:您必須運行Composer dump-autoload才能更新Classmap軟件包。
-
>使用遷移創建數據庫
我們將使用兩個表:
帖子表:
- int id- 字符串標題
- long_text內容- bool is_premium
>用戶表:
- int id
- varchar(60)密碼
Laravel Artisan命令行工具使創建和管理遷移類都很容易。
>然後我們填充schema ::創建回調函數參數,並帶有看起來像
要讓Laravel Cashier知道我們的可計費表,我們需要為此創建一個特定的遷移。 Laravel Cashier為此目的具有內置命令。
<span>php artisan migrate:make create_posts_table --create="posts" </span><span> </span><span>php artisan migrate:make create_users_table --create="users"</span>
如果打開用戶表,則在執行軟件包遷移時會看到一堆字段。
- Stripe_active如果您有活動訂閱。
- Stripe_ID用戶ID上的Stripe Server上。
- Stripe_plan Stripe訂閱計劃。
- last_four信用卡最後四位數。
- 如果您指定試用期,則存儲結束日期。
- subscription_ends_at subscription結束日期。
>現在,我們將使用一些虛擬數據播種數據庫來開始。檢查github上的最終結果。
>條紋計費過程
處理付款可能會很痛苦,條紋可以幫助您,他們使用令牌代替卡號等。 。
>注意:檢查您所在國家是否支持條紋,但您仍然可以使用它進行測試。
>要開始,我們需要先獲取一個帳戶。 Stripe沒有訂閱的月費,只有在獲得付款時付款。
>現在,在獲得帳戶後,您需要為您的申請創建計劃(每月,每年,銀,金…)。
>
>每個領域都是自我解釋的,因此讓我們創建一個金色會員資格,價格為40美元,基本會員資格為10美元。他們每月都會被收費。
>我們已經在用戶表中添加了必要的列,現在我們需要讓Laravel Cashier知道我們將使用用戶類用作計費類。
<span>Schema::create('posts', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('title'); </span><span> $table->longText('content'); </span><span> $table->boolean("is_premium"); </span><span> $table->timestamps(); </span><span>}); </span><span> </span><span>Schema::create('users', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('email', 100)->unique(); </span><span> $table->string('password', 60); </span><span> $table->timestamps(); </span><span>});</span>注意:我們使用的是Billabretrait,並且特質需要5.4或更高的php。
>現在,我們必須設置Stripe API訪問密鑰,您可以從帳戶>帳戶設置> API鍵中獲取並複制測試秘密密鑰。
>
>通過使用BillabRetrait,我們可以訪問用戶:: setStripekey(鍵)方法,該方法可以在我們的代碼中的任何地方稱為,但是首選的方法是在您的配置目錄下創建一個services.php文件,然後返回像這:
> GetStripeKey嘗試加載鑰匙時,它將尋找一個稱為StripeKey的屬性。如果找不到的話,它將自動加載您的服務文件。
<span>php artisan cashier:table users</span>
創建我們的頁面
為了使事情變得簡單,我們將僅創建幾頁:
- 註冊:用戶可以使用會員計劃(基本,黃金)註冊的地方。
- 登錄:會員登錄頁面。
- 升級:從基本會員升級到黃金會員資格。
- 帖子:顯示一個帖子頁面。
為了加快流程,我們將使用Bootsnipp。您可以從github存儲庫中獲取最終代碼。
登錄頁面:
登錄頁面具有一個基本的電子郵件和密碼字段,帶有登錄控制器頁面,看起來像這樣:
<span>php artisan migrate:make create_posts_table --create="posts" </span><span> </span><span>php artisan migrate:make create_users_table --create="users"</span>
>註冊頁:
>註冊頁面具有用於分配用戶計劃的訂閱計劃字段。
我們還有一個信用卡號,到期日期,CVC。
正如我們之前所說的,我們將永遠不必處理任何付款或驗證過程,我們將這些值傳遞給Stripe Server以照顧充電和驗證過程。
>讓我們看看前端代碼的外觀:
首先,我們包括JavaScript API文件,然後我們設置了我們從Stripe儀表板設置中獲取的公共密鑰。
<span>Schema::create('posts', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('title'); </span><span> $table->longText('content'); </span><span> $table->boolean("is_premium"); </span><span> $table->timestamps(); </span><span>}); </span><span> </span><span>Schema::create('users', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('email', 100)->unique(); </span><span> $table->string('password', 60); </span><span> $table->timestamps(); </span><span>});</span>接下來,我們將回調函數附加到我們的提交表單(請確保您的表單ID匹配事件處理程序上使用的表單),以防止雙重提交我們禁用提交按鈕。
stripe.card.createToken接受兩個參數,第一個是JSON對象,具有一些必需和可選的值。
> exp_month:代表卡的到期月的兩個數字編號。
- >
- exp_year:代表卡的到期年度的兩個或四位數編號。
- >可選值:
>名稱:持卡人名稱。
- adversion_line1:帳單地址行1.
- adversion_line2:計費地址行2。
- adversion_city:帳單地址城市。
- address_state:計費地址狀態。
- advelly_zip:按zip為字符串。
- > adversion_country:帳單地址國家。
- 您可以注意到,我們正在傳遞表單對象而不是JSON對象,您可以選擇手動捕獲值或在輸入上使用數據 - 條紋HTML5屬性,而條紋將使用一些幫助者方法自動為您獲取這些值。例如:
- 第二個參數傳遞給stripe.card.createToken方法是一個回調函數,可以處理響應。
>如果失敗,脫衣舞索Handler將嘗試找到一個帶有一類peays_errors的元素,以向用戶顯示一些描述性錯誤。
<span>php artisan cashier:table users</span>其他選項
>試驗期:正如我們之前說的,當您創建一個新計劃時,您可以選擇指定試用期供用戶測試您的產品,直到指定期限經過。
>優惠券:您可以通過儀表板菜單創建優惠券,您可以在其中指定固定金額或通過百分比,並提供其他一些有用的選項。
現在,讓我們轉到我們的IngeupController,看看我們將如何處理。
<span>php artisan migrate:make create_posts_table --create="posts" </span><span> </span><span>php artisan migrate:make create_users_table --create="users"</span>
我們將跳過驗證過程以保持簡單。
>創建新用戶並保存它後,我們現在可以選擇將用戶訂閱為新的會員計劃。訂閱方法接受已經註冊的計劃作為一個參數,可以是planInterface或字符串並返回條紋egateway。
創建方法接受令牌作為參數;我們通過名稱exteToken的新隱藏輸入值。
>升級頁面:
升級頁面將提交給看起來像這樣的升級器:
><span>Schema::create('posts', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('title'); </span><span> $table->longText('content'); </span><span> $table->boolean("is_premium"); </span><span> $table->timestamps(); </span><span>}); </span><span> </span><span>Schema::create('users', function(Blueprint $table) </span><span>{ </span><span> $table->increments('id'); </span><span> $table->string('email', 100)->unique(); </span><span> $table->string('password', 60); </span><span> $table->timestamps(); </span><span>});</span>
>我們檢查用戶是否首先登錄,然後我們使用新計劃創建一個新訂閱,我們稱之為交換方法,顯然在一個真實的項目中,您將有一些費用調整和降級選項,但它應該有效同樣的方式。
帖子頁面:
> PostController檢查帖子IS_Premium是否,如果是的,我們測試用戶是否是可以看到帖子的黃金成員,否則我們會返回一個簡單的錯誤消息。
當然,在我們的routes.php文件中,我們需要添加一個驗證過濾器,以防止未身份驗證的用戶訪問頁面。<span>php artisan cashier:table users</span>我們的路線文件看起來像這樣:
<span>php artisan migrate</span>
> withCoupon:我們之前說過,我們有可能創建折扣優惠券,在我們的示例中,我們可以這樣做:
<span>use Laravel\Cashier\BillableInterface; </span><span>use Laravel\Cashier\BillableTrait; </span><span> </span><span>class User extends Eloquent implements BillableInterface { </span><span> </span><span> use BillableTrait; </span><span> protected $dates = ['trial_ends_at', 'subscription_ends_at'];</span>取消:您可以使用此方法輕鬆地取消訂閱,但是您必須檢查用戶是否ongraceperiod才能確保不會立即阻止它們:
<span>return [ </span><span> 'stripe' => [ </span><span> 'secret' => 'Your key' </span><span> ] </span><span>];</span>ONPLAN:查看用戶是否在某個計劃中。
- trial:查看用戶是否仍在試用期。
- > 取消:如果用戶已取消其訂閱。
- getlastfourcarddigits:獲取用戶卡的最後四位數。 >
- > getSubscriptionEndDate:獲取訂閱結束日期。 >
- getTrialendDate:獲取試用日期。
- >發票:獲取用戶發票的列表。
- findInvoice:通過ID查找發票。
- > downloadinvoice:通過ID生成可下載的發票
- 結論
- 在本教程中,我們探討了Laravel Abasier如何緩解計費過程並幫助您更輕鬆地管理客戶。 >我們當然沒有在這裡介紹所有內容,但是這是您挖掘源代碼以探索您還能做什麼的開始。如果您想查看此應用程序的一硝基託管演示,請參見此處。
關於Laravel Asasier會員資格的常見問題(常見問題解答) Laravel收銀員如何處理訂閱賬單?
laravel收銀員是一個有力的工具,可以簡化管理訂閱賬單的過程。它為Stripe和Braintree的訂閱計費服務提供了一種表現力,流利的界面。它處理您正在恐懼寫作的幾乎所有樣板訂閱計費代碼。 Laravel收銀員可以處理優惠券,交換訂閱,訂閱“數量”,取消寬限期,甚至生成發票PDFS。 'LL需要創建一個條紋帳戶並通過作曲家安裝收銀員包。您還需要將可計費特徵添加到您的模型定義中 - 此特徵提供了各種方法,以允許您執行常見的計費任務,例如創建訂閱,應用優惠券和更新卡信息。我將Laravel收銀員集成到我現有的Laravel項目中?
>將Laravel Cashier整合到您現有的Laravel項目中很簡單。首先,您需要通過作曲家安裝軟件包。然後,您需要通過運行遷移來準備數據庫,該遷移將幾列添加到您的用戶表中。之後,您需要設置API鍵,並將可計費性狀添加到模型中。最後,您可以使用可計費特徵提供的各種方法來管理您的訂閱。 Laravel Abasier處理失敗的付款方式如何? Laravel Abasier具有內置功能來處理失敗的付款。如果付款失敗,收銀員將自動重試付款。如果付款繼續失敗,則將取消訂閱。但是,您也可以通過聆聽相關事件並採取適當的措施來手動處理這些事件。
>我可以與其他付款網關一起使用Laravel Abasier嗎?
>
>當前,Laravel Cashier僅支持Stripe和Stripe腦溪。但是,如果您願意,您可以將收銀員擴展到與其他付款網關合作。這將需要對Laravel和付款網關的API進行充分的了解。 >我如何使用Laravel Abasier取消訂閱? >您可以使用用戶訂閱上的CANCAL取消訂閱來取消訂閱。當取消訂閱時,收銀員將自動將訂閱的結束日期設置為當前計費周期的結束。 >我可以提供Laravel Abasier的試用期嗎?支持試用期。您可以在創建訂閱時設置試用期。在試用期結束之前,將不會向用戶收費。
>如何使用Laravel收銀員生成發票?您可以通過在發票實例上調用下載方法來訪問發票的可下載PDF版本,它將將PDF寫入磁盤或將其流式傳輸到瀏覽器中。
我可以使用Laravel Cashier將優惠券應用於訂閱中嗎?是的,Laravel Cashier支持將優惠券應用於訂閱。您可以在創建新的訂閱時使用withCoupon方法來執行此操作。
>我如何處理Laravel Abasier的訂閱數量?
Laravel Aravel Cashier允許您處理訂閱數量,這可以有用用於“每個座位”類型訂閱。您可以在訂閱實例上使用updateQuantity方法更新訂閱的數量。>
以上是Laravel收銀員的會員資格的詳細內容。更多資訊請關注PHP中文網其他相關文章!

要保護應用免受與會話相關的XSS攻擊,需採取以下措施:1.設置HttpOnly和Secure標誌保護會話cookie。 2.對所有用戶輸入進行輸出編碼。 3.實施內容安全策略(CSP)限制腳本來源。通過這些策略,可以有效防護會話相關的XSS攻擊,確保用戶數據安全。

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显著提升应用在高并发环境下的效率。

theSession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceisesneededeededeedeedeededto toavoidperformance andunununununexpectedLogOgouts.3)

在PHP中,可以使用session_name()函數配置會話名稱。具體步驟如下:1.使用session_name()函數設置會話名稱,例如session_name("my_session")。 2.在設置會話名稱後,調用session_start()啟動會話。配置會話名稱可以避免多應用間的會話數據衝突,並增強安全性,但需注意會話名稱的唯一性、安全性、長度和設置時機。

會話ID應在登錄時、敏感操作前和每30分鐘定期重新生成。 1.登錄時重新生成會話ID可防會話固定攻擊。 2.敏感操作前重新生成提高安全性。 3.定期重新生成降低長期利用風險,但需權衡用戶體驗。

在PHP中設置會話cookie參數可以通過session_set_cookie_params()函數實現。 1)使用該函數設置參數,如過期時間、路徑、域名、安全標誌等;2)調用session_start()使參數生效;3)根據需求動態調整參數,如用戶登錄狀態;4)注意設置secure和httponly標誌以提升安全性。

在PHP中使用會話的主要目的是維護用戶在不同頁面之間的狀態。 1)會話通過session_start()函數啟動,創建唯一會話ID並存儲在用戶cookie中。 2)會話數據保存在服務器上,允許在不同請求間傳遞數據,如登錄狀態和購物車內容。

如何在子域名間共享會話?通過設置通用域名的會話cookie實現。 1.在服務器端設置會話cookie的域為.example.com。 2.選擇合適的會話存儲方式,如內存、數據庫或分佈式緩存。 3.通過cookie傳遞會話ID,服務器根據ID檢索和更新會話數據。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。