ffb128/zarinpal

Zarinpal API 的 PHP 封装。

1.1 2019-05-26 12:25 UTC

This package is auto-updated.

Last update: 2024-09-29 00:38:41 UTC


README

GitHub GitHub issues
一个针对 Zarinpal 的 PHP 全功能 API 封装。
此库允许您尽可能轻松地使用 zarinpal API。

特性

  • 易于使用的 API
  • 完整的 API 方法
  • 支持 REST 和 Soap 客户端(您也可以添加自己的驱动程序)
  • 完整文档

安装

使用 Composer

composer require ffb128/zarinpal 

快速开始

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

use  ffb128\Zarinpal\Zarinpal;
$zarinpal  =  new  Zarinpal("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

$zarinpal->setAmount(5500);
$zarinpal->setDescription("Buying test product");
$zarinpal->setCallback("http://example.com/verify.php");

$result  =  $zarinpal->request();
if($result->ok  ==  true){
    echo  $zarinpal->redirect();
} else{
    echo "We have an error: ". $result->message;
}

验证交易(verify.php)

use  ffb128\Zarinpal\Zarinpal;
$zarinpal  =  new  Zarinpal("XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX");

$zarinpal->setAmount(5500);

$result  =  $zarinpal->verify();
if($result->ok  ==  true){
    echo  "Successful Transaction!";
}

更多!

设置用户信息

您可以将用户信息传递给 Zarinpal,这有助于更好地控制您的交易。

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

使用沙箱

当您想进行一些具有自定义结果的测试交易时,可以使用沙箱模式(成功或失败)。

$zarinpal->enableSandbox();

使用 Zaringate

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

$zarinpal->enableZaringate();

共享支付

此方法适用于那些必须以特殊方式分配进入价格带来的收益的卖家。例如,您拥有一个提供仪式服务的网站,您与几个承包商有贡献。这样,您将保留一些钱,并将剩余的钱结算到承包商的账户。

// Means that 4500 Toman from the main transaction is sent
// to ZP.199998.1 with this Description: Testing Profit
$zarinpal->addSharedPay("ZP.199998.1",  4500,  "Testing Profit");

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

$zarinpal->addSharedPay("ZP.199996.1",  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 而不是 redirect()

$zarinpal->getRedirectURL();

请注意在 $zarinpal->request() 之后使用此方法
请查看这个更完整的示例

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

获取生成的权限

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

$result  =  $zarinpal->request();
if($result->ok  ==  true){
    $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  ==  true){
    // contain an array of array
    print_r($result->body->Authorities);
} else{
    echo $result->message;
}

Http 驱动器

此库允许您同时使用 REST 和 Soap Zarinpal 客户端。
默认情况下,将使用 Curl 驱动器发送请求,但您可以通过 setHttpDriver() 来更改它。
有两个现成的驱动器(Curl 和 Soap),您也可以创建自己的(请参阅 src/Http/Drivers

// Switch to Soap Client (Need to install ext-soap)
$zarinpal->setHttpDriver(new  \ffb128\Zarinpal\Http\Drivers\Soap);
// Swith to Curl Client (No Dependency!)
$zarinpal->setHttpDriver(new  \ffb128\Zarinpal\Http\Drivers\Curl);

建议使用 REST API(以获得更好的性能和速度)

响应

所有 API 响应都将返回给您 Http\Response 对象。
此对象包含以下内容

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

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

许可证

根据 MIT 许可证 的条款许可