nimah79/f3-zarinpal

PHP Fat-Free 框架的 Zarinpal 插件

v1.0.1 2019-08-12 08:50 UTC

This package is auto-updated.

Last update: 2024-09-26 04:06:46 UTC


README

这是一个为 PHP Fat-Free 框架 定制的 Zarinpal 插件。

特性

  • 易用 API
  • 完整 API 方法
  • 完整文档

安装

使用 Composer

composer require nimah79/f3-zarinpal 

配置示例

将这些行添加到您的 F3 配置中

[ZARINPAL]
merchant_id=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

快速开始

请求授权(并重定向用户)

$zarinpal = new Zarinpal();

$zarinpal->setAmount(5500);
$zarinpal->setDescription('Purchasing test product');
$zarinpal->setCallbackURL('http://example.com/pay/verify');

$result = $zarinpal->request();
if ($result->ok) {
    $zarinpal->redirect();
} else {
    echo 'Error: ' . $result->message;
}

验证交易

$zarinpal = new Zarinpal();

$zarinpal->setAmount(5500);

$result = $zarinpal->verify();
if ($result->ok) {
    echo 'Successful transaction!';
}

更多!

设置用户信息

您可以向 Zarinpal 传递用户信息。这建议您对交易有更多控制。

$zarinpal->setEmail('foo@bar.com');
$zarinpal->setMobile('09123456789');

使用沙盒

当您想进行一些带有自定义结果的测试交易时,可以使用沙盒模式。

$zarinpal->enableSandbox();

使用 Zaringate

默认情况下,用户将被重定向到 Zarinpal Webgate 页面,但您可以直接将用户转移到支付网关。请注意,您需要激活必要的服务才能使用 Zaringate(联系 Zarinpal 支持)。

$zarinpal->enableZaringate();

共享支付

此方法适用于那些从输入价格中获得的利益必须以特殊方式分配的卖家。例如,您拥有一个提供仪式服务的网站,您与几个承包商有一些贡献。这样,您可以保留一部分资金,并将剩余部分结算到承包商的账户。

// 4500 Tomans from the main transaction is sent
// to ZP.125732 with this Description: Testing profit
$zarinpal->addSharedPay('ZP.125732', 4500,  'Testing profit');

您还可以为共享支付添加多个项目

$zarinpal->addSharedPay('ZP.125732', 4500, 'Testing profit');
$zarinpal->addSharedPay('ZP.133476.2', 1200, 'More testing profit');
$zarinpal->addSharedPay('ZP.197825.1', 6700, 'More than more testing profit');

长期授权

默认情况下,授权将在生成后 15 分钟过期,但您可以使用 expireIn() 方法设置您生成的授权的定制生命周期(介于 1800 到 3888000 秒之间)。您应该在 request() 之前使用它。

// Will expire after 7200 seconds (2 hours)
$zarinpal->expireIn(7200);

请注意,您需要激活必要的服务才能使用此方法(联系 Zarinpal 支持)。

获取重定向 URL

有时,您需要具有网关 URL 而不是重定向。

$zarinpal->getRedirectURL();

请注意在 $zarinpal->request() 之后使用此方法。看看这个例子

$result = $zarinpal->request();
if ($result->ok) {
    // It will return something like:
    // https://www.zarinpal.com/pg/StartPay/xxxxx/
    $zarinpal->getRedirectURL();
}

获取生成的授权

通常您不需要此方法,但您可以获取纯生成的授权。这也需要在 request() 之后运行。

$result = $zarinpal->request();
if ($result->ok) {
    $zarinpal->getAuthority();
}

刷新授权

如果您想刷新您的授权生命周期,请使用 refreshAuthority()。它与 expireIn() 做的是同一件事。但是 refreshAuthority() 可以在您过去生成授权时使用,而 expireIn() 将帮助您在生成之前设置您的授权生命周期。

// This will refresh your authority (xxxxxxxxxx) for 3600 seconds (1 hour)
$zarinpal->refreshAuthority("xxxxxxxxxx", 3600);

获取未验证交易列表

此方法返回您尚未 verify() 的交易列表,因此听起来这个列表上的所有交易都应该是不完整的。

$result  =  $zarinpal->getUnverified();
if ($result->ok) {
    // Contains an array of arrays
    print_r($result->body->Authorities);
} else {
    echo $result->message;
}

响应

API 的所有响应都将返回一个 Response 对象。此对象包含以下数据

{
  "ok": true|false,
  "message": string,
  "status": int,
  "body": {
    ...
  }
}

您可以使用 ok 检查请求是否成功,在 status 中获取返回的状态,并在 message 中获取翻译后的状态消息。您还可以通过 body 访问 API 结果。