ahmedebead/moyasar-laravel

Moyasar支付服务的Laravel包装库

V0.3 2024-01-16 18:31 UTC

This package is auto-updated.

Last update: 2024-09-07 00:12:22 UTC


README

Moyasar PHP包装库

文档

查看PHP API文档

要求

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

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实例,其中包含数据,并且能够在该支付实例上执行诸如updaterefundcapturevoid等操作,我们将在后面回到这一点。

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

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

$paginationResult = $paymentService->all();

$payments = $paginationResult->result;

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

要获取该对象中的支付,我们只需读取该对象的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)

一旦我们获取了所需的支付,我们就可以通过updaterefundcapturevoid来更新描述、退款、捕获或取消支付。

$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();

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

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

例如

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

待办事项

  • 支付退款
  • 令牌支付
  • Webhooks

许可证

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