17 Commits
v1.1 ... 2.8

Author SHA1 Message Date
Wouter van Os
c2857294b3 Added Apply Pay 2019-05-27 16:23:55 +02:00
Wouter van Os
e356f9cfc1 Removed Bitcoin because Mollie removed the payment method 2019-05-27 16:23:27 +02:00
Wouter van Os
6d65280c6e Added Przelewy24 payment provider 2019-04-24 17:09:48 +02:00
Wouter van Os
95348ada82 Update iDeal script for new Mollie API 2018-10-02 13:27:32 +02:00
Wouter van Os
19979d9f28 Update README for composer 2018-09-12 20:47:04 +02:00
Wouter van Os
d00fe4db09 Updated README 2018-09-12 20:36:23 +02:00
Wouter van Os
27d3ae1745 Reformatted code and added support for all payment methods
This commit adds the following payment methods:
- EPS
- Giftcards
- Giropay
- ING Home'Pay
- KBC/CBC

I've also ran a reformatter to clean up the code and added composer
instead of git modules. The latter enables us to keep up-to-date
with the last Mollie library in a more modern manner.
2018-09-12 20:29:20 +02:00
Wouter van Os
7bd9cb9340 Fix for the rename between bancontact and mistercash. (#43) 2018-08-24 15:38:57 +02:00
Jesse Geerts
b16e3708e3 Update README.md (#42)
Tikfout eruit gehaald
2018-08-24 15:38:20 +02:00
Wouter van Os
4858b1f496 Update translations (#40) 2018-05-30 11:54:12 +02:00
Wouter van Os
dcfab1de41 Update README.md 2018-05-28 09:03:51 +02:00
Wouter van Os
23301c82b0 Update README.md 2018-05-28 09:01:21 +02:00
Wouter van Os
714e467110 Update README.md 2018-05-26 23:02:24 +02:00
Wouter van Os
78849639dd Update README.md 2018-05-26 23:02:03 +02:00
Wouter van Os
b879299be7 Merge pull request #35 from qarizma/master
Renamed gateways and fixed conflict
2018-05-26 22:54:59 +02:00
Qarizma
330d74e8c9 Renamed gateways and fixed conflict
This commit should fix the conflict issues.
2018-04-20 21:33:29 +02:00
Qarizma
a789cc6ec0 Merge pull request #1 from 0100Dev/master
Update from original
2018-02-21 09:20:55 +01:00
33 changed files with 834 additions and 217 deletions

1
.gitignore vendored
View File

@@ -1 +1,2 @@
.idea/ .idea/
src/mollie/vendor/

3
.gitmodules vendored
View File

@@ -1,3 +0,0 @@
[submodule "src/mollie/vendor/Mollie"]
path = src/mollie/vendor/Mollie
url = https://github.com/mollie/mollie-api-php.git

View File

@@ -1,28 +1,41 @@
# WHMCS Mollie Gateway # WHMCS Mollie Gateway
Onofficiële Mollie gateway voor WHMCS. Onofficiële Mollie gateway voor WHMCS. In deze gratis plugin zit GEEN ondersteuning voor Mollie Recurring (SEPA/Automatisch Incasso). Hiervoor hebben we een [betaalde](https://0100dev.nl/modules/whmcs#WHMCS%20Mollie%20Recurring) plugin. Deze plugins zijn niet afhankelijk van elkaar en kunnen naast elkaar opereren maar ook zonder elkaar.
Compatible met **alle** WHMCS versies. Compatible met **alle** WHMCS versies.
### Installatie via SSH ### Installatie via SSH
+ Log in op SSH (of console) en zorg dat GIT geinstalleerd is op uw webserver. + Log in op SSH (of console) en zorg dat GIT geinstalleerd is op uw webserver.
+ Ga naar de root van de WHMCS installatie (de hoofd folder) en voer het onderstaande commando uit. + Ga naar een tijdelijke folder (bijvoorbeeld `/tmp`) en voer het onderstaande commando uit.
+ ``` git clone --recursive https://github.com/0100Dev/WHMCS-Mollie.git /tmp/whmcs && sudo cp /tmp/whmcs/src ./modules/gateways/``` + ``` git clone https://github.com/0100Dev/WHMCS-Mollie.git```
+ Ga in de `WHMCS-Mollie` folder die zojuist met het vorige commando aangemaakt is.
+ Installeer Composer op de webserver of volg de instructies [hier](https://getcomposer.org/download/) en voer daarna het onderstaande commando uit.
+ ```composer install```
+ Ga naar de root van de WHMCS installatie (de hoofd folder) en dan naar `modules/gateways`.
+ Kopieer nu alles uit de `WHMCS-Mollie/src` folder van enkele stappen terug naar de huidige folder.
### Installatie via FTP ### Installatie via FTP
+ Log in op FTP. + Log in op FTP.
+ Download de `whmcs-mollie.tar.gz` van onze [releases pagina](https://github.com/0100Dev/WHMCS-Mollie/releases) (**LET OP:** **niet** `Source code (zip)` of `Source code (tar.gz)`!). + Download de `whmcs-mollie.tar.gz` van onze [releases pagina](https://github.com/0100Dev/WHMCS-Mollie/releases) (**LET OP:** **niet** `Source code (zip)` of `Source code (tar.gz)`!).
+ Upload alles uit de `src` folder uit de hierboven gedownloaden TAR in de `/modules/gateways` folder van uw WHMCS installatie. + Upload alles uit de `src` folder uit de hierboven gedownloaden TAR in de `/modules/gateways` folder van uw WHMCS installatie.
+ Opmerking: mollieideal.php van deze module moet de originele van WHMCS overschrijven. Het is tot nu toe nog niet mogelijk om het bestand een andere naam te geven dankzij WHMCS naamgevingen en interne namen.
### Betaalmethodes ### Betaalmethodes
Alle betaalmethodes van Mollie zijn ondersteund. Zet de gewenste betaalmethodes aan door de gateway in WHMCS te activeren. Alle betaalmethodes van Mollie zijn ondersteund (welke ook door hun API ondersteund word). Zet de gewenste betaalmethodes aan door de gateway in WHMCS te activeren.
Betaalmethodes moeten door de structuur van deze gateway handmatig toegevoegd worden. Het kan dus even duren voordat een betaalmethode toegevoegd word. Heeft het haast? Zie het kopje Support.
### Updates ### Updates
#### V1.0 naar V1.1 #### Naar V2.0 of hoger
In deze release is een conflict met WHMCS haar Mollie iDeal gateway opgelost. Hierdoor moet je de Mollie IDeal gateway van ons weer opnieuw activeren. Deze release is NIET compatible met V1.x. Verwijder eerst alle files vanuit je /modules/gateways folder die betrekking hebben op deze gateway. Alles dus met mollie_x.php. In WHMCS dien je ook opnieuw deze gateways in te schakelen. WHMCS zal aangeven dat de ouded gateways niet meer gevonden kunnen worden, dit klopt - verwijder deze en vervang deze met de nieuw ingeschakelde.
Let erop dat je bijvoorbeeld NIET onze mollierecurring.php moet verwijderen, als je onze betaalde Mollie Recurring gateway actief hebt.
#### Naar V2.5 of hoger
In deze release zijn de betaalmethodes KBC/CBC, ING Home'Pay, Giropay, Giftcards en EPS erbij gekomen. Verder is de gateway vernieuwd van een modernere package manager en is Mistercash van naam veranderd naar Bancontact.
U kunt de files uploaden en simpelweg overschrijven (zie instructie bij Installatie), maar zorg wel dat u de oude Bancontact/Mistercash gateway uitschakeld en de nieuwe inschakeld als Bancontact.
### Support ### Support
Support alleen in Github via haar issuetracker. Support op basis van best-effort in Github via haar issuetracker. Business support (reactietijd van max. 24 uur, normaliter <1 uur) via ons [klantenpaneel](https://my.0100dev.nl/) tegen ons uurtarief a € 45,- excl. VAT. Maak een account aan en stuur via daar een ticket in.
[Meer informatie via Mollie](https://www.mollie.nl/betaaldiensten/) [Meer informatie via Mollie](https://www.mollie.nl/betaaldiensten/)

8
composer.json Normal file
View File

@@ -0,0 +1,8 @@
{
"require": {
"mollie/mollie-api-php": "^2.0"
},
"config": {
"vendor-dir": "src/mollie/vendor"
}
}

432
composer.lock generated Normal file
View File

@@ -0,0 +1,432 @@
{
"_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.4",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
"reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/558f321c52faeb4828c03e7dc0cfe39a09e09a2d",
"reference": "558f321c52faeb4828c03e7dc0cfe39a09e09a2d",
"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": "2019-01-28T09:30:10+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.5.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "9f83dded91781a01c63574e387eaa769be769115"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/9f83dded91781a01c63574e387eaa769be769115",
"reference": "9f83dded91781a01c63574e387eaa769be769115",
"shasum": ""
},
"require": {
"php": ">=5.4.0",
"psr/http-message": "~1.0",
"ralouphie/getallheaders": "^2.0.5"
},
"provide": {
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.5-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",
"psr-7",
"request",
"response",
"stream",
"uri",
"url"
],
"time": "2018-12-04T20:46:45+00:00"
},
{
"name": "mollie/mollie-api-php",
"version": "v2.10.0",
"source": {
"type": "git",
"url": "https://github.com/mollie/mollie-api-php.git",
"reference": "151bdb85c325f6768452a3d8461930589be85729"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mollie/mollie-api-php/zipball/151bdb85c325f6768452a3d8461930589be85729",
"reference": "151bdb85c325f6768452a3d8461930589be85729",
"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",
"Przelewy24",
"api",
"bancontact",
"banktransfer",
"belfius",
"belfius direct net",
"charges",
"creditcard",
"direct debit",
"fashioncheque",
"gateway",
"gift cards",
"ideal",
"inghomepay",
"intersolve",
"kbc",
"klarna",
"mistercash",
"mollie",
"paylater",
"payment",
"payments",
"paypal",
"paysafecard",
"podiumcadeaukaart",
"recurring",
"refunds",
"sepa",
"service",
"sliceit",
"sofort",
"sofortbanking",
"subscriptions"
],
"time": "2019-05-20T09:07:29+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"
},
{
"name": "ralouphie/getallheaders",
"version": "2.0.5",
"source": {
"type": "git",
"url": "https://github.com/ralouphie/getallheaders.git",
"reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
"reference": "5601c8a83fbba7ef674a7369456d12f1e0d0eafa",
"shasum": ""
},
"require": {
"php": ">=5.3"
},
"require-dev": {
"phpunit/phpunit": "~3.7.0",
"satooshi/php-coveralls": ">=1.0"
},
"type": "library",
"autoload": {
"files": [
"src/getallheaders.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ralph Khattar",
"email": "ralph.khattar@gmail.com"
}
],
"description": "A polyfill for getallheaders.",
"time": "2016-02-11T07:05:27+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
}

View File

@@ -1,21 +1,21 @@
<?php <?php
/** /**
* *
* Setting requirements and includes * Setting requirements and includes
* *
*/ */
require_once __DIR__ . '/../../../init.php'; require_once __DIR__ . '/../../../init.php';
require_once __DIR__ . '/vendor/Mollie/src/Mollie/API/Autoloader.php'; require_once __DIR__ . '/vendor/autoload.php';
$whmcs->load_function('gateway'); $whmcs->load_function('gateway');
$whmcs->load_function('invoice'); $whmcs->load_function('invoice');
/** /**
* *
* Check parameters * Check parameters
* *
*/ */
if(isset($_POST['id'])) { if (isset($_POST['id'])) {
// Get transaction // Get transaction
$transactionQuery = select_query('gateway_mollie', '', array('paymentid' => $_POST['id']), null, null, 1); $transactionQuery = select_query('gateway_mollie', '', array('paymentid' => $_POST['id']), null, null, 1);
@@ -29,7 +29,10 @@ if(isset($_POST['id'])) {
$transaction = mysql_fetch_assoc($transactionQuery); $transaction = mysql_fetch_assoc($transactionQuery);
$_GATEWAY = getGatewayVariables('mollie' . $transaction['method']); $method = $transaction['method'];
$_GATEWAY = getGatewayVariables('mollie' . $method . '_devapp');
if ($transaction['status'] != 'open') { if ($transaction['status'] != 'open') {
logTransaction($_GATEWAY['paymentmethod'], array_merge($transaction, $_POST), 'Callback - Failure 3 (Transaction not open)'); logTransaction($_GATEWAY['paymentmethod'], array_merge($transaction, $_POST), 'Callback - Failure 3 (Transaction not open)');
@@ -44,12 +47,12 @@ if(isset($_POST['id'])) {
$transactionCurrency = mysql_fetch_assoc($transactionCurrency); $transactionCurrency = mysql_fetch_assoc($transactionCurrency);
// Check payment // Check payment
$mollie = new Mollie_API_Client; $mollie = new \Mollie\Api\MollieApiClient();
$mollie->setApiKey($_GATEWAY['key']); $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?! // Add conversion, when there is need to. WHMCS only supports currencies per user. WHY?!
if ($transactionCurrency['id'] != $userCurrency['id']) { if ($transactionCurrency['id'] != $userCurrency['id']) {
@@ -83,7 +86,7 @@ if(isset($_POST['id'])) {
header('HTTP/1.1 500 Payment not open or paid'); header('HTTP/1.1 500 Payment not open or paid');
exit(); exit();
} }
}else{ } else {
logTransaction('mollieunknown', $_POST, 'Callback - Failure 0 (Arg mismatch)'); logTransaction('mollieunknown', $_POST, 'Callback - Failure 0 (Arg mismatch)');
header('HTTP/1.1 500 Arg mismatch'); header('HTTP/1.1 500 Arg mismatch');

View File

@@ -10,10 +10,16 @@ $_GATEWAYLANG['checkPayment'] = 'We controleren je betaling, moment geduld...';
$_GATEWAYLANG['payWithBanktransfer'] = 'Betaal met Bank overschrijving'; $_GATEWAYLANG['payWithBanktransfer'] = 'Betaal met Bank overschrijving';
$_GATEWAYLANG['payWithBelfius'] = 'Betaal met Belfius'; $_GATEWAYLANG['payWithBelfius'] = 'Betaal met Belfius';
$_GATEWAYLANG['payWithBitcoin'] = 'Betaal met Bitcoin'; $_GATEWAYLANG['payWithCreditcard'] = 'Betaal met Creditcard';
$_GATEWAYLANG['payWithDirectdebit'] = 'Betaal met Automatisch Incasso';
$_GATEWAYLANG['payWithIdeal'] = 'Betaal met iDeal'; $_GATEWAYLANG['payWithIdeal'] = 'Betaal met iDeal';
$_GATEWAYLANG['payWithMistercash'] = 'Betaal met Bancontact'; $_GATEWAYLANG['payWithBancontact'] = 'Betaal met Bancontact';
$_GATEWAYLANG['payWithPaypal'] = 'Betaal met PayPal'; $_GATEWAYLANG['payWithPaypal'] = 'Betaal met PayPal';
$_GATEWAYLANG['payWithPaysafecard'] = 'Betaal met Paysafecard'; $_GATEWAYLANG['payWithPaysafecard'] = 'Betaal met Paysafecard';
$_GATEWAYLANG['payWithSofort'] = 'Betaal met Sofort Banking'; $_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';
$_GATEWAYLANG['payWithPrzelewy24'] = 'Betaal met Przelewy24';
$_GATEWAYLANG['payWithApplepay'] = 'Betaal met Apple Pay';

View File

@@ -3,7 +3,6 @@
$_GATEWAYLANG = array(); $_GATEWAYLANG = array();
$_GATEWAYLANG['selectBank'] = 'Select bank'; $_GATEWAYLANG['selectBank'] = 'Select bank';
$_GATEWAYLANG['selectLater'] = 'Select later';
$_GATEWAYLANG['errorTransactionNotFound'] = 'Transaction is not found. Please try again.'; $_GATEWAYLANG['errorTransactionNotFound'] = 'Transaction is not found. Please try again.';
@@ -11,10 +10,16 @@ $_GATEWAYLANG['checkPayment'] = 'Checking your payment, please wait...';
$_GATEWAYLANG['payWithBanktransfer'] = 'Pay with Bank Transfer'; $_GATEWAYLANG['payWithBanktransfer'] = 'Pay with Bank Transfer';
$_GATEWAYLANG['payWithBelfius'] = 'Pay with Belfius'; $_GATEWAYLANG['payWithBelfius'] = 'Pay with Belfius';
$_GATEWAYLANG['payWithBitcoin'] = 'Pay with Bitcoin'; $_GATEWAYLANG['payWithCreditcard'] = 'Pay with Credit Card';
$_GATEWAYLANG['payWithDirectdebit'] = 'Pay with Direct Debit';
$_GATEWAYLANG['payWithIdeal'] = 'Pay with iDeal'; $_GATEWAYLANG['payWithIdeal'] = 'Pay with iDeal';
$_GATEWAYLANG['payWithMistercash'] = 'Pay with Bancontact'; $_GATEWAYLANG['payWithBancontact'] = 'Pay with Bancontact';
$_GATEWAYLANG['payWithPaypal'] = 'Pay with PayPal'; $_GATEWAYLANG['payWithPaypal'] = 'Pay with PayPal';
$_GATEWAYLANG['payWithPaysafecard'] = 'Pay with Paysafecard'; $_GATEWAYLANG['payWithPaysafecard'] = 'Pay with Paysafecard';
$_GATEWAYLANG['payWithSofort'] = 'Pay with Sofort Banking'; $_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';
$_GATEWAYLANG['payWithPrzelewy24'] = 'Pay with Przelewy24';
$_GATEWAYLANG['payWithApplepay'] = 'Pay with Apple Pay';

View File

@@ -1,28 +1,30 @@
<?php <?php
require_once __DIR__ . '/vendor/Mollie/src/Mollie/API/Autoloader.php'; require_once __DIR__ . '/vendor/autoload.php';
function mollie_config() { function mollie_config()
{
return array( return array(
'key' => array( 'key' => array(
'FriendlyName' => 'API key', 'FriendlyName' => 'API key',
'Type' => 'text', 'Type' => 'text',
'Size' => '35', '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; global $whmcs;
/** /**
* *
* Setting requirements and includes * Setting requirements and includes
* *
*/ */
if(substr($params['returnurl'], 0, 1) == '/') if (substr($params['returnurl'], 0, 1) == '/')
$params['returnurl'] = $params['systemurl'].$params['returnurl']; $params['returnurl'] = $params['systemurl'] . $params['returnurl'];
if (empty($params['language'])) if (empty($params['language']))
$params['language'] = ((isset($_SESSION['language'])) ? $_SESSION['language'] : $whmcs->get_config('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;'); 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']); $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'])) { 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( $payment = $mollie->payments->create(array(
'amount' => $params['amount'], 'amount' => [
'value' => $params['amount'],
'currency' => $params['currency'],
],
'method' => $method, 'method' => $method,
'description' => $params['description'], 'description' => $params['description'],
'redirectUrl' => $params['returnurl'] . '&check_payment=' . $transactionId, 'redirectUrl' => $params['returnurl'] . '&check_payment=' . $transactionId,
@@ -97,21 +102,19 @@ function mollie_link($params, $method = Mollie_API_Object_Method::IDEAL) {
update_query('gateway_mollie', array('paymentid' => $payment->id), array('id' => $transactionId)); update_query('gateway_mollie', array('paymentid' => $payment->id), array('id' => $transactionId));
header('Location: ' . $payment->getPaymentUrl()); header('Location: ' . $payment->getCheckoutUrl());
exit(); exit();
} else { } else {
$return = '<form action="" method="POST">'; $return = '<form action="" method="POST">';
if ($method == Mollie_API_Object_Method::IDEAL) { if ($method == \Mollie\Api\Types\PaymentMethod::IDEAL) {
$issuers = $mollie->issuers->all(); $issuers = $mollie->methods->get('ideal', ['include' => 'issuers'])->issuers;
$return .= '<label for="issuer">' . $_GATEWAYLANG['selectBank'] . ':</label> '; $return .= '<label for="issuer">' . $_GATEWAYLANG['selectBank'] . ':</label> ';
$return .= '<select name="issuer">'; $return .= '<select name="issuer">';
foreach ($issuers as $issuer) { foreach ($issuers as $issuer) {
if ($issuer->method == Mollie_API_Object_Method::IDEAL) { $return .= '<option value=' . htmlspecialchars($issuer->id) . '>' . htmlspecialchars($issuer->name) . '</option>';
$return .= '<option value=' . htmlspecialchars($issuer->id) . '>' . htmlspecialchars($issuer->name) . '</option>';
}
} }
$return .= '</select>'; $return .= '</select>';
} }

View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function mollieapplepay_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie Apple Pay'
)
));
return $config;
}
function mollieapplepay_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::APPLEPAY);
}

View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliebancontact_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie Bancontact'
)
));
return $config;
}
function molliebancontact_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::BANCONTACT);
}

View File

@@ -1,20 +0,0 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliebanktransfer_config() {
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value'=> 'Mollie Bank Transfer'
)
));
return $config;
}
function molliebanktransfer_link($params) {
return mollie_link($params, Mollie_API_Object_Method::BANKTRANSFER);
}

View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliebanktransfer_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie Bank Transfer'
)
));
return $config;
}
function molliebanktransfer_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::BANKTRANSFER);
}

View File

@@ -1,20 +0,0 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliebelfius_config() {
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value'=> 'Mollie Belfius'
)
));
return $config;
}
function molliebelfius_link($params) {
return mollie_link($params, Mollie_API_Object_Method::BELFIUS);
}

View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliebelfius_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie Belfius'
)
));
return $config;
}
function molliebelfius_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::BELFIUS);
}

View File

@@ -1,20 +0,0 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliebitcoin_config() {
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value'=> 'Mollie Bitcoin'
)
));
return $config;
}
function molliebitcoin_link($params) {
return mollie_link($params, Mollie_API_Object_Method::BITCOIN);
}

View File

@@ -1,20 +0,0 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliecreditcard_config() {
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value'=> 'Mollie Creditcard'
)
));
return $config;
}
function molliecreditcard_link($params) {
return mollie_link($params, Mollie_API_Object_Method::CREDITCARD);
}

View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliecreditcard_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie Creditcard'
)
));
return $config;
}
function molliecreditcard_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::CREDITCARD);
}

22
src/mollieeps_devapp.php Normal file
View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function mollieeps_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie EPS'
)
));
return $config;
}
function mollieeps_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::EPS);
}

View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliegiftcard_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie Giftcard'
)
));
return $config;
}
function molliegiftcard_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::GIFTCARD);
}

View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliegiropay_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie Giropay'
)
));
return $config;
}
function molliegiropay_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::GIROPAY);
}

View File

@@ -2,19 +2,21 @@
require_once __DIR__ . '/mollie/mollie.php'; require_once __DIR__ . '/mollie/mollie.php';
function mollieideal_devapp_config() { function mollieideal_devapp_config()
$config = mollie_config(); {
$config = mollie_config();
$config = array_merge($config, array( $config = array_merge($config, array(
'FriendlyName' => array( 'FriendlyName' => array(
'Type' => 'System', 'Type' => 'System',
'Value'=> 'Mollie iDeal' 'Value' => 'Mollie iDeal'
) )
)); ));
return $config; return $config;
} }
function mollieideal_devapp_link($params) { function mollieideal_devapp_link($params)
return mollie_link($params, Mollie_API_Object_Method::IDEAL); {
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::IDEAL);
} }

View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function mollieinghomepay_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie ING Home\'Pay'
)
));
return $config;
}
function mollieinghomepay_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::INGHOMEPAY);
}

22
src/molliekbc_devapp.php Normal file
View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliekbc_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie KBC/CBC Payment Button'
)
));
return $config;
}
function molliekbc_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::KBC);
}

View File

@@ -1,20 +0,0 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliemistercash_config() {
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value'=> 'Mollie Bancontact'
)
));
return $config;
}
function molliemistercash_link($params) {
return mollie_link($params, Mollie_API_Object_Method::MISTERCASH);
}

View File

@@ -1,20 +0,0 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliepaypal_config() {
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value'=> 'Mollie PayPal'
)
));
return $config;
}
function molliepaypal_link($params) {
return mollie_link($params, Mollie_API_Object_Method::PAYPAL);
}

View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliepaypal_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie PayPal'
)
));
return $config;
}
function molliepaypal_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::PAYPAL);
}

View File

@@ -1,20 +0,0 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliepaysafecard_config() {
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value'=> 'Mollie Paysafecard'
)
));
return $config;
}
function molliepaysafecard_link($params) {
return mollie_link($params, Mollie_API_Object_Method::PAYSAFECARD);
}

View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliepaysafecard_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie Paysafecard'
)
));
return $config;
}
function molliepaysafecard_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::PAYSAFECARD);
}

View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function mollieprzelewy24_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie Przelewy24'
)
));
return $config;
}
function mollieprzelewy24_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::PRZELEWY24);
}

View File

@@ -1,20 +0,0 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliesofort_config() {
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value'=> 'Mollie Sofort Banking'
)
));
return $config;
}
function molliesofort_link($params) {
return mollie_link($params, Mollie_API_Object_Method::SOFORT);
}

View File

@@ -0,0 +1,22 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliesofort_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie Sofort Banking'
)
));
return $config;
}
function molliesofort_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::SOFORT);
}