ahmedebead / moyasar-laravel
Moyasar支付服务的Laravel包装库
Requires
- php: ^7.4|^8.0
- ext-json: *
- guzzlehttp/guzzle: ^6.3|^7.0
- guzzlehttp/psr7: ^2.1.1
- laravel/framework: ^9.0
Requires (Dev)
- mockery/mockery: ^1.2.4
- phpunit/phpunit: ^8.5.19|^9.5.8
Suggests
- laravel/framework: Allows Moyasar payment services to be auto injected into current app container
This package is auto-updated.
Last update: 2024-09-07 00:12:22 UTC
README
Moyasar PHP包装库
文档
要求
- PHP: ^7.4|^8.0
- guzzlehttp/guzzle: ^6.3|^7.0
- laravel/framework: ^9.0
备注
- 要使用PHP流处理器,必须在系统php.ini中启用allow_url_fopen。
- 要使用cURL处理器,您必须有一个最新版本的cURL >= 7.19.4,编译了OpenSSL和zlib。
安装
您可以通过composer安装它
$ composer require ahmed3bead/moyasar-laravel
用法
之后,需要配置moyasar服务,因此让我们发布配置文件
$ php artisan vendor:publish --provider="AhmedEbead\Moyasar\Providers\LaravelServiceProvider"
现在编辑config/moyasar.php
并添加您的API密钥,默认情况下,API密钥从名为MOYASAR_API_PUBLISHABLE_KEY
的环境变量中读取,因此可以使用.env
添加密钥。
MOYASAR_API_PUBLISHABLE_KEY=<Your_Key> MOYASAR_API_SECRET_KEY=<Your_Key> FINISH_PAYMENT_URL=<url-here>
如果一切顺利,您应该能够通过简单地调用app
辅助函数从laravel服务容器中获取PaymentService
和InvoiceService
app(PaymentService::class)
app(InvoiceService::class)
或者,在您的控制器内部,您可以在构造函数中简单地对其中一个服务进行类型提示
public function __construct(PaymentService $paymentService) { $this->paymentService = $paymentService; }
支付
注意:Moyasar不允许使用API创建支付(有例外),因此您可以使用支付表单。这就是为什么包装库不支持它。
要获取支付,只需执行以下操作
$paymentService = new \AhmedEbead\Moyasar\Providers\PaymentService();
创建支付
$data = [ "amount" => 100, "currency" => "SAR", "description" => "Payment for order #", "callback_url" => "https://example.com/thankyou", "source" => [ "type" => "creditcard", "name" => "Mohammed Ali", "number" => "4111111111111111", "cvc" => "123", "month" => "12", "year" => "26" ] ]; $payment = $paymentService->create($data);
获取支付
$payment = $paymentService->fetch('ae5e8c6a-1622-45a5-b7ca-9ead69be722e');
列出所有支付
$payment = $paymentService->all();
将返回一个Payment
实例,其中包含数据,并且能够在该支付实例上执行诸如update
、refund
、capture
、void
等操作,我们将在后面回到这一点。
要列出与您的帐户关联的支付,只需执行以下操作
$paymentService = new \AhmedEbead\Moyasar\Providers\PaymentService(); $paginationResult = $paymentService->all(); $payments = $paginationResult->result;
all
方法将返回一个PaginationResult
实例,其中包含有关结果元数据的信息,如currentPage
、totalPages
等...
要获取该对象中的支付,我们只需读取该对象的result
属性。
all
方法接受一个Search
实例或一个数组,这允许我们过滤结果并遍历页面。它非常容易使用
$search = \AhmedEbead\Moyasar\Search::query()->status('paid')->page(2); $paginationResult = $paymentService->all($search);
以下方法受支持
id($id)
status($status)
source($source)
page($page)
createdAfter($date)
createdBefore($date)
一旦我们获取了所需的支付,我们就可以通过update
、refund
、capture
或void
来更新描述、退款、捕获或取消支付。
$payment->update('new description here'); // OR $payment->refund(1000); // 10.00 SAR // OR $payment->capture(1000); // OR $payment->void();
发票
对于发票,获取和列出它们与支付相同,我们只是使用InvoiceService
。
尽管如此,我们可以通过执行以下操作使用API创建新的发票
$invoiceService = new \AhmedEbead\Moyasar\Providers\InvoiceService(); $invoiceService->create([ 'amount' => 1000000, // 10000.00 SAR 'currency' => 'SAR', 'description' => 'iPhone XII Purchase', 'callback_url' => 'http://www.example.com/invoice-status-changed', // Optional 'expired_at' => '2020-01-20' // Optional ]);
使用Invoice
实例,我们可以更新或取消给定的实例。
$invoice->update([ 'amount' => 900000, // 9000.00 SAR 'currency' => 'SAR', 'description' => 'iPhone XII Purchase (Updated)', 'callback_url' => 'http://www.example.com/invoice-status-changed', // Optional 'expired_at' => '2020-01-25' // Optional ]); // OR $invoice->cancel();
或者,如果您想快速使用这些服务,可以使用Payment
和Invoice
外观
AhmedEbead\Moyasar\Facades\Payment
AhmedEbead\Moyasar\Facades\Invoice
例如
$payment = \AhmedEbead\Moyasar\Facades\Payment::fetch('id');
待办事项
- 支付退款
- 令牌支付
- Webhooks
许可证
该软件包根据MIT许可证条款提供为开源软件。