turown/laravel-paytr

Laravel的PayTR集成。

v1 2023-04-18 12:10 UTC

This package is auto-updated.

Last update: 2024-09-25 18:59:41 UTC


README

MIT License

描述

Laravel的PayTR集成。
此包处于开发中,第一个版本仅支持iFame支付屏幕。

感谢您的贡献。

安装

composer require turown/laravel-paytr

发布配置和资产

php artisan vendor:publish --tag="paytr"

用法

要运行此项目,您需要在.env文件中添加以下环境变量

PAYTR_MERCANT_ID
PAYTR_MERCANT_KEY
PAYTR_MERCANT_SALT
PAYTR_API_URL
PAYTR_OK_URL
PAYTR_FAIL_URL

配置

您可以在config文件中更改或获取必要的设置。此文件非常重要

use PayTR\Config;

您可以通过它轻松访问,您可以根据示例执行操作。

以下是需要设置的配置示例,用于简单的API触发。

$config = new Config();
$config->setMerchantId(00000)
       ->setMerchantKey("XXXXX")
       ->setMerchantSalt("XXXX")
       ->setApiType(2) // iFrame Type
       ->setApiUrl(ENV('PAYTR_API_URL') . 'odeme/api/get-token');

接下来,我们定义生成HASH数据的所需数组变量。

 $hash_data = [
        "merchant_id"       => $config->getMerchantId(),
        "user_ip"           => request()->ip(),
        "merchant_oid"      => 1002945, //must be unique
        "email"             => "ali.riza.oztetik@gmail.com",
        "payment_amount"    => 999, //9.99 TL|EUR|USD vs. for 999;
        "user_basket"       => json_encode([
            ["Test Product", "9.99", 1] //(Product Name - Unit Price - Quantity)
        ]),
        "no_installment"    => $config->getNoInstallment(),
        "max_installment"   => $config->getMaxInstallment(),
        "currency"          => $config->getCurrency(),
        "test_mode"         => $config->getTestMode()
    ];

然后我们设置POST数据数组并触发必要的操作

 $post_data = [
        'user_name'         => "Ali Rıza Öztetik",
        'user_address'      => "test",
        'user_phone'        => "901111111111", //Need [+][country code][area code][phone number]
        'paytr_token'       => $paytr->setHashStr($hash_data)->getToken()->token,
        'debug_on'          => $config->getDebugOn(),
        'merchant_ok_url'   => $config->getMerchantOkUrl(),
        'merchant_fail_url' => $config->getMerchantFailUrl(),
        'timeout_limit'     => $config->getTimeoutLimit()
    ];

 $post_data = array_merge($post_data, $hash_data); //Absolutely 2 array data must be combined.

然后您可以激活PayTR类,并通过调用方法进行操作。

use PayTR\Paytr;

$trigger = $paytr->call($post_data, $config->getApiUrl());



使用iFrame将在交易后返回您成功和令牌。此外,我还为您提供了必要的javascript代码。

{
  +"status": "success"
  +"token": "090aab565210f757db0d9948ed4f58c8723a9f1de3beac1f651a90cdf9b2f678-324703229"
  +"javascript_file_url": "https://www.paytr.com/js/iframeResizer.min.js"
  +"iframe_code": "<iframe src="https://www.paytr.com/odeme/guvenli/090aab565210f757db0d9948ed4f58c8723a9f1de3beac1f651a90cdf9b2f678-324703229" id="paytriframe" frameborder="0" scrolling="no" style="width: 100%;"></iframe>"
  +"script": "<script>iFrameResize({},'#paytriframe');</script>"
}

通过在返回中包含"javascript_file_url",您可以在任何地方打印"iframe_code"代码。别忘了也包含"script"变量。



实际上就是这么简单!

然后在您的屏幕上会出现一个支付屏幕。在此屏幕上完成交易后,API将返回给您,所有成功或失败的返回都在设置中指定;

'merchant_ok_url' => $config->getMerchantOkUrl()
'merchant_fail_url' => $config->getMerchantFailUrl()

这就是为什么这些设置非常重要。