ffb128 / zarinpal
Zarinpal API 的 PHP 封装。
Suggests
- ext-soap: Allows using Zarinpal Soap API for Extra Requests
This package is auto-updated.
Last update: 2024-09-29 00:38:41 UTC
README
一个针对 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 许可证 的条款许可