aimandaniel/toyyibpay

适用于 toyyibPay API 的无框架 PHP 库(非官方)

dev-master 2022-06-24 07:43 UTC

This package is auto-updated.

Last update: 2024-09-20 00:33:42 UTC


README

toyyibPay 支付网关的非官方 PHP 库。本库深受 jomweb/billplz 启发。请参考 官方 API 参考 了解详细信息。

安装

$ composer require aimandaniel/toyyibpay

入门

创建客户端

use AimanDaniel\ToyyibPay\Client;

$client = Client::make('your-secret-key', 'your-category-code');

您也可以直接传递 HTTP 客户端

use AimanDaniel\ToyyibPay\Client;

$http = Laravie\Codex\Discovery::client();

$client = new Client($http, 'your-secret-key', 'your-category-code');

使用沙盒模式

您可以通过添加以下行启用沙盒环境

$client->useSandbox();

用法

银行

您可以根据以下方式创建一个 Bank 实例

$bank = $client->bank();
// or
$bank = $client->uses('Bank');

您可以通过执行 $client->bank('v1')$client->uses('Bank', 'v1') 手动传递 API 版本,但当前 API 只有一个版本,并且默认设置为该版本

获取银行列表

$response = $bank->all();

var_dump($response->toArray());

获取银行 FPX 代码

$response = $bank->fpx();

var_dump($response->toArray());

创建一个 Package 实例

$package = $client->package();
// or
$package = $client->uses('Package');

获取包列表

$response = $package->all();

var_dump($response->toArray());

用户

创建一个 User 实例

$user = $client->user();
// or
$user = $client->uses('User');

创建用户

$response = $user->create(
  string $fullname,
  string $username,
  string $email,
  string $password,
  string $phone,
  int $bank, // same id as in $bank->all()
  string $accountNo, // bank acc number
  string $accountHolderName, // bank acc holder
  ?string $registrationNo,
  ?int $package,
  ?int $userStatus
);

var_dump($response->toArray());

获取用户状态

$response = $user->status($username);

var_dump($response->toArray());

获取所有用户

$partnerType = 'OEM'; // or 'ENTERPRISE', defaults to OEM if null

$response = $user->all($partnerType);

var_dump($response->toArray());

分类

创建一个 Category 实例如下

$category = $client->category();
// or
$category = $client->uses('Category');

创建分类

$response = $category->create(
  string $categoryName,
  string $categoryDescription
);

var_dump($response->toArray());

获取分类

$response = $category->get('category code');

var_dump($response->toArray());

账单

创建一个 Bill 实例

$bill = $client->bill();
// or
$bill = $client->uses('Bill');

创建账单

$response = $bill->create(
  string $billName,
  string $billDescription,
  int $billPriceSetting,
  int $billPayerInfo,
  string $billAmount,
  string $billReturnUrl,
  string $billCallbackUrl,
  string $billExternalReferenceNo,
  ?string $billTo,
  string $billEmail,
  string $billPhone,
  array $optionals = []
);

var_dump($response->toArray());

$optionals 期望的是一个包含以下任意值的关联数组

创建多付款账单

$response = $bill->createMultiPayment(
  string $billName,
  string $billDescription,
  string $billPriceSetting,
  string $billPayerInfo,
  string $billAmount,
  string $billReturnUrl,
  string $billCallbackUrl,
  string $billExternalReferenceNo,
  string $billTo,
  string $billEmail,
  string $billPhone,
  string $billSplitPayment,
  string $billSplitPaymentArgs,
  string $billMultiPayment,
  string $billPaymentChannel,
  string $billDisplayMerchant,
  string $billContentEmail
);

var_dump($response->toArray());

运行账单

$response = $bill->run(
  string $billCode,
  string $billpaymentAmount,
  string $billpaymentPayerName,
  string $billpaymentPayerPhone,
  string $billpaymentPayerEmail,
  string $billBankID
);

var_dump($response->toArray());

获取所有账单

$partnerType = 'OEM'; // or 'ENTERPRISE'
$yearMonth = '2020-01';

$response = $bill->all(
  string $partnerType,
  ?string $yearMonth = null
);

var_dump($response->toArray());

获取账单交易

$response = $bill->transactions(
  string $billCode,
  ?int $billpaymentStatus = 1
);

var_dump($response->toArray());

结算

创建一个 Settlement 实例

$settlement = $client->settlement();
// or
$settlement = $client->uses('settlement');

获取所有结算

$response = $settlement->all(
  string $partnerType,
  bool $groupByUsername
);

var_dump($response->toArray());

获取结算摘要

$response = $settlement->summary(
  string $partnerType,
  bool $groupByUsername
);

var_dump($response->toArray());

贡献

欢迎提交拉取请求。对于重大更改,请先打开一个问题来讨论您想要进行哪些更改。

请确保根据需要更新测试。

开发者备注

尽管官方 API 参考 没有明确声明,但本包中声明的 API 版本是 v1

许可证

MIT