19 Commits

Author SHA1 Message Date
Wouter van Os
88446ee9a3 Add fallback for checkout 2020-05-25 17:50:16 +02:00
Wouter van Os
8f8aee016d Added some fancy badges. 2020-05-25 16:52:35 +02:00
Wouter van Os
f01ce080a4 Linked to WHMCS versioning table 2020-05-25 15:50:08 +02:00
Wouter van Os
ed2cb8da15 Renamed file to download in README 2020-05-25 15:47:37 +02:00
Wouter van Os
3b5df871b8 Updated plugin to gateway 2020-05-25 15:43:00 +02:00
Wouter van Os
4c31da5ba3 Added support for the Mollie Payments checkout page 2020-05-25 15:42:05 +02:00
Wouter van Os
baf13db08b Rewritten to English 2020-05-25 15:39:52 +02:00
Wouter van Os
16f333c39c Rename module to WHMCS Mollie Payments
This to better separate the 2 different Mollie services: Payments and Recurring.
2020-04-01 11:54:13 +02:00
Wouter van Os
664b2a7cfb Fix redirect for addfunds
This fixes addfunds requests somehow.
2020-02-10 17:34:18 +01:00
Thomas
fd9a3e39b1 Fix #53 (#55)
Een extra / in de URL zou niet uit moeten maken, bij mijn eigen site werkt dat verder. Bij bijv. Google ook: https://www.google.nl////search?q=mollie+whmcs
2019-06-24 20:42:48 +02:00
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
27 changed files with 790 additions and 166 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,29 +1,21 @@
# WHMCS Mollie Gateway # WHMCS Mollie Payments gateway ![GitHub All Releases](https://img.shields.io/github/downloads/0100Dev/WHMCS-Mollie-Payments/total) ![GitHub release (latest by date)](https://img.shields.io/github/v/release/0100Dev/WHMCS-Mollie-Payments)
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. Unofficial Mollie Payments gateway for WHMCS. This free gateway does NOT support Mollie Recurring, only Molie Payments. For Mollie Recurring we have a [paid](https://0100dev.nl/modules/whmcs#WHMCS%20Mollie%20Recurring) gateway. These gateways are not dependent on each other and can operate side by side, but also without each other.
Compatible met **alle** WHMCS versies. Compatible with **all** WHMCS versions that are [supported by WHMCS](https://docs.whmcs.com/Long_Term_Support#WHMCS_Version_.26_LTS_Schedule).
### Installatie via SSH ### Installation
+ Log in op SSH (of console) en zorg dat GIT geinstalleerd is op uw webserver. + Log in to your (s)FTP.
+ Ga naar de root van de WHMCS installatie (de hoofd folder) en voer het onderstaande commando uit. + Download the `WHMCS-Mollie-Payments.zip` from the [releases page](https://github.com/0100Dev/WHMCS-Mollie/releases) (**PLEASE NOTE:** **not** `Source code (zip)` or `Source code (tar.gz)`!).
+ ``` git clone --recursive https://github.com/0100Dev/WHMCS-Mollie.git /tmp/whmcs && sudo cp /tmp/whmcs/src ./modules/gateways/``` + Upload all the files from the `src` folder to the `/modules/gateways` folder in your WHMCS installation.
### Installatie via FTP ### Payment Methodes
+ Log in op FTP. All payment methods from Mollie are supported (which is also supported by their API). Enable the desired payment methods by activating the gateway in WHMCS.
+ 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.
### Betaalmethodes Support for new payment methods must be added manually, due to the structure of this gateway. It can therefore take a while before a new payment method is supported. Is it urgent? Contact our paid support or add support for it yourself and contribute it back using a pull request.
Alle betaalmethodes van Mollie zijn ondersteund. Zet de gewenste betaalmethodes aan door de gateway in WHMCS te activeren.
### Updates You can use `Mollie Checkout` to use the Mollie Payments checkout pages. In this case it'll use the Mollie Payments checkout screen and show all enabled payment methodes in your Mollie account.
#### V1.0 naar V2.0
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.
### Support ### Support
Support op basis van best-effort in Github via haar issuetracker. Bbusiness 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. Support is best-effort through the Github issue tracker. Business support (responsetime within 24 hours, normally less then 1 hour) through our [website](https://0100dev.nl/) against our hourly rate at75,- excl. VAT. Please create an account at our website before contacting us.
[Meer informatie via Mollie](https://www.mollie.nl/betaaldiensten/) [More information through Mollie about Mollie Payments](https://www.mollie.com/en/payments)

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

@@ -5,7 +5,7 @@
* *
*/ */
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');
@@ -29,7 +29,13 @@ if(isset($_POST['id'])) {
$transaction = mysql_fetch_assoc($transactionQuery); $transaction = mysql_fetch_assoc($transactionQuery);
$_GATEWAY = getGatewayVariables('mollie' . $transaction['method'] . '_devapp'); $method = $transaction['method'];
if (empty($method)) {
$method = 'checkout';
}
$_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,7 +50,7 @@ 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']);

View File

@@ -10,10 +10,17 @@ $_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['payWithCreditcard'] = 'Betaal met Creditcard';
$_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';
$_GATEWAYLANG['payWith'] = 'Betaal met Mollie';

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,17 @@ $_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['payWithCreditcard'] = 'Pay with Credit Card';
$_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';
$_GATEWAYLANG['payWith'] = 'Pay with Mollie';

View File

@@ -1,19 +1,21 @@
<?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;
/** /**
@@ -42,7 +44,7 @@ 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']);
/** /**
@@ -69,7 +71,7 @@ function mollie_link($params, $method = Mollie_API_Object_Method::IDEAL) {
return '<br/><img src="' . $params['systemurl'] . 'modules/gateways/mollie/ajax_loader.gif" /><br/>' . $_GATEWAYLANG['checkPayment'] . ' <script> window.onload = function(){ setTimeout("location.reload(true);", 2000); } </script>'; return '<br/><img src="' . $params['systemurl'] . 'modules/gateways/mollie/ajax_loader.gif" /><br/>' . $_GATEWAYLANG['checkPayment'] . ' <script> window.onload = function(){ setTimeout("location.reload(true);", 2000); } </script>';
} }
} else { } else {
if (isset($_POST['start']) || (isset($_GET['a']) && $_GET['a'] == 'complete') || (isset($_GET['action']) && ($_GET['action'] == 'addfunds' || $_GET['action'] == 'masspay') && isset($_POST['paymentmethod']) && $_POST['paymentmethod'] == 'mollie' . $method)) { if (isset($_POST['start']) || isset($_POST['issuer']) || (isset($_GET['a']) && $_GET['a'] == 'complete') || (isset($_GET['action']) && ($_GET['action'] == 'addfunds' || $_GET['action'] == 'masspay') && isset($_POST['paymentmethod']) && $_POST['paymentmethod'] == 'mollie' . $method)) {
$transactionCurrency = select_query('tblcurrencies', '', array('code' => $params['currency']), null, null, 1); $transactionCurrency = select_query('tblcurrencies', '', array('code' => $params['currency']), null, null, 1);
$transactionCurrency = mysql_fetch_assoc($transactionCurrency); $transactionCurrency = mysql_fetch_assoc($transactionCurrency);
@@ -84,11 +86,14 @@ 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,
'webhookUrl' => $params['systemurl'] . 'modules/gateways/mollie/callback.php', 'webhookUrl' => $params['systemurl'] . '/modules/gateways/mollie/callback.php',
'metadata' => array( 'metadata' => array(
'invoice_id' => $params['invoiceid'], 'invoice_id' => $params['invoiceid'],
), ),
@@ -97,22 +102,20 @@ 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="viewinvoice.php?id=' . $params['invoiceid'] . '" 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

@@ -2,7 +2,8 @@
require_once __DIR__ . '/mollie/mollie.php'; require_once __DIR__ . '/mollie/mollie.php';
function molliebancontact_devapp_config() { function molliebancontact_devapp_config()
{
$config = mollie_config(); $config = mollie_config();
$config = array_merge($config, array( $config = array_merge($config, array(
@@ -15,6 +16,7 @@ function molliebancontact_devapp_config() {
return $config; return $config;
} }
function molliebancontact_devapp_link($params) { function molliebancontact_devapp_link($params)
return mollie_link($params, Mollie_API_Object_Method::MISTERCASH); {
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::BANCONTACT);
} }

View File

@@ -2,7 +2,8 @@
require_once __DIR__ . '/mollie/mollie.php'; require_once __DIR__ . '/mollie/mollie.php';
function molliebanktransfer_devapp_config() { function molliebanktransfer_devapp_config()
{
$config = mollie_config(); $config = mollie_config();
$config = array_merge($config, array( $config = array_merge($config, array(
@@ -15,6 +16,7 @@ function molliebanktransfer_devapp_config() {
return $config; return $config;
} }
function molliebanktransfer_devapp_link($params) { function molliebanktransfer_devapp_link($params)
return mollie_link($params, Mollie_API_Object_Method::BANKTRANSFER); {
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::BANKTRANSFER);
} }

View File

@@ -2,7 +2,8 @@
require_once __DIR__ . '/mollie/mollie.php'; require_once __DIR__ . '/mollie/mollie.php';
function molliebelfius_devapp_config() { function molliebelfius_devapp_config()
{
$config = mollie_config(); $config = mollie_config();
$config = array_merge($config, array( $config = array_merge($config, array(
@@ -15,6 +16,7 @@ function molliebelfius_devapp_config() {
return $config; return $config;
} }
function molliebelfius_devapp_link($params) { function molliebelfius_devapp_link($params)
return mollie_link($params, Mollie_API_Object_Method::BELFIUS); {
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::BELFIUS);
} }

View File

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

View File

@@ -0,0 +1,23 @@
<?php
require_once __DIR__ . '/mollie/mollie.php';
function molliecheckout_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie Checkout'
)
));
return $config;
}
function molliecheckout_devapp_link($params)
{
return mollie_link($params, null);
}

View File

@@ -2,7 +2,8 @@
require_once __DIR__ . '/mollie/mollie.php'; require_once __DIR__ . '/mollie/mollie.php';
function molliecreditcard_devapp_config() { function molliecreditcard_devapp_config()
{
$config = mollie_config(); $config = mollie_config();
$config = array_merge($config, array( $config = array_merge($config, array(
@@ -15,6 +16,7 @@ function molliecreditcard_devapp_config() {
return $config; return $config;
} }
function molliecreditcard_devapp_link($params) { function molliecreditcard_devapp_link($params)
return mollie_link($params, Mollie_API_Object_Method::CREDITCARD); {
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,7 +2,8 @@
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(
@@ -15,6 +16,7 @@ function mollieideal_devapp_config() {
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

@@ -2,7 +2,8 @@
require_once __DIR__ . '/mollie/mollie.php'; require_once __DIR__ . '/mollie/mollie.php';
function molliepaypal_devapp_config() { function molliepaypal_devapp_config()
{
$config = mollie_config(); $config = mollie_config();
$config = array_merge($config, array( $config = array_merge($config, array(
@@ -15,6 +16,7 @@ function molliepaypal_devapp_config() {
return $config; return $config;
} }
function molliepaypal_devapp_link($params) { function molliepaypal_devapp_link($params)
return mollie_link($params, Mollie_API_Object_Method::PAYPAL); {
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::PAYPAL);
} }

View File

@@ -2,7 +2,8 @@
require_once __DIR__ . '/mollie/mollie.php'; require_once __DIR__ . '/mollie/mollie.php';
function molliepaysafecard_devapp_config() { function molliepaysafecard_devapp_config()
{
$config = mollie_config(); $config = mollie_config();
$config = array_merge($config, array( $config = array_merge($config, array(
@@ -15,6 +16,7 @@ function molliepaysafecard_devapp_config() {
return $config; return $config;
} }
function molliepaysafecard_devapp_link($params) { function molliepaysafecard_devapp_link($params)
return mollie_link($params, Mollie_API_Object_Method::PAYSAFECARD); {
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

@@ -2,7 +2,8 @@
require_once __DIR__ . '/mollie/mollie.php'; require_once __DIR__ . '/mollie/mollie.php';
function molliesofort_devapp_config() { function molliesofort_devapp_config()
{
$config = mollie_config(); $config = mollie_config();
$config = array_merge($config, array( $config = array_merge($config, array(
@@ -15,6 +16,7 @@ function molliesofort_devapp_config() {
return $config; return $config;
} }
function molliesofort_devapp_link($params) { function molliesofort_devapp_link($params)
return mollie_link($params, Mollie_API_Object_Method::SOFORT); {
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::SOFORT);
} }