moyasar/moyasar-php

此包已被废弃且不再维护。作者建议使用moyasar/moyasar-php包。

PHP/Laravel Moyasar支付服务的封装库

v1.1.1 2022-03-30 09:01 UTC

This package is auto-updated.

Last update: 2022-03-30 09:02:36 UTC


README

PHP version

Moyasar PHP封装库

文档

查看PHP API文档

要求

  • 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实例,它包含数据,并且能够在该支付实例上执行操作,如updaterefundcapturevoid,我们将在后面介绍。

要列出与您的账户关联的支付,只需执行以下操作

$paymentService = new \Moyasar\Providers\PaymentService();

$paginationResult = $paymentService->all();

$payments = $paginationResult->result;

该方法将返回一个PaginationResult实例,它包含有关结果元数据的信息,如currentPagetotalPages等...

要从该对象获取支付,我们只需读取该对象的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、进行refundcapturevoid

$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服务容器中获取PaymentServiceInvoiceService

app(PaymentService::class)
app(InvoiceService::class)

或者,在您的控制器内部,您可以在构造函数中简单地使用这些服务之一进行类型提示

public function __construct(PaymentService $paymentService)
{
    $this->paymentService = $paymentService;
}

或者,如果您想快速使用这些服务,您可以使用PaymentInvoice外观

  • Moyasar\Facades\Payment
  • Moyasar\Facades\Invoice

例如

$payment = \Moyasar\Facades\Payment::fetch('id');

贡献

在GitHub上欢迎提交错误报告和拉取请求:https://github.com/[USERNAME]/moyasar-php。此项目旨在成为一个安全、欢迎的协作空间,贡献者应遵守贡献者守则

许可证

该软件包作为开源软件根据MIT许可证提供。