diff --git a/.gitignore b/.gitignore index 9f11b75..add1d69 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .idea/ +src/mollie/vendor/ \ No newline at end of file diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index ab35360..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "src/mollie/vendor/Mollie"] - path = src/mollie/vendor/Mollie - url = https://github.com/mollie/mollie-api-php.git diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..08c3dd3 --- /dev/null +++ b/composer.json @@ -0,0 +1,8 @@ +{ + "require": { + "mollie/mollie-api-php": "^2.0" + }, + "config": { + "vendor-dir": "src/mollie/vendor" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..4b92d74 --- /dev/null +++ b/composer.lock @@ -0,0 +1,387 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "cf5ed5a56673041dedb10fab56defab1", + "packages": [ + { + "name": "composer/ca-bundle", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "46afded9720f40b9dc63542af4e3e43a1177acb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/46afded9720f40b9dc63542af4e3e43a1177acb0", + "reference": "46afded9720f40b9dc63542af4e3e43a1177acb0", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "time": "2018-08-08T08:57:40+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "6.3.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "shasum": "" + }, + "require": { + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.3-dev" + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2018-04-22T15:46:56+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2016-12-20T10:07:11+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "request", + "response", + "stream", + "uri", + "url" + ], + "time": "2017-03-20T17:10:46+00:00" + }, + { + "name": "mollie/mollie-api-php", + "version": "v2.0.13", + "source": { + "type": "git", + "url": "https://github.com/mollie/mollie-api-php.git", + "reference": "8d3b199ddf955f968a274daa1d2a4bdf68b932d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mollie/mollie-api-php/zipball/8d3b199ddf955f968a274daa1d2a4bdf68b932d1", + "reference": "8d3b199ddf955f968a274daa1d2a4bdf68b932d1", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.1", + "ext-curl": "*", + "ext-json": "*", + "ext-openssl": "*", + "guzzlehttp/guzzle": "^6.3", + "php": ">=5.6" + }, + "require-dev": { + "eloquent/liberator": "^2.0", + "phpunit/phpunit": "^5.7|^6.5|^7.1" + }, + "suggest": { + "mollie/oauth2-mollie-php": "Use OAuth to authenticate with the Mollie API. This is needed for some endpoints. Visit https://docs.mollie.com/ for more information." + }, + "type": "library", + "autoload": { + "psr-4": { + "Mollie\\Api\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Mollie B.V.", + "email": "info@mollie.com" + } + ], + "description": "Mollie API client library for PHP. Mollie is a European Payment Service provider and offers international payment methods such as Mastercard, VISA, American Express and PayPal, and local payment methods such as iDEAL, Bancontact, SOFORT Banking, SEPA direct debit, Belfius Direct Net, KBC Payment Button and various gift cards such as Podiumcadeaukaart and fashioncheque.", + "homepage": "https://www.mollie.com/en/developers", + "keywords": [ + "CBC", + "api", + "bancontact", + "banktransfer", + "belfius", + "belfius direct net", + "bitcoin", + "charges", + "creditcard", + "direct debit", + "fashioncheque", + "gateway", + "gift cards", + "ideal", + "inghomepay", + "intersolve", + "kbc", + "mistercash", + "mollie", + "payment", + "payments", + "paypal", + "paysafecard", + "podiumcadeaukaart", + "recurring", + "refunds", + "sepa", + "service", + "sofort", + "sofortbanking", + "subscriptions" + ], + "time": "2018-08-29T09:05:31+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/src/mollie/callback.php b/src/mollie/callback.php index 8e72402..c97a902 100644 --- a/src/mollie/callback.php +++ b/src/mollie/callback.php @@ -1,21 +1,21 @@ load_function('gateway'); $whmcs->load_function('invoice'); /** * - * Check parameters + * Check parameters * */ -if(isset($_POST['id'])) { +if (isset($_POST['id'])) { // Get transaction $transactionQuery = select_query('gateway_mollie', '', array('paymentid' => $_POST['id']), null, null, 1); @@ -31,9 +31,6 @@ if(isset($_POST['id'])) { $method = $transaction['method']; - if ($method === Mollie_API_Object_Method::MISTERCASH) { - $method = 'bancontact'; - } $_GATEWAY = getGatewayVariables('mollie' . $method . '_devapp'); @@ -50,12 +47,12 @@ if(isset($_POST['id'])) { $transactionCurrency = mysql_fetch_assoc($transactionCurrency); // Check payment - $mollie = new Mollie_API_Client; + $mollie = new \Mollie\Api\MollieApiClient(); $mollie->setApiKey($_GATEWAY['key']); - $payment = $mollie->payments->get($_POST['id']); + $payment = $mollie->payments->get($_POST['id']); - if($payment->isPaid()) { + if ($payment->isPaid()) { // Add conversion, when there is need to. WHMCS only supports currencies per user. WHY?! if ($transactionCurrency['id'] != $userCurrency['id']) { @@ -89,7 +86,7 @@ if(isset($_POST['id'])) { header('HTTP/1.1 500 Payment not open or paid'); exit(); } -}else{ +} else { logTransaction('mollieunknown', $_POST, 'Callback - Failure 0 (Arg mismatch)'); header('HTTP/1.1 500 Arg mismatch'); diff --git a/src/mollie/lang/dutch.php b/src/mollie/lang/dutch.php index f04d559..1dcb89a 100644 --- a/src/mollie/lang/dutch.php +++ b/src/mollie/lang/dutch.php @@ -13,7 +13,12 @@ $_GATEWAYLANG['payWithBelfius'] = 'Betaal met Belfius'; $_GATEWAYLANG['payWithBitcoin'] = 'Betaal met Bitcoin'; $_GATEWAYLANG['payWithCreditcard'] = 'Betaal met Creditcard'; $_GATEWAYLANG['payWithIdeal'] = 'Betaal met iDeal'; -$_GATEWAYLANG['payWithMistercash'] = 'Betaal met Bancontact'; +$_GATEWAYLANG['payWithBancontact'] = 'Betaal met Bancontact'; $_GATEWAYLANG['payWithPaypal'] = 'Betaal met PayPal'; $_GATEWAYLANG['payWithPaysafecard'] = 'Betaal met Paysafecard'; $_GATEWAYLANG['payWithSofort'] = 'Betaal met Sofort Banking'; +$_GATEWAYLANG['payWithEps'] = 'Betaal met EPS'; +$_GATEWAYLANG['payWithGiftcard'] = 'Betaal met een cadeaukaart'; +$_GATEWAYLANG['payWithGiropay'] = 'Betaal met Giropay'; +$_GATEWAYLANG['payWithInghomepay'] = 'Betaal met ING Home\'Pay'; +$_GATEWAYLANG['payWithKbc'] = 'Betaal met KBC/CBC-betaalknop'; diff --git a/src/mollie/lang/english.php b/src/mollie/lang/english.php index f401895..0340550 100644 --- a/src/mollie/lang/english.php +++ b/src/mollie/lang/english.php @@ -14,7 +14,12 @@ $_GATEWAYLANG['payWithBelfius'] = 'Pay with Belfius'; $_GATEWAYLANG['payWithBitcoin'] = 'Pay with Bitcoin'; $_GATEWAYLANG['payWithCreditcard'] = 'Pay with Credit Card'; $_GATEWAYLANG['payWithIdeal'] = 'Pay with iDeal'; -$_GATEWAYLANG['payWithMistercash'] = 'Pay with Bancontact'; +$_GATEWAYLANG['payWithBancontact'] = 'Pay with Bancontact'; $_GATEWAYLANG['payWithPaypal'] = 'Pay with PayPal'; $_GATEWAYLANG['payWithPaysafecard'] = 'Pay with Paysafecard'; $_GATEWAYLANG['payWithSofort'] = 'Pay with Sofort Banking'; +$_GATEWAYLANG['payWithEps'] = 'Pay with EPS'; +$_GATEWAYLANG['payWithGiftcard'] = 'Pay with a gift card'; +$_GATEWAYLANG['payWithGiropay'] = 'Pay with Giropay'; +$_GATEWAYLANG['payWithInghomepay'] = 'Pay with ING Home\'Pay'; +$_GATEWAYLANG['payWithKbc'] = 'Pay with KBC/CBC Payment Button'; diff --git a/src/mollie/mollie.php b/src/mollie/mollie.php index 540ae11..715a9e4 100644 --- a/src/mollie/mollie.php +++ b/src/mollie/mollie.php @@ -1,28 +1,30 @@ array( 'FriendlyName' => 'API key', 'Type' => 'text', 'Size' => '35', - 'Description' => 'Your channel\'s API key.' + 'Description' => 'Your channels API key.' ) ); } -function mollie_link($params, $method = Mollie_API_Object_Method::IDEAL) { +function mollie_link($params, $method = Mollie_API_Object_Method::IDEAL) +{ global $whmcs; /** * - * Setting requirements and includes + * Setting requirements and includes * */ - if(substr($params['returnurl'], 0, 1) == '/') - $params['returnurl'] = $params['systemurl'].$params['returnurl']; + if (substr($params['returnurl'], 0, 1) == '/') + $params['returnurl'] = $params['systemurl'] . $params['returnurl']; if (empty($params['language'])) $params['language'] = ((isset($_SESSION['language'])) ? $_SESSION['language'] : $whmcs->get_config('Language')); @@ -42,12 +44,12 @@ function mollie_link($params, $method = Mollie_API_Object_Method::IDEAL) { full_query('CREATE TABLE IF NOT EXISTS `gateway_mollie` (`id` int(11) NOT NULL AUTO_INCREMENT, `paymentid` varchar(15), `amount` double NOT NULL, `currencyid` int(11) NOT NULL, `ip` varchar(50) NOT NULL, `userid` int(11) NOT NULL, `invoiceid` int(11) NOT NULL, `status` ENUM(\'open\',\'paid\',\'closed\') NOT NULL DEFAULT \'open\', `method` VARCHAR(25) NOT NULL, `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `paymentid` (`paymentid`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;'); } - $mollie = new Mollie_API_Client; + $mollie = new \Mollie\Api\MollieApiClient(); $mollie->setApiKey($params['key']); /** * - * Check if good state to open transaction. + * Check if good state to open transaction. * */ if (isset($_GET['check_payment']) && ctype_digit($_GET['check_payment'])) { @@ -84,7 +86,10 @@ function mollie_link($params, $method = Mollie_API_Object_Method::IDEAL) { )); $payment = $mollie->payments->create(array( - 'amount' => $params['amount'], + 'amount' => [ + 'value' => $params['amount'], + 'currency' => $params['currency'], + ], 'method' => $method, 'description' => $params['description'], 'redirectUrl' => $params['returnurl'] . '&check_payment=' . $transactionId, @@ -97,19 +102,19 @@ function mollie_link($params, $method = Mollie_API_Object_Method::IDEAL) { update_query('gateway_mollie', array('paymentid' => $payment->id), array('id' => $transactionId)); - header('Location: ' . $payment->getPaymentUrl()); + header('Location: ' . $payment->getCheckoutUrl()); exit(); } else { $return = '