karim007/sslcommerz-laravel

SSLCommerz - Laravel 库

v2.3 2024-06-02 06:18 UTC

This package is auto-updated.

Last update: 2024-09-02 07:02:18 UTC


README

Downloads Starts

功能

这是一个为SSLCommerz提供的php/laravel包装包。

要求

  • PHP >=7.4
  • Laravel >= 6
  • ext-curl '*'

安装

composer require karim007/sslcommerz-laravel

发布供应商(配置)

#it will publish config file in your config folders
php artisan vendor:publish --provider="Karim007\SslcommerzLaravel\SslcommerzLaravelServiceProvider" --tag="config"

发布配置文件后,设置您的凭据。您可以在配置目录中的sslcommerz.php文件中看到这些。

'sandbox' => env("SSLCOMMERZ_SANDBOX", false), // For Sandbox, use "true", For Live, use "false"
'middleware' => 'web',//you can change this middleware according to you
'store_id' => env("SSLCOMMERZ_STORE_ID"),
'store_password' => env("SSLCOMMERZ__STORE_PASSWORD"),
'success_url' => '/sslcommerz/success',
'failed_url' => '/sslcommerz/fail',
'cancel_url' => '/sslcommerz/cancel',
'ipn_url' => '/sslcommerz/ipn',
'return_response' => 'html', //html or json html means blade return json means json data return

设置.env配置

SSLCOMMERZ_SANDBOX=true #For Sandbox, use "true", For Live, use "false"
SSLCOMMERZ_STORE_ID=
SSLCOMMERZ__STORE_PASSWORD=

出于开发目的,您可以通过在https://developer.sslcommerz.com/registration/注册来获取沙盒'商店ID'和'商店密码'。

发布SslCommerzPaymentController.php控制器

#it will publish controllers file in your app\Http\Controllers folders

php artisan vendor:publish --provider="Karim007\SslcommerzLaravel\SslcommerzLaravelServiceProvider" --tag="controllers"

这是您的路由列表

Route::group(['middleware'=>[config('sslcommerz.middleware','web')]], function () {
    Route::get('/sslcommerz/example1', [SslCommerzPaymentController::class, 'exampleEasyCheckout']);
    Route::get('/sslcommerz/example2', [SslCommerzPaymentController::class, 'exampleHostedCheckout']);

    Route::post('/sslcommerz/pay', [SslCommerzPaymentController::class, 'index']);
    Route::post('/sslcommerz/pay-via-ajax', [SslCommerzPaymentController::class, 'payViaAjax']);

    Route::post('/sslcommerz/success', [SslCommerzPaymentController::class, 'success']);
    Route::post('/sslcommerz/fail', [SslCommerzPaymentController::class, 'fail']);
    Route::post('/sslcommerz/cancel', [SslCommerzPaymentController::class, 'cancel']);

    Route::post('/sslcommerz/ipn', [SslCommerzPaymentController::class, 'ipn']);
});

相应地为VerifyCsrfToken中间件添加异常。

protected $except = [
    '/sslcommerz/*',
];

支付(所有功能已在SslCommerzPaymentController中附加)

$post_data = array();
$post_data['total_amount'] = '10'; # You cant not pay less than 10
$post_data['currency'] = "BDT";
$post_data['tran_id'] = uniqid(); // tran_id must be unique

$sslc = new SslCommerzNotification();

//for hosted payment
$payment_options = $sslc->makePayment($post_data, 'hosted');
#or
//for api/popup payment
$payment_options = $sslc->makePayment($post_data, 'checkout', 'json');

附加其他信息(可选)

    $post_data = array();
    $post_data['total_amount'] = '10'; # You cant not pay less than 10
    $post_data['currency'] = "BDT";
    $post_data['tran_id'] = uniqid(); // tran_id must be unique

    $customer = array();
    $customer['name'] = 'Ab Karim';
    $customer['email'] = 'customer@mail.com';
    $customer['address_1'] = 'Dhaka';
    $customer['address_2'] = "";
    $customer['city'] = "";
    $customer['state'] = "";
    $customer['postcode'] = "";
    $customer['country'] = "Bangladesh";
    $customer['phone'] = '8801XXXXXXXXX';
    $customer['fax'] = "";

    $s_info = array();
    $s_info['shipping_method'] = 'Yes'; // string (50)	Mandatory - Shipping method of the order. Example: YES or NO or Courier
    $s_info['num_of_item'] = 1; // integer (1)	Mandatory - No of product will be shipped. Example: 1 or 2 or etc
    $s_info['ship_name'] = 'Abc'; // string (50)	Mandatory, if shipping_method is YES - Shipping Address of your order. Not mandatory but useful if provided
    $s_info['ship_add1'] = 'Dhaka';; // string (50)	Mandatory, if shipping_method is YES - Additional Shipping Address of your order. Not mandatory but useful if provided
    $s_info['ship_add2'] = ''; // string (50)	Additional Shipping Address of your order. Not mandatory but useful if provided
    $s_info['ship_city'] = 'Dhaka'; // string (50)	Mandatory, if shipping_method is YES - Shipping city of your order. Not mandatory but useful if provided
    $s_info['ship_state'] = ''; // string (50)	Shipping state of your order. Not mandatory but useful if provided
    $s_info['ship_postcode'] = '1215'; // string (50)	Mandatory, if shipping_method is YES - Shipping postcode of your order. Not mandatory but useful if provided
    $s_info['ship_country'] = 'Bangladesh'; // string (50)	Mandatory, if shipping_method is YES - Shipping country of your order. Not mandatory but useful if provided

    $sslc = new SslCommerzNotification();
    $sslc->setCustomerInfo($customer)->setShipmentInfo($s_info);
    
    //then you can call
    $sslc->makePayment($post_data, 'hosted');
    //or
    $sslc->makePayment($post_data, 'checkout', 'json');

如果您想,您可以发布订单迁移

#if you already have orders or this related table then skip it
#it will publish order migrations file in your database\migrations folders
php artisan vendor:publish --provider="Karim007\SslcommerzLaravel\SslcommerzLaravelServiceProvider" --tag="migrations"

php artisan migrate

您还可以发布视图(可选)

#it will publish order migrations file in your resource\views\sslcommerz folders
php artisan vendor:publish --provider="Karim007\SslcommerzLaravel\SslcommerzLaravelServiceProvider" --tag="views"

欢迎对SSLCommerz支付网关包做出贡献。在提交拉取请求之前,请注意以下指南。

  • 遵循PSR-4编码标准。
  • 首先阅读SSLCommerz API文档。请联系SSLCommerz获取他们的API文档和沙盒访问权限。

许可

此存储库在MIT许可下发布。

版权所有 2023 md abdul karim。我们与SSLCommerz无关,不提供任何保证。