shibby/sanalpos

为支持 Garanti Bankası 和 EST 的银行(İş Bankası, Akbank, Finansbank, Halk Bankası, KuveytTürk, Garanti, BankAsya, Vakıfbank, Yapı Kredi ve Anadolubank)提供的虚拟POS类。

0.1.8 2018-06-29 15:17 UTC

This package is auto-updated.

Last update: 2024-09-05 18:26:01 UTC


README

为 Garanti Bankası, Bank Asya, Vakıf Bank 和支持 EST 的银行(İş Bankası, Akbank, Finansbank, Halk Bankası 和 Anadolubank)提供的虚拟POS类。

目前仅提供正常API的应用程序。只有 VakıfBank 提供了 3D 方法。

## 安装 使用以下命令创建 composer.json 文件并运行 php composer.phar install 来安装。或者可以将以下内容添加到现有的 composer.json 文件中。

{
    "require": {
        "shibby/sanalpos": "dev-master"
    }
}

然后可以在项目中按以下方式进行自动加载。

<?php
require 'vendor/autoload.php';

EST(İş Bankası, Akbank, Finansbank, Halk Bankası 和 Anadolubank 虚拟POS)

我们使用 SanalPosEst 类。我们使用以下参数创建对象。

  • 银行:要使用的银行(isbank, akbank, finansbank, halkbank, anadolubank)
  • clientId - 银行提供的 clientId
  • username - 银行提供的 username
  • password - 银行提供的 password

然后使用 setCard 方法输入卡片信息('卡号', '有效期月份', '有效期年份', 'Cvv码')

第三步是输入订单信息

  • 订单号(每个订单在系统中必须有不同的 'id'。使用相同的 'id' 进行重复订单会出错)
  • 下单者的电子邮件地址(在某些银行中此字段是必需的,在这种情况下可以发送任何有效的电子邮件地址。)
  • 订单金额(100 TL, 100.25(100元25分)在 EST 系统中,可以用于分位的逗号或点(100.25与100,25相同)
  • 分期金额:将进行的分期数。分期销售可以留空。

对于测试模式,使用 setMode 方法并使用 'TEST' 参数。如果不使用此参数或提供其他值,则执行真实操作。

最后,使用 pay 方法获取授权。如果向 pay 方法提供 TRUE 参数,则执行 PreAuth(预授权)操作,否则执行 Auth(销售)操作。

销售(Auth或PreAuth)

测试数据的示例用法

$est = new \SanalPos\Est\SanalPosEst('isbank', '700100000', 'ISBANKAPI', 'ISBANK07');
$est->setCard('4508034508034509', '12', '16', '000');
$est->setOrder('deneme123', 'test@test.com', '1');
$est->setMode('TEST');

$result = new \SanalPos\Est\SanalPosResponseEst($est->pay());
var_dump($result);

预授权取消(PostAuth)

用于关闭使用 PreAuth 打开的订单。在 EST 系统中不需要使用 setCard 和 setOrder 方法。postAuth 只需要一个参数,即已执行预授权的订单号。

$est = new \SanalPos\Est\SanalPosEst('isbank', '700100000', 'ISBANKAPI', 'ISBANK07');
$est->postAuth('deneme1234');

取消(Void)操作

取消是指在当天结束时之前取消一个操作。在当天结束之后需要使用退款。cancel 方法需要一个参数,即订单号。

$est = new \SanalPos\Est\SanalPosEst('isbank', '700100000', 'ISBANKAPI', 'ISBANK07');
$est->cancel('deneme1234');

退款(Refund)

取消订单的部分和全部。退款操作只能在当天结束之后进行。redund 方法需要一个参数,即已执行预授权的订单号和可选的数量。如果没有指定可选数量,则全部金额将被退款。

$est = new \SanalPos\Est\SanalPosEst('isbank', '700100000', 'ISBANKAPI', 'ISBANK07');
$est->refund('deneme1234', '25') // Siparişin 25 lirasını iade et.
// veya
$est->refund('deneme1234') // Siparişin tümünü iade et.

响应

响应以 XML 形式获取 \SanalPos\Est\SanalPosResponseEst 类用作这些响应的通用类。有三个方法:success:如果操作成功则返回 true,否则返回 false;errors:返回获取到的错误信息;response:返回获取到的 XML 响应。

Garanti Bankası

Garanti 类也以类似的方式使用。不同之处在于不需要银行名称,但需要银行提供的信息。这些信息依次是;

  • merchantId,
  • terminalId,
  • userId,
  • password,
  • provisionUser

除此之外的其他操作与上面相同。但是在 Garanti 银行中,在每次操作之前必须使用 setCard 和 setOrder 方法。这样做的原因是 Garanti 银行使用这些数据来计算哈希值。

// Sınıfı initialize et
$garantiPos = new \SanalPos\Garanti\SanalPosGaranti('7000679', '30691297', 'PROVAUT', '123qweASD', 'PROVAUT');

// Kredi kartı Bilgilerini set et
$garantiPos->setCard('4282209027132016', '05', '15', '232');

// Sipariş verilerini set et
// Mecburi alanlar 'orderId', 'customer email', 'order total'
$garantiPos->setOrder('deneme23', 'test@test.com', '1');

// Test sunucusunda deneme yapmak için mode'u 'TEST' olarak ayarlıyoruz.
$garantiPos->setMode('TEST');

// pay() metodu ile ödemeyi gönderiyoruz.
$result = new \SanalPos\Garanti\SanalPosReponseGaranti($garantiPos->pay());

// Eğer sorgu onaylandı ise success metodu true döndürüyor
// aksi halde errors() metodunda hata mesajı var.
if($result->success()){
    // transaction successful
}else{
    //transaction failed
    var_dump($result->errors());
}

##TODO 初始计划;

  • 在 Base 类中添加各种检查。
  • 添加取消和退款操作。