shibby / sanalpos
为支持 Garanti Bankası 和 EST 的银行(İş Bankası, Akbank, Finansbank, Halk Bankası, KuveytTürk, Garanti, BankAsya, Vakıfbank, Yapı Kredi ve Anadolubank)提供的虚拟POS类。
Requires
- php: >=5.4.0
- shibby/ekrembk-sanal-pos: dev-master
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 类中添加各种检查。
- 添加取消和退款操作。