moyasar / moyasar-php
Requires
- php: ^7.2|^8.0
- ext-json: *
- guzzlehttp/guzzle: ^6.3|^7.0
- guzzlehttp/psr7: ^2.1.1
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
README
Moyasar PHP封装库
文档
要求
- PHP 5.6.0
- guzzlehttp/guzzle: ^6.3.0
- laravel/framework (可选)
注意
- 请注意,从版本
1.0.0
开始,库已被重写且存在破坏性更改,除非您需要新版本,否则请勿更新。如果您是新手,建议使用新版本。 - 要使用PHP流处理器,必须在系统的php.ini中启用allow_url_fopen。
- 要使用cURL处理器,您必须拥有一个编译了OpenSSL和zlib的cURL最新版本。
- 请注意,在版本
0.5.0
中,库的名称已从moyasar-php
更改为moyasar
。
安装
您可以通过composer进行安装。
$ composer require moyasar/moyasar
使用方法
在标准项目中
使用composer安装库并在项目中包含autoload.php
后,需要设置API密钥才能使用服务。
include_once 'vendor/autoload.php'; \Moyasar\Moyasar::setApiKey('api-key');
设置完成,创建所需服务的实例并开始使用。
支付
注意:Moyasar不允许使用API(有一些例外)创建支付,相反,您可以使用支付表单。这就是为什么封装库不支持它的原因。
要获取支付,只需执行以下操作
$paymentService = new \Moyasar\Providers\PaymentService(); $payment = $paymentService->fetch('ae5e8c6a-1622-45a5-b7ca-9ead69be722e');
将返回一个Payment
实例,它包含数据,并且能够在该支付实例上执行操作,如update
、refund
、capture
、void
,我们将在后面介绍。
要列出与您的账户关联的支付,只需执行以下操作
$paymentService = new \Moyasar\Providers\PaymentService(); $paginationResult = $paymentService->all(); $payments = $paginationResult->result;
该方法将返回一个PaginationResult
实例,它包含有关结果元数据的信息,如currentPage
、totalPages
等...
要从该对象获取支付,我们只需读取该对象的result
属性。
该方法接受一个Search
实例或数组,这允许我们过滤结果并移动到下一页。它非常容易使用
$search = \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 \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();
Laravel
首先,我们需要将moyasar/moyasar
添加到我们的Laravel项目中,为此我们需要:
$ composer require moyasar/moyasar
之后,需要配置moyasar服务,因此让我们发布配置文件
$ php artisan vendor:publish --provider="Moyasar\Providers\LaravelServiceProvider"
现在编辑config/moyasar.php
,并添加您的API密钥,默认情况下,API密钥是从名为MOYASAR_API_KEY
的环境变量中读取的,因此可以使用.env
文件添加密钥。
MOYASAR_API_KEY=<Your_API_Key>
如果一切顺利,您应该可以通过简单地调用app
辅助函数从Laravel服务容器中获取PaymentService
和InvoiceService
。
app(PaymentService::class)
app(InvoiceService::class)
或者,在您的控制器内部,您可以在构造函数中简单地使用这些服务之一进行类型提示
public function __construct(PaymentService $paymentService) { $this->paymentService = $paymentService; }
或者,如果您想快速使用这些服务,您可以使用Payment
和Invoice
外观
Moyasar\Facades\Payment
Moyasar\Facades\Invoice
例如
$payment = \Moyasar\Facades\Payment::fetch('id');
贡献
在GitHub上欢迎提交错误报告和拉取请求:https://github.com/[USERNAME]/moyasar-php。此项目旨在成为一个安全、欢迎的协作空间,贡献者应遵守贡献者守则。
许可证
该软件包作为开源软件根据MIT许可证提供。