ayoolatj/paystack-php

又一个Paystack PHP库

1.2.1 2020-07-19 04:17 UTC

This package is auto-updated.

Last update: 2024-09-19 13:42:57 UTC


README

Packagist License

这个库旨在通过预定义的服务,根据Paystack API文档分组,方便地访问Paystack API。这些服务类会根据API响应动态初始化定义的资源。

需求

  • PHP 7.1+

安装

通过Composer

要通过Composer安装此包,请运行以下命令

composer require ayoolatj/paystack-php

依赖

依赖应该由Composer自动处理。

使用方法

使用paystack实例,您可以在多个服务中执行多个操作,并检索不同的资源。

$paystack = new \Ayoolatj\Paystack\Paystack(PAYSTACK_SECRET_KEY);
try {
    $charge = $paystack->charge->charge([
        'email' => 'test@example.com',
        'amount' => '1000000',
        'bank' => ['code' => '057', 'account_number' => '0000000000'],
        'birthday' => '1994-07-04',
    ]);
} catch (\Ayoolatj\Paystack\Exceptions\ApiException $e) {
    print_r($e->getResponse());
}
// process Charge resource

访问资源属性

您可以通过toArray()访问资源属性。

$plan = $paystack->plans->create([
    'name' => 'New Plan',
    'amount' => '1000000',
    'interval' => 'biannually'
]);
print_r($plan->toArray());

访问响应数据

您可以通过getLastResponse()从任何资源对象访问最后一次API响应的数据。

$charge = $paystack->charge->charge([
    'email' => 'test@example.com',
    'amount' => '1000000',
    'bank' => ['code' => '057', 'account_number' => '0000000000'],
    'birthday' => '1994-07-04',
]);
echo $charge->getLastResponse()->headers['Date'];

分页

所有具有list端点的服务都支持分页,并且可以传递分页参数来限制结果集。

$plans = $paystack->plans->all([
    'perPage' => 20,
    'page' => 2,
]);

自动分页

列表端点返回一个Paginator类的实例,该类支持自动分页。这使得在不手动分页结果和执行后续请求的情况下处理多页列表变得很容易。

要使用自动分页功能,请在返回的Paginator对象上调用autoPagingIterator()来遍历所有与初始参数匹配的对象。

$plans = $paystack->plans->all([
    'perPage' => 20,
    'page' => 2,
]);

foreach ($plans->autoPagingIterator() as $plan) {
  // Do something with $plan
}

Webhooks

Paystack使用Webhooks在您的集成上发生交易事件时通知您的应用程序。验证事件是否来自Paystack很重要,以避免基于伪造事件交付价值。

验证Paystack事件

$input = @file_get_contents('php://input');
$paystack_signature = $_SERVER['HTTP_X_PAYSTACK_SIGNATURE'];

try {
    \Ayoolatj\Paystack\Webhook::verifyEvent($input, $paystack_signature, PAYSTACK_SECRET_KEY);
} catch (\Ayoolatj\Paystack\Exceptions\SignatureVerificationException $e) {
    $input = $e->getHttpBody();
    $header = $e->getSigHeader();
    
    exit();
}

测试

vendor/bin/phpunit

待办事项

  • 授权资源
  • 汇总测试
  • 元数据构建器
  • 清理README
  • 非Composer加载器