From 551f00dbf6a81efa60e347e02ab7be1eefc7a364 Mon Sep 17 00:00:00 2001 From: sriramv Date: Wed, 17 May 2023 17:37:28 +0530 Subject: [PATCH] payment:GWM --- app/Config/Autoload.php | 1 + app/Config/CronJob.php | 134 +++++++ app/Config/Routes.php | 3 +- app/Controllers/Admin_controller.php | 22 +- app/Controllers/Member_controller.php | 46 ++- app/Controllers/Sendmail_controller.php | 18 +- app/Libraries/SquareService.php | 61 +++ app/Views/layout/header.php | 2 +- app/Views/members_list.php | 52 ++- app/Views/payment_form.php | 26 ++ composer.json | 4 +- composer.lock | 496 +++++++++++++++++++++++- 12 files changed, 840 insertions(+), 25 deletions(-) create mode 100644 app/Config/CronJob.php create mode 100644 app/Libraries/SquareService.php create mode 100644 app/Views/payment_form.php diff --git a/app/Config/Autoload.php b/app/Config/Autoload.php index abd9df9..f8a6b3c 100644 --- a/app/Config/Autoload.php +++ b/app/Config/Autoload.php @@ -42,6 +42,7 @@ class Autoload extends AutoloadConfig public $psr4 = [ APP_NAMESPACE => APPPATH, // For custom app namespace 'Config' => APPPATH . 'Config', + 'Daycry\CronJob' => APPPATH .'ThirdParty/cronjob/src', ]; /** diff --git a/app/Config/CronJob.php b/app/Config/CronJob.php new file mode 100644 index 0000000..d821a95 --- /dev/null +++ b/app/Config/CronJob.php @@ -0,0 +1,134 @@ + '\Daycry\CronJob\Views\login', + 'dashboard' => '\Daycry\CronJob\Views\dashboard', + 'layout' => '\Daycry\CronJob\Views\layout', + 'logs' => '\Daycry\CronJob\Views\logs' + ]; + + /* + |-------------------------------------------------------------------------- + | Dashboard login + |-------------------------------------------------------------------------- + */ + public bool $enableDashboard = false; + public string $username = 'admin'; + public string $password = 'admin'; + + /* + |-------------------------------------------------------------------------- + | Cronjobs + |-------------------------------------------------------------------------- + | + | Register any tasks within this method for the application. + | Called by the TaskRunner. + | + | @param Scheduler $schedule + */ + public function init(Scheduler $schedule) + { + + $Member_controller = new Member_controller(); + + //$schedule->call( function() { $Member_controller->shedule(); } )->everyMinute(); + $schedule->url('http://localhost/golf_backend/scheduler')->everyFiveMinutes(); + + // $schedule->command('foo:bar')->everyMinute(); + + // $schedule->shell('cp foo bar')->daily( '11:00 pm' ); + + // $schedule->call( function() { do something.... } )->everyMonday()->named( 'foo' ) + } +} diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 79f9be8..fe4db8e 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -48,7 +48,8 @@ $routes->match(['get','post'],'/change_password','Member_controller::change_pass $routes->match(['get','post'],'/change_password_form','Member_controller::change_password_form'); $routes->match(['get','post'],'/member_deactivate/(:any)','Member_controller::member_deactivate/$1'); $routes->match(['get','post'],'/member_activate/(:any)','Member_controller::member_activate/$1'); - +$routes->match(['get'],'/scheduler','Member_controller::scheduler'); +$routes->match(['get'],'/processPayment','Member_controller::processPayment'); diff --git a/app/Controllers/Admin_controller.php b/app/Controllers/Admin_controller.php index 6220970..97970be 100644 --- a/app/Controllers/Admin_controller.php +++ b/app/Controllers/Admin_controller.php @@ -306,12 +306,11 @@ class Admin_controller extends BaseController public function transactions_list($member_id =null) { - if($member_id == 'null') + if($member_id == null) { $userdata['userdata'] = $this->dModel->getLoggedInUserData(session()->get('logged_user')); $data['creditsData'] = $this->creditsModel->select('member_credits.* , member.name as member_name ') ->join('member', 'member_credits.member_id = member.id', 'left') - ->where('md5(member_credits.member_id)', $member_id ) ->findAll(); echo view('layout/header',$userdata); echo view('transactions_list',$data); @@ -320,18 +319,17 @@ class Admin_controller extends BaseController }else{ $userdata['userdata'] = $this->dModel->getLoggedInUserData(session()->get('logged_user')); - $data['creditsData'] = $this->creditsModel->select('member_credits.* , member.name as member_name ') - ->join('member', 'member_credits.member_id = member.id', 'left') - ->findAll(); - echo view('layout/header',$userdata); - echo view('transactions_list',$data); - echo view('layout/footer'); + $creditsData = $this->creditsModel->select('member_credits.* , member.name as member_name ') + ->join('member', 'member_credits.member_id = member.id', 'left') + ->where('md5(member_credits.member_id)', $member_id ) + ->findAll(); + $output = '
'; + foreach ($creditsData as $row) { + $output .=''; + } + echo $output .= '
DatePointsCostPack / Indidual
'.$row['created_at'].''.$row['credit_points'].''.$row['cost'].''.$row['package_name'].'
'; } - - - - } public function user_forgot_password() diff --git a/app/Controllers/Member_controller.php b/app/Controllers/Member_controller.php index c2c975b..d3a3ea9 100644 --- a/app/Controllers/Member_controller.php +++ b/app/Controllers/Member_controller.php @@ -8,7 +8,8 @@ use App\Models\Member_credits_model; use App\Models\Packages_and_pricing_model; use App\Models\Cart_model; use App\Models\Credits_usage_tracking_model; - +use Config\Services; +use App\Libraries\SquareService; class Member_controller extends BaseController { public $session; @@ -24,6 +25,8 @@ class Member_controller extends BaseController $this->cartModel = new Cart_model(); $this->CreditsUsageTrackingModel = new Credits_usage_tracking_model(); helper('form'); + + } public function index() { @@ -424,5 +427,46 @@ class Member_controller extends BaseController } echo true; } + + + public function scheduler() + { + + + $Data = $this->creditsModel->select('member_credits.* , member.name as member_name , member.email as member_email ') + ->join('member', 'member_credits.member_id = member.id', 'left') + ->findAll(); + + foreach ($Data as $index => $Value) + { + if(strtotime('-3 days', strtotime($Value['expiring_date'])) == strtotime(date("Y-m-d"))) + { + $sendmail_controller = new Sendmail_controller(); + $message = 'Hai '. $Value['member_name']. ' Your pack will expire with in three days'; + $sendmail_controller->index($Value['member_email'] , null , 5); + } + } + + } + + + + + public function processPayment() + { + $square = new SquareService(); + $result = $square->processPayment(100); // Process payment of $100 + return $result; + // Handle the payment result + // ... + } + // public function processPayment() + // { + // $square = new SquareService(); + // $paymentForm = $square->getSquarePaymentForm(); + + // // Load the Square payment form view + // return view('payment_form', ['paymentForm' => $paymentForm]); + // } // ----------------------------------------------- } diff --git a/app/Controllers/Sendmail_controller.php b/app/Controllers/Sendmail_controller.php index 9deba3e..bdf0e8f 100644 --- a/app/Controllers/Sendmail_controller.php +++ b/app/Controllers/Sendmail_controller.php @@ -12,23 +12,30 @@ class Sendmail_controller extends BaseController $this->MemberModel = new Member_model(); } - public function index($to,$code,$return) + public function index($to,$code,$return=null) { $email = \Config\Services::email(); $email->setFrom('suseendhiran.1702117@srit.org', 'suseendhiran'); - $email->setTo($to); - if ($return == 2) + $email->setTo($to); + if($return == 4) + { + $subject = 'Expire Alert'; + $message = $code; + } + else if ($return == 2) { $data['id'] = '2'; $data['otp'] = $code; + $subject ='Verify your email address'; $message = view('verification_mail_temp',$data); } - if($return == 3) + else if($return == 3) { $data['id'] = '3'; $data['username'] = $to; $data['password'] = $code; $data['url'] = base_url()."admin"; + $subject ='Verify your email address'; $message = view('verification_mail_temp',$data); } else @@ -36,9 +43,10 @@ class Sendmail_controller extends BaseController $data['to'] = $to; $data['code'] = $code; $data['url'] = base_url()."/verify_email/".md5($code); + $subject ='Verify your email address'; $message = view('verification_mail_temp',$data); } - $email->setSubject('Verify your email address'); + $email->setSubject($subject); $email->setMessage($message); if ($email->send()) { diff --git a/app/Libraries/SquareService.php b/app/Libraries/SquareService.php new file mode 100644 index 0000000..c505980 --- /dev/null +++ b/app/Libraries/SquareService.php @@ -0,0 +1,61 @@ +client = new SquareClient([ + 'accessToken' => getenv('SQUARE_ACCESS_TOKEN'), + 'environment' => getenv('SQUARE_ENVIRONMENT') // Use 'sandbox' for testing + ]); + } + + public function processPayment($amount) + { + try { + // Create a charge request + $request = new ChargeRequest([ + 'amount_money' => [ + 'amount' => $amount, + 'currency' => 'USD' + ], + 'source_id' => 'your-test-card-nonce' // Use a test card nonce for sandbox testing + ]); + + // Make the API call to charge the payment + $response = $this->client->getTransactionsApi()->charge(getenv('SQUARE_LOCATION_ID'), $request); + + // Handle the payment response + // ... + + return $response->getResult(); + } catch (ApiException $e) { + // Handle API errors + return $e->getMessage(); + // ... + } + } + + public function getSquarePaymentForm() + { + // Create a payment form using the Square Payment Form library + $paymentForm = $this->client->getPaymentFormApi()->createPaymentForm([ + 'location_id' => getenv('SQUARE_LOCATION_ID'), + 'amount_money' => [ + 'amount' => 100, + 'currency' => 'USD' + ], + 'form_id' => 'your-form-id' // Unique ID for your payment form + ]); + + return $paymentForm->getResult(); + } +} +?> \ No newline at end of file diff --git a/app/Views/layout/header.php b/app/Views/layout/header.php index 82d06f6..c083caf 100644 --- a/app/Views/layout/header.php +++ b/app/Views/layout/header.php @@ -34,7 +34,7 @@ -$(document).ready(function(){ + //fetch state and sity values $('.country').change(function(){ var country_id = $('.country').val(); diff --git a/app/Views/members_list.php b/app/Views/members_list.php index 3eddb84..068beb3 100644 --- a/app/Views/members_list.php +++ b/app/Views/members_list.php @@ -58,8 +58,9 @@ - - + + + @@ -72,4 +73,49 @@ - \ No newline at end of file + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/Views/payment_form.php b/app/Views/payment_form.php new file mode 100644 index 0000000..a06adbc --- /dev/null +++ b/app/Views/payment_form.php @@ -0,0 +1,26 @@ + + + + + + + +

Square Payment Form

+ + +
+ + + + diff --git a/composer.json b/composer.json index cec23ba..f802e1f 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,9 @@ "license": "MIT", "require": { "php": "^7.4 || ^8.0", - "codeigniter4/framework": "^4.0" + "codeigniter4/framework": "^4.0", + "daycry/cronjob": "^2.2", + "square/square": "27.0.0.20230517" }, "require-dev": { "fakerphp/faker": "^1.9", diff --git a/composer.lock b/composer.lock index 8373e6d..61cb287 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,223 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d648ee3b65e8d352e12e15817702e7cd", + "content-hash": "0488030115d0d38a89dcb6d90819ce83", "packages": [ + { + "name": "apimatic/core", + "version": "0.3.0", + "source": { + "type": "git", + "url": "https://github.com/apimatic/core-lib-php.git", + "reference": "55cc76f589a62661673ebd5fdf98614d907bf276" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/apimatic/core-lib-php/zipball/55cc76f589a62661673ebd5fdf98614d907bf276", + "reference": "55cc76f589a62661673ebd5fdf98614d907bf276", + "shasum": "" + }, + "require": { + "apimatic/core-interfaces": "~0.1.0", + "apimatic/jsonmapper": "^3.1.1", + "ext-curl": "*", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "php": "^7.2 || ^8.0", + "php-jsonpointer/php-jsonpointer": "^3.0.2" + }, + "require-dev": { + "phan/phan": "5.4.2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Core\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Core logic and the utilities for the Apimatic's PHP SDK", + "homepage": "https://github.com/apimatic/core-lib-php", + "keywords": [ + "apimatic", + "core", + "corelib", + "php" + ], + "support": { + "issues": "https://github.com/apimatic/core-lib-php/issues", + "source": "https://github.com/apimatic/core-lib-php/tree/0.3.0" + }, + "time": "2023-05-08T06:49:21+00:00" + }, + { + "name": "apimatic/core-interfaces", + "version": "0.1.2", + "source": { + "type": "git", + "url": "https://github.com/apimatic/core-interfaces-php.git", + "reference": "183214195a79784c382a446795c46ca8c1f43cc1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/apimatic/core-interfaces-php/zipball/183214195a79784c382a446795c46ca8c1f43cc1", + "reference": "183214195a79784c382a446795c46ca8c1f43cc1", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "CoreInterfaces\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Definition of the behavior of apimatic/core, apimatic/unirest-php and Apimatic's PHP SDK", + "homepage": "https://github.com/apimatic/core-interfaces-php", + "keywords": [ + "apimatic", + "core", + "corelib", + "interface", + "php", + "unirest" + ], + "support": { + "issues": "https://github.com/apimatic/core-interfaces-php/issues", + "source": "https://github.com/apimatic/core-interfaces-php/tree/0.1.2" + }, + "time": "2023-04-04T06:40:52+00:00" + }, + { + "name": "apimatic/jsonmapper", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/apimatic/jsonmapper.git", + "reference": "646a3088386a3aa6baeae5a6620517b6959ef193" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/apimatic/jsonmapper/zipball/646a3088386a3aa6baeae5a6620517b6959ef193", + "reference": "646a3088386a3aa6baeae5a6620517b6959ef193", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^5.6 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "squizlabs/php_codesniffer": "^3.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "apimatic\\jsonmapper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "OSL-3.0" + ], + "authors": [ + { + "name": "Christian Weiske", + "email": "christian.weiske@netresearch.de", + "homepage": "http://www.netresearch.de/", + "role": "Developer" + }, + { + "name": "Mehdi Jaffery", + "email": "mehdi.jaffery@apimatic.io", + "homepage": "http://apimatic.io/", + "role": "Developer" + } + ], + "description": "Map nested JSON structures onto PHP classes", + "support": { + "email": "mehdi.jaffery@apimatic.io", + "issues": "https://github.com/apimatic/jsonmapper/issues", + "source": "https://github.com/apimatic/jsonmapper/tree/3.1.1" + }, + "time": "2023-05-08T06:20:23+00:00" + }, + { + "name": "apimatic/unirest-php", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/apimatic/unirest-php.git", + "reference": "e16754010c16be5473289470f129d87a0f41b55e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/apimatic/unirest-php/zipball/e16754010c16be5473289470f129d87a0f41b55e", + "reference": "e16754010c16be5473289470f129d87a0f41b55e", + "shasum": "" + }, + "require": { + "apimatic/core-interfaces": "^0.1.0", + "ext-curl": "*", + "ext-json": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "phan/phan": "5.4.2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Unirest\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mashape", + "email": "opensource@mashape.com", + "homepage": "https://www.mashape.com", + "role": "Developer" + }, + { + "name": "APIMATIC", + "email": "opensource@apimatic.io", + "homepage": "https://www.apimatic.io", + "role": "Developer" + } + ], + "description": "Unirest PHP", + "homepage": "https://github.com/apimatic/unirest-php", + "keywords": [ + "client", + "curl", + "http", + "https", + "rest" + ], + "support": { + "email": "opensource@apimatic.io", + "issues": "https://github.com/apimatic/unirest-php/issues", + "source": "https://github.com/apimatic/unirest-php/tree/4.0.5" + }, + "time": "2023-04-25T14:19:45+00:00" + }, { "name": "codeigniter4/framework", "version": "v4.3.4", @@ -80,6 +295,115 @@ }, "time": "2023-04-27T12:36:37+00:00" }, + { + "name": "daycry/cronjob", + "version": "V2.2.10", + "source": { + "type": "git", + "url": "https://github.com/daycry/cronjob.git", + "reference": "53a34c848e2f48bf2154f7a9cffc9447a0c6de56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/daycry/cronjob/zipball/53a34c848e2f48bf2154f7a9cffc9447a0c6de56", + "reference": "53a34c848e2f48bf2154f7a9cffc9447a0c6de56", + "shasum": "" + }, + "require": { + "dragonmantank/cron-expression": "^3.3", + "php": ">=7.4" + }, + "require-dev": { + "codeigniter4/framework": "^4", + "phpunit/phpunit": "^9.1", + "rector/rector": "0.14.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Daycry\\CronJob\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "daycry", + "homepage": "https://github.com/daycry", + "role": "Developer" + } + ], + "description": "Cronjob library for Codeigniter 4", + "homepage": "https://github.com/daycry/cronjob", + "support": { + "issues": "https://github.com/daycry/cronjob/issues", + "source": "https://github.com/daycry/cronjob/tree/V2.2.10" + }, + "time": "2023-05-08T10:35:23+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.3.2", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8", + "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2022-09-10T18:51:20+00:00" + }, { "name": "laminas/laminas-escaper", "version": "2.12.0", @@ -142,6 +466,62 @@ ], "time": "2022-10-10T10:11:09+00:00" }, + { + "name": "php-jsonpointer/php-jsonpointer", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/raphaelstolt/php-jsonpointer.git", + "reference": "4428f86c6f23846e9faa5a420c4ef14e485b3afb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/raphaelstolt/php-jsonpointer/zipball/4428f86c6f23846e9faa5a420c4ef14e485b3afb", + "reference": "4428f86c6f23846e9faa5a420c4ef14e485b3afb", + "shasum": "" + }, + "require": { + "php": ">=5.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^1.11", + "phpunit/phpunit": "4.6.*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Rs\\Json": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Raphael Stolt", + "email": "raphael.stolt@gmail.com", + "homepage": "http://raphaelstolt.blogspot.com/" + } + ], + "description": "Implementation of JSON Pointer (http://tools.ietf.org/html/rfc6901)", + "homepage": "https://github.com/raphaelstolt/php-jsonpointer", + "keywords": [ + "json", + "json pointer", + "json traversal" + ], + "support": { + "issues": "https://github.com/raphaelstolt/php-jsonpointer/issues", + "source": "https://github.com/raphaelstolt/php-jsonpointer/tree/master" + }, + "time": "2016-08-29T08:51:01+00:00" + }, { "name": "psr/log", "version": "1.1.4", @@ -191,6 +571,120 @@ "source": "https://github.com/php-fig/log/tree/1.1.4" }, "time": "2021-05-03T11:20:27+00:00" + }, + { + "name": "square/square", + "version": "27.0.0.20230517", + "source": { + "type": "git", + "url": "https://github.com/square/square-php-sdk.git", + "reference": "f6af260249a52807fc801fbc476b72a144a886fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/square/square-php-sdk/zipball/f6af260249a52807fc801fbc476b72a144a886fa", + "reference": "f6af260249a52807fc801fbc476b72a144a886fa", + "shasum": "" + }, + "require": { + "apimatic/core": "~0.3.0", + "apimatic/core-interfaces": "~0.1.0", + "apimatic/unirest-php": "^4.0.0", + "ext-json": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "phan/phan": "5.4.2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Square\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Square Developer Platform", + "email": "developers@squareup.com", + "homepage": "https://squareup.com/developers" + } + ], + "description": "Use Square APIs to manage and run business including payment, customer, product, inventory, and employee management.", + "homepage": "https://squareup.com/developers", + "keywords": [ + "api", + "sdk", + "square" + ], + "support": { + "issues": "https://github.com/square/square-php-sdk/issues", + "source": "https://github.com/square/square-php-sdk/tree/27.0.0.20230517" + }, + "time": "2023-05-16T16:11:26+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" } ], "packages-dev": [