medre / pos
0.3.8
2019-12-09 23:02 UTC
Requires
- php: ^7.1.3
- ext-dom: *
- ext-json: *
- ext-mcrypt: *
- ext-simplexml: *
- guzzlehttp/guzzle: 6.3.3
- symfony/http-foundation: ^4.1
- symfony/serializer: ^4.1
README
此包的目标是,通过一个公共接口类,使所有土耳其银行虚拟POS系统可使用。EST架构已完全测试并通过使用。Garanti支付系统正在运行,但3D支付部分需要在生产环境中进行测试。YapıKredi Posnet系统正在运行,但3D支付部分需要在生产环境中进行测试。
已测试EST架构中的Akbank和Ziraat银行。
特性
- 标准电子商务模型支付(模型 => regular)
- 3D模型支付(模型 => 3d)
- 3D Pay模型支付(模型 => 3d_pay)
- 订单/支付查询(查询)
- 订单/支付历史查询(历史)
- 订单/退款(退款)
- 订单取消(取消)
最低要求
- PHP >= 7.1.3
- ext-dom
- ext-json
- ext-SimpleXML
安装
在测试服务器上;
$ mkdir pos-test && cd pos-test $ composer require mews/pos
config.php(配置文件)
<?php require './vendor/autoload.php'; $host_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http') . "://$_SERVER[HTTP_HOST]"; $path = '/pos-test/'; $base_url = $host_url . $path; $request = \Symfony\Component\HttpFoundation\Request::createFromGlobals(); $ip = $request->getClientIp(); // API kullanıcı bilgileri $account = [ 'bank' => 'akbank', 'model' => 'regular', 'client_id' => 'XXXXXXXX', 'username' => 'XXXXXXXX', 'password' => 'XXXXXXXX', 'env' => 'test', // test veya production. test ise; API Test Url, production ise; API Production URL kullanılır. ]; // API kullanıcı hesabı ile paket bir değişkene aktarılıyor try { $pos = new \Mews\Pos\Pos($account); } catch (\Mews\Pos\Exceptions\BankNotFoundException $e) { var_dump($e->getCode(), $e->getMessage()); exit(); } catch (\Mews\Pos\Exceptions\BankClassNullException $e) { var_dump($e->getCode(), $e->getMessage()); exit(); }
test.php(测试文件)
<?php require 'config.php'; // Sipariş bilgileri $order = [ 'id' => 'BENZERSIZ-SIPERIS-ID', 'name' => 'John Doe', // zorunlu değil 'email' => 'mail@customer.com', // zorunlu değil 'user_id' => '12', // zorunlu değil 'amount' => (double) 20, // Sipariş tutarı 'installment' => '0', 'currency' => 'TRY', 'ip' => $ip, 'transaction' => 'pay', // pay => Auth, pre PreAuth (Direkt satış için pay, ön provizyon için pre) ]; // Kredi kartı bilgieri $card = [ 'number' => 'XXXXXXXXXXXXXXXX', // Kredi kartı numarası 'month' => 'XX', // SKT ay 'year' => 'XX', // SKT yıl, son iki hane 'cvv' => 'XXX', // Güvenlik kodu, son üç hane ]; // API kullanıcısı ile oluşturulan $pos değişkenine prepare metoduyla sipariş bilgileri gönderiliyor $pos->prepare($order); // Ödeme tamamlanıyor $payment = $pos->payment($card); // Ödeme başarılı mı? $payment->isSuccess(); //veya $pos->isSuccess(); // Ödeme başarısız mı? $payment->isError(); //veya $pos->isError(); // Sonuç çıktısı var_dump($payment->response);
添加不同银行的虚拟POS
在您的项目目录中
$ cp ./vendor/mews/pos/config/pos.php ./pos_ayarlar.php
或者;
在您的项目中创建一个配置文件(例如pos_ayarlar.php),然后将包内./config/pos.php文件的内容复制到这里。
<?php return [ // Para birimleri 'currencies' => [ 'TRY' => 949, 'USD' => 840, 'EUR' => 978, 'GBP' => 826, 'JPY' => 392, 'RUB' => 643, ], // Banka sanal pos tanımlamaları 'banks' => [ 'akbank' => [ 'name' => 'AKBANK T.A.S.', 'class' => \Mews\Pos\EstPos::class, 'urls' => [ 'production' => 'https://www.sanalakpos.com/fim/api', 'test' => 'https://entegrasyon.asseco-see.com.tr/fim/api', 'gateway' => [ 'production' => 'https://www.sanalakpos.com/fim/est3Dgate', 'test' => 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate', ], ] ], // Yeni eklenen banka 'isbank' => [ 'name' => 'İŞ BANKASI .A.S.', 'class' => \Mews\Pos\EstPos::class, // Altyapı sınıfı 'urls' => [ 'production' => 'xxxx', // API Url 'test' => 'xxxx', // API Test Url 'gateway' => [ 'production' => 'xxxx', // 3d Kapı Url 'test' => 'xxxx', // 3d Test Kapı Url ], ] ], ] ];
之后,我们需要根据新的设置创建并使用我们的对象。示例
$yeni_ayarlar = require './pos_ayarlar.php'; $pos = new \Mews\Pos\Pos($account, $yeni_ayarlar);
示例代码
在./pos/examples目录中。
路线图
- 准备文档
- 编写单元测试 -> 这可能永远不会发生,如果有人帮忙,我会很高兴 :)
期待您的宝贵评论、建议和贡献。
许可
MIT