devig / voyager-shop
此包最新版本(dev-master)没有可用的许可证信息。
此包提供可由 voyager 管理面板管理的 graphql 商店。
dev-master
2020-05-08 22:09 UTC
Requires
- joselfonseca/lighthouse-graphql-passport-auth: ^4.1
- laravel/cashier: ^11.2
- laravel/passport: ^8.0
- laravel/telescope: ^3.3
- nuwave/lighthouse: ^4.12
- spatie/laravel-stripe-webhooks: ^2.3
- tcg/voyager: ^1.3
- tjventurini/voyager-projects: *
Requires (Dev)
This package is not auto-updated.
Last update: 2024-09-21 19:02:09 UTC
README
此包提供可通过 voyager 管理面板 管理的 graphql 商店。
安装
只需运行以下命令。
php artisan voyager-shop:install
更新 User 模型上使用的特质。
<?php namespace App; use Laravel\Cashier\Billable; use Laravel\Passport\HasApiTokens; use Illuminate\Notifications\Notifiable; use Illuminate\Contracts\Auth\MustVerifyEmail; use Tjventurini\VoyagerProjects\Traits\HasProjects; use Illuminate\Foundation\Auth\User as Authenticatable; use Tjventurini\VoyagerShop\Traits\Relationships\HasOrders; use Tjventurini\VoyagerShop\Traits\Relationships\HasManyCards; use Tjventurini\VoyagerShop\Traits\Relationships\HasManyAddresses; class User extends \TCG\Voyager\Models\User { use HasApiTokens, Notifiable, HasOrders, HasProjects, HasManyCards, HasManyAddresses, Billable; ...
将 stripe 密钥添加到 .env 文件中。
STRIPE_KEY=your-public-key
STRIPE_SECRET=your-secret-key
如果您不使用美元作为默认货币,您应该在 .env 文件中设置您的默认货币。
CASHIER_CURRENCY=eur
有关支付实现的更多信息,请参阅 Laravel Cashier 文档。
要设置 stripe webhooks,您还需要在 .env 文件中设置您的 STRIPE_WEBHOOK_SECRET。
STRIPE_WEBHOOK_SECRET=your-webhook-secret
有关 webhooks 实现的更多信息,请参阅 github 上 spatie/laravel-stripe-webhooks 包的文档。
前端示例
以下是一个使用 stripe.js 框架获取支付方法的示例实现。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Stripe Sample</title> <style> .checkout-form { width: 500px; margin: auto; } .checkout-form input { width: 100%; } .checkout-form button { float: right; } </style> </head> <body> <div class="checkout-form"> <h1>Charge $ 10</h1> <p>Stripe sample for one time payments.</p> <input id="card-holder-name" type="text" placeholder="Name auf der Karte"> <!-- Stripe Elements Placeholder --> <div id="card-element"></div> <button id="card-button"> Process Payment </button> </div> <script src="https://js.stripe.com/v3/"></script> <script> const stripe = Stripe('{{ config("services.stripe.key") }}'); const elements = stripe.elements({locale: 'de', country: 'AT'}); const cardElement = elements.create('card'); cardElement.mount('#card-element'); const cardHolderName = document.getElementById('card-holder-name'); const cardButton = document.getElementById('card-button'); cardButton.addEventListener('click', async (e) => { const { paymentMethod, error } = await stripe.createPaymentMethod( 'card', cardElement, { billing_details: { name: cardHolderName.value } } ); if (error) { alert('error'); console.log(error); } else { alert('works'); console.log(paymentMethod); } }); </script> </body> </html>
文档
在使用此包投入生产之前,请务必阅读完整的 文档。