mews/pos

为土耳其银行提供的虚拟POS库

1.4.1 2024-08-17 10:42 UTC

README

Version Monthly Downloads License PHP Version Require

该包旨在通过一个公共接口类,实现所有土耳其银行虚拟POS系统的使用。

支持的支付网关/银行

主要标题

特性

  • 非安全电子商务模型支付 (PosInterface::MODEL_NON_SECURE)
  • 3D Secure 模型支付 (PosInterface::MODEL_3D_SECURE)
  • 3D Pay 模型支付 (PosInterface::MODEL_3D_PAY)
  • 3D Host 模型支付 (PosInterface::MODEL_3D_HOST)
  • 订单/支付状态查询 (PosInterface::TX_TYPE_STATUS)
  • 查询订单历史记录 (PosInterface::TX_TYPE_ORDER_HISTORY)
  • 查询历史交易 (PosInterface::TX_TYPE_HISTORY)
  • 执行订单/退款 (PosInterface::TX_TYPE_REFUND)
  • 取消订单 (PosInterface::TX_TYPE_CANCEL)
  • 在发送到网关API之前修改API请求数据
  • 支持不同货币的支付
  • 重复(周期性)支付指令
  • PSR-3 日志支持
  • PSR-18 HTTP 客户端支持

不同网关的单个操作流程

  • 从一个(3DSecure3DPay3DHostNonSecure)支付模型切换到另一个模型只需要很少的修改。
  • 对于同一类型操作,从不同网关返回的值已按相同格式归一化。也就是说,您不需要更新代码。
  • 对于同一类型操作,发送到不同网关的值也已按相同格式归一化。

最新更新

有关最新更改,请参阅CHANGELOG

最低要求

  • PHP >= 7.4
  • ext-dom
  • ext-json
  • ext-openssl
  • ext-libxml
  • ext-zlib
  • ext-SimpleXML
  • ext-soap (仅适用于KuveytPos)
  • PSR-18: HTTP 客户端
  • PSR-14: 事件调度器

安装

框架

基本安装

$ composer require symfony/event-dispatcher mews/pos

库没有特定的HTTP Client依赖。可以使用任何符合PSR-18 HTTP Client标准的库。如果您的项目中已经安装了PSR-18实现,则会自动使用。

或者为了快速入门

$ composer require php-http/curl-client nyholm/psr7 symfony/event-dispatcher mews/pos

提供其他PSR-18实现的库: https://packagist.org.cn/providers/psr/http-client-implementation

然后在自己的项目目录中运行以下命令,将配置文件复制到项目中。

$ cp ./vendor/mews/pos/config/pos_production.php ./pos_prod_ayarlar.php

如果您在测试环境中开发,请同时复制测试设置

$ cp ./vendor/mews/pos/config/pos_test.php ./pos_test_ayarlar.php

复制后,您可以删除配置文件中不需要使用的银行设置。

然后,我们需要根据新设置创建并使用 Pos 对象。例如:

$yeniAyarlar = require __DIR__ . '/pos_prod_ayarlar.php';
// veya test ortamı için $yeniAyarlar = require __DIR__ . '/pos_test_ayarlar.php';

$pos = \Mews\Pos\Factory\PosFactory::createPosGateway($account, $yeniAyarlar, $eventDispatcher);

请不要在项目中直接使用库中的pos_production.phppos_test.php配置文件!如上所述,建议您复制它们后再使用。

添加不同银行的虚拟POS

要将不同银行配置添加到您项目中复制的./pos_prod_ayarlar.php文件中,可以使用下面的示例。

<?php

return [
    // Banka sanal pos tanımlamaları
    'banks'         => [
        'akbank'    => [
            'name'  => 'AKBANK T.A.S.',
            'class' => Mews\Pos\Gateways\EstV3Pos::class,
            'gateway_endpoints'  => [
                'payment_api'     => 'https://www.sanalakpos.com/fim/api',
                'gateway_3d'      => 'https://www.sanalakpos.com/fim/est3Dgate',
                'gateway_3d_host' => 'https://sanalpos.sanalakpos.com.tr/fim/est3Dgate',
            ],
        ],

        // Yeni eklenen banka
        'isbank'    => [ // unique bir isim vermeniz gerekir.
            'name'  => 'İŞ BANKASI .A.S.',
            'class' => \Mews\Pos\Gateways\EstV3Pos::class, // Altyapı sınıfı
            'gateway_endpoints'  => [
                'payment_api'     => 'https://sanalpos.isbank.com.tr/fim/api',
                'gateway_3d'      => 'https://sanalpos.isbank.com.tr/fim/est3Dgate',
            ],
        ],
    ]
];

示例代码

示例可以在/examples/docs目录中找到。

3D支付示例代码通常会将卡信息通过POST方式发送到网站服务器(index.php <= form.php),然后将其转发到网关。这样可以在不同银行之间保持实施的一致性(共同的信用卡表单和相同的处理流程)。通常,可以直接将卡信息转发到网关,而无需将其发送到网站服务器(通常,银行示例代码就是这样实现的)。但是

  • 当有多个银行选项或客户需要更换银行时,您需要根据需要更新卡信息表单。
  • 特别是YKB POSNet、Vakıf Katılım和VakıfBank POS要求通过网站服务器POST卡信息。

在弹出窗口或 Iframe 中进行支付

在不将客户重定向到银行页面的情况下,可以通过