fadion/bkt

BKT阿尔巴尼亚在线支付系统的助手。

dev-master 2015-11-19 19:34 UTC

This package is auto-updated.

Last update: 2024-09-21 20:54:00 UTC


README

这是一个简单的类,用于简化请求授权数据和响应验证的数据生成。BKT的eCommerce服务与其他服务不同,易于实现。然而,它的主要问题是如何生成用于授权订单的hash以及如何验证其响应,这部分在手册中未明确说明。使用此包,您只需填写一些参数。

安装

类可以手动使用或通过composer。后一种方法更受推荐,并且每个PHP开发者都应该已经将其纳入其工作流程。

Composer

可以在您的脚本或框架(Laravel、Symfony等)中使用Composer,并且无论在哪种情况下,包都按相同的方式工作。唯一的区别是,在框架中,自动加载过程会自动为您执行,因此您不需要跟踪最后一步。

最初,请将包包含在composer.json

"require" : {
    "fadion/bkt": "dev-master"
}

在终端中执行以下命令进行安装

$ composer install

包含Composer的autoload

require 'vendor/autoload.php';

手动

只需在需要的地方包含类即可。它们的放置位置可能不是最低的,因为这取决于您的设置。

require 'bkt/src/Authenticate.php';
require 'bkt/src/Notify.php';

授权

授权阶段是您生成订单数据和将其发送到BKT服务器的阶段。买家将被重定向到支付表单,因此确保数据正确至关重要。特别是,如上所述,hash的生成未文档化,并且没有安全保障可能会给您带来麻烦。

每个BKT电子商务账户都获得clientidstorekey,这些唯一数据分别作为公钥和私钥使用。在以下示例中,我将使用示例数据,您通常需要自行替换。

数据设置

use Fadion\BKT\Authenticate;

$auth = new Authenticate([
    'orderid' => '12345',
    'clientid' => 'ABC123',
    'okUrl' => 'http://www.dyqanijuaj.com/sukses',
    'failUrl' => 'http://www.dyqanijuaj.com/problem',
    'storekey' => 'DEF456',
    'amount' => 1500
]);

一些标准数据已预先设置,通常不需要您修改。上面显示的数据属于您的商店或当前订单,并在每次授权时都需要设置。

除了将数据作为列表传递之外,还可以通过方法传递

$auth = new Authenticate();

$auth->setOrderId('ABC123');
$auth->setClientId('12345');
$auth->setOkUrl('http://www.dyqanijuaj.com/sukses');
$auth->setFailUrl('http://www.dyqanijuaj.com/problem');
$auth->setStoreKey('DEF456');
$auth->setAmount(1500);

货币自动设置为LEK(代码008)。要更改它,您有两种方法

将其作为列表中的键传递

$auth = new Authenticate([
    // të dhënat e tjera
    'currency' => '840'
]);

或通过专用方法

$auth = new Authenticate();
$auth->setCurrency('840');

货币代码难以记住,因此您可以使用常量来表示三个典型值

$auth->setCurrency(Authenticate::CURRENCY_LEK);
$auth->setCurrency(Authenticate::CURRENCY_EUR);
$auth->setCurrency(Authenticate::CURRENCY_USD);

生成Hash

到目前为止传递到授权对象的所有数据都有助于一个目的:生成hash。生成的此代码被发送到BKT服务器,该服务器处理并验证请求。

$auth->generate();

上面的方法足以生成hash并将其放入数据列表中。

创建请求

BKT服务器期望请求是POST,最简单的方法是通过表单发送。表单字段在手册中有很好的说明,这里不再赘述。您感兴趣的是如何在表单中使用这些数据。

我们已生成hash,它填充了数据列表。这个列表可以通过类的实例直接访问,字段名称与手册中完全相同。

<?php
$auth = new Authenticate([/* lista e te dhenave */]);
$auth->generate();
?>

<form method="post" action="http://serveri.i.bkt">
    <input type="hidden" name="clientid" value="<?= $auth['clientid']; ?>">
    <input type="hidden" name="amount" value="<?= $auth['amount']; ?>">
    <input type="hidden" name="hash" value="<?= $auth['hash']; ?>">
    <!-- pjesa tjeter e fushave -->
</form>

为了使工作更轻松,还有一个方法可以生成所有数据的HTML输入。您需要自己添加地址、公司、电话等部分。

echo $auth->inputs();

通知

响应阶段是最后一步,用于通知支付是否成功。后台发生的是将服务器返回的哈希值与本地哈希值进行比对,以验证响应的有效性。Notify 类正是执行这一过程,只通过2行代码即可显示是否一切顺利。

类需要两个参数:POST数据以及storekey(私钥)来验证响应。

use Fadion\BKT\Notify;

$notify = new Notify($_POST, 'DEF456');

if ($notify->success()) {
    // porosi e suksesshme
}

// ose

if ($notify->error()) {
    // porosi me probleme
}

责任

我和这个包都与BKT无关。包的目的是帮助您集成银行的电子商务系统,但作为其作者,我对可能引起的问题不承担任何责任。您可以自由使用和修改,使其更适合您的需求。