sportakal/garantipos

0.1.4 2022-05-30 08:58 UTC

This package is auto-updated.

Last update: 2024-09-29 06:03:21 UTC


README

Garanti银行提供用于虚拟POS交易的PHP集成库。您可以轻松地进行3D Secure、XMLPay和退款操作。

有关测试环境和生产环境中的用户信息,请与Garanti银行联系。

安装

Composer

您可以使用Composer Composer 安装这些依赖项。

$ composer require sportakal/garantipos

为了使用这些依赖项,请使用Composer的autoload功能。

require_once('vendor/autoload.php');

用法

将虚拟POS用户信息分配给Options对象。

use Sportakal\Garantipos\Models\Options;

$options = new Options();
$options->setMode($_ENV['MODE']);
$options->setApiVersion($_ENV['API_VERSION']);
$options->setTerminalId($_ENV['TERMINAL_ID']);
$options->setTerminalProvUserId($_ENV['TERMINAL_PROV_USER_ID_PAY']);
$options->setTerminalProvUserPassword($_ENV['TERMINAL_PROV_USER_PASSWORD']);
$options->setTerminalUserId($_ENV['TERMINAL_USER_ID']);
$options->setTerminalMerchantId($_ENV['TERMINAL_MERCHANT_ID']);
$options->setStoreKey($_ENV['STORE_KEY']);

将卡片信息分配给Card对象。

$card = new Card();
$card->setNumber('5549608789641500');
$card->setExpireDate('0323');
$card->setCVV2('712');

将客户信息分配给Customer对象。

$customer = new Customer();
$customer->setIpAddress('159.146.45.34');
$customer->setEmailAddress('portakalsinan@gmail.com');

将订单信息分配给Order对象。

$order = new Order();
$order->setOrderID('sportakal_garantipos_' . time());

将地址信息分配给Address对象。

$address = new Address();
$address->setType('B'); // B for 'billing' or S for 'shipping'
$address->setName('Sinan');
$address->setLastName('Portakal');
$address->setPhoneNumber('+90 532 345 67 89');
$address->setText('Kınıklı Mah.');
$address->setDistrict('Pamukkale');
$address->setCity('Denizli');
$address->setCountry('Turkey');

使用addAddress方法将地址添加到订单中。

$order->addAddress($address);

将交易信息分配给Transaction对象。

$transaction = new Transaction();
$transaction->setInstallmentCnt("");
$transaction->setAmount(1000);
$transaction->setCurrencyCode('TRY');
$transaction->setCardholderPresentCode('0');
$transaction->setMotoInd('N');
$transaction->setDescription('test payment');

将这些对象收集到RequestModel对象中。

$request = new RequestModel();
$request->setOptions($options);
$request->setCard($card);
$request->setCustomer($customer);
$request->setOrder($order);
$request->setTransaction($transaction);

根据您的操作将RequestModel分配给Request对象。

无3D Secure的交易

$request = new \Sportakal\Garantipos\Requests\Pay($request);

退款操作

$request = new \Sportakal\Garantipos\Requests\Refund($request);

3D Secure支付操作

$request = new \Sportakal\Garantipos\Requests\ThreeDSecurePay($request);

操作结果

您可以通过以下方式检查操作结果。

$result = $request->getResult();

$status = $result->getStatus(); //boolean
$message = $result->getStatusMessage(); //string
$error_message = $result->getErrorMessage()); //string

在3D Secure操作中,还会返回mdStatusCode和mdErrorMessage值。

在3D Secure操作完成后,数据将通过您指定的successUrlerrorUrl地址发送。您可以在该地址处使用以下方法捕获这些数据并检查mdStatus值。

$result = new \Sportakal\Garantipos\Results\ThreeDSecurePayResult($options);

$md_status = $result->getMdStatus();
$md_response_message = $result->getResponseMessage();
$md_error_message = $result->getErrorMessage()

操作结果还会返回OrderTransaction对象。

$order = $result->getOrder();
$transaction = $result->getTransaction();

/samples目录中可以找到更多示例。

开发

安装依赖项

composer install

里程碑

  • 将添加更多操作类型
    • 取消交易
    • Garanti Pay
    • Bin查询
    • TCKN查询
    • 预授权交易