23 Commits
2.5 ... master

Author SHA1 Message Date
12f9d4fa18 Update src/mollie/callback.php 2025-06-21 16:30:35 +02:00
60b8d2b62c Update src/mollie/mollie.php 2025-06-21 16:26:28 +02:00
Wouter van Os
bf67c41604 feat: implement iDeal 2.0 support
Untested & draft, but this change should implement iDeal 2.0. The only thing I've heard is that we should remove issuer selection.
2024-12-17 11:41:34 +01:00
Wouter van Os
4e3fc4f1cb feat: extend bank transfers to 100 days validity 2021-10-26 14:30:59 +02:00
Wouter van Os
f3378c5181 Merge pull request #80 from adrijanb/remove_ing
Remove ING Home Pay
2021-02-16 09:26:13 +01:00
Adrijan Bajrami
b70fec170f Remove ING Home Pay 2021-02-15 01:08:18 +01:00
Wouter van Os
f107379191 Update dependencies to latest versions 2020-09-30 10:42:16 +02:00
Sven.v.r
e5b27108f7 Update + Fix Gruzzle (Working for WHMCS 8.0.0 Beta3) (#66)
Update (Working for WHMCS 8.0.0 Beta3).
Tested With PHP 7.3 & 7.4
2020-08-19 13:59:17 +02:00
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
9 changed files with 297 additions and 188 deletions

View File

@@ -1,36 +1,21 @@
# WHMCS Mollie Gateway
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.
# 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)
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
+ 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.
+ ``` git clone --recursive https://github.com/0100Dev/WHMCS-Mollie.git /tmp/whmcs && sudo cp /tmp/whmcs/src ./modules/gateways/```
### Installation
+ Log in to your (s)FTP.
+ 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)`!).
+ Upload all the files from the `src` folder to the `/modules/gateways` folder in your WHMCS installation.
### Installatie via 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)`!).
+ Upload alles uit de `src` folder uit de hierboven gedownloaden TAR in de `/modules/gateways` folder van uw WHMCS installatie.
### Payment Methodes
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.
### Betaalmethodes
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.
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.
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
#### Naar V2.0 of hoger
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.
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.
### Support
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.
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)

204
composer.lock generated
View File

@@ -8,27 +8,27 @@
"packages": [
{
"name": "composer/ca-bundle",
"version": "1.1.2",
"version": "1.2.8",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
"reference": "46afded9720f40b9dc63542af4e3e43a1177acb0"
"reference": "8a7ecad675253e4654ea05505233285377405215"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/46afded9720f40b9dc63542af4e3e43a1177acb0",
"reference": "46afded9720f40b9dc63542af4e3e43a1177acb0",
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/8a7ecad675253e4654ea05505233285377405215",
"reference": "8a7ecad675253e4654ea05505233285377405215",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"ext-pcre": "*",
"php": "^5.3.2 || ^7.0"
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5",
"phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8",
"psr/log": "^1.0",
"symfony/process": "^2.5 || ^3.0 || ^4.0"
"symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0"
},
"type": "library",
"extra": {
@@ -60,48 +60,56 @@
"ssl",
"tls"
],
"time": "2018-08-08T08:57:40+00:00"
"time": "2020-08-23T12:54:47+00:00"
},
{
"name": "guzzlehttp/guzzle",
"version": "6.3.3",
"version": "7.1.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba"
"reference": "7edeaa528fbb57123028bd5a76b9ce9540194e26"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba",
"reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/7edeaa528fbb57123028bd5a76b9ce9540194e26",
"reference": "7edeaa528fbb57123028bd5a76b9ce9540194e26",
"shasum": ""
},
"require": {
"ext-json": "*",
"guzzlehttp/promises": "^1.0",
"guzzlehttp/psr7": "^1.4",
"php": ">=5.5"
"guzzlehttp/psr7": "^1.6.1",
"php": "^7.2.5",
"psr/http-client": "^1.0"
},
"provide": {
"psr/http-client-implementation": "1.0"
},
"require-dev": {
"ext-curl": "*",
"phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
"psr/log": "^1.0"
"php-http/client-integration-tests": "dev-phpunit8",
"phpunit/phpunit": "^8.5.5",
"psr/log": "^1.1"
},
"suggest": {
"ext-curl": "Required for CURL handler support",
"ext-intl": "Required for Internationalized Domain Name (IDN) support",
"psr/log": "Required for using the Log middleware"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.3-dev"
"dev-master": "7.1-dev"
}
},
"autoload": {
"files": [
"src/functions_include.php"
],
"psr-4": {
"GuzzleHttp\\": "src/"
}
},
"files": [
"src/functions_include.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -112,6 +120,11 @@
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
{
"name": "Márk Sági-Kazár",
"email": "mark.sagikazar@gmail.com",
"homepage": "https://sagikazarmark.hu"
}
],
"description": "Guzzle is a PHP HTTP client library",
@@ -122,30 +135,32 @@
"framework",
"http",
"http client",
"psr-18",
"psr-7",
"rest",
"web service"
],
"time": "2018-04-22T15:46:56+00:00"
"time": "2020-09-22T09:10:04+00:00"
},
{
"name": "guzzlehttp/promises",
"version": "v1.3.1",
"version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
"reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
"reference": "60d379c243457e073cff02bc323a2a86cb355631"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
"reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
"url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631",
"reference": "60d379c243457e073cff02bc323a2a86cb355631",
"shasum": ""
},
"require": {
"php": ">=5.5.0"
"php": ">=5.5"
},
"require-dev": {
"phpunit/phpunit": "^4.0"
"symfony/phpunit-bridge": "^4.4 || ^5.1"
},
"type": "library",
"extra": {
@@ -176,36 +191,41 @@
"keywords": [
"promise"
],
"time": "2016-12-20T10:07:11+00:00"
"time": "2020-09-30T07:37:28+00:00"
},
{
"name": "guzzlehttp/psr7",
"version": "1.4.2",
"version": "1.7.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
"reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
"reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
"reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
"url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
"reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
"shasum": ""
},
"require": {
"php": ">=5.4.0",
"psr/http-message": "~1.0"
"psr/http-message": "~1.0",
"ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
},
"provide": {
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"phpunit/phpunit": "~4.0"
"ext-zlib": "*",
"phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.4-dev"
"dev-master": "1.7-dev"
}
},
"autoload": {
@@ -235,26 +255,27 @@
"keywords": [
"http",
"message",
"psr-7",
"request",
"response",
"stream",
"uri",
"url"
],
"time": "2017-03-20T17:10:46+00:00"
"time": "2020-09-30T07:37:11+00:00"
},
{
"name": "mollie/mollie-api-php",
"version": "v2.0.13",
"version": "v2.23.0",
"source": {
"type": "git",
"url": "https://github.com/mollie/mollie-api-php.git",
"reference": "8d3b199ddf955f968a274daa1d2a4bdf68b932d1"
"reference": "bc44a7417a734b92a770213b9f0dc6642e7b5a3c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mollie/mollie-api-php/zipball/8d3b199ddf955f968a274daa1d2a4bdf68b932d1",
"reference": "8d3b199ddf955f968a274daa1d2a4bdf68b932d1",
"url": "https://api.github.com/repos/mollie/mollie-api-php/zipball/bc44a7417a734b92a770213b9f0dc6642e7b5a3c",
"reference": "bc44a7417a734b92a770213b9f0dc6642e7b5a3c",
"shasum": ""
},
"require": {
@@ -262,12 +283,12 @@
"ext-curl": "*",
"ext-json": "*",
"ext-openssl": "*",
"guzzlehttp/guzzle": "^6.3",
"guzzlehttp/guzzle": "^6.3 || ^7.0",
"php": ">=5.6"
},
"require-dev": {
"eloquent/liberator": "^2.0",
"phpunit/phpunit": "^5.7|^6.5|^7.1"
"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."
@@ -291,13 +312,14 @@
"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": [
"Apple Pay",
"CBC",
"Przelewy24",
"api",
"bancontact",
"banktransfer",
"belfius",
"belfius direct net",
"bitcoin",
"charges",
"creditcard",
"direct debit",
@@ -308,8 +330,10 @@
"inghomepay",
"intersolve",
"kbc",
"klarna",
"mistercash",
"mollie",
"paylater",
"payment",
"payments",
"paypal",
@@ -319,11 +343,61 @@
"refunds",
"sepa",
"service",
"sliceit",
"sofort",
"sofortbanking",
"subscriptions"
],
"time": "2018-08-29T09:05:31+00:00"
"time": "2020-09-17T13:56:43+00:00"
},
{
"name": "psr/http-client",
"version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-client.git",
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
"reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621",
"shasum": ""
},
"require": {
"php": "^7.0 || ^8.0",
"psr/http-message": "^1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Http\\Client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for HTTP clients",
"homepage": "https://github.com/php-fig/http-client",
"keywords": [
"http",
"http-client",
"psr",
"psr-18"
],
"time": "2020-06-29T06:28:15+00:00"
},
{
"name": "psr/http-message",
@@ -374,6 +448,46 @@
"response"
],
"time": "2016-08-06T14:39:51+00:00"
},
{
"name": "ralouphie/getallheaders",
"version": "3.0.3",
"source": {
"type": "git",
"url": "https://github.com/ralouphie/getallheaders.git",
"reference": "120b605dfeb996808c31b6477290a714d356e822"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
"reference": "120b605dfeb996808c31b6477290a714d356e822",
"shasum": ""
},
"require": {
"php": ">=5.6"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.1",
"phpunit/phpunit": "^5 || ^6.5"
},
"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": "2019-03-08T08:55:37+00:00"
}
],
"packages-dev": [],

View File

@@ -1,94 +1,92 @@
<?php
/**
*
* Setting requirements and includes
*
*/
use Illuminate\Database\Capsule\Manager as Capsule;
use Mollie\Api\MollieApiClient;
require_once __DIR__ . '/../../../init.php';
require_once __DIR__ . '/vendor/autoload.php';
$whmcs->load_function('gateway');
$whmcs->load_function('invoice');
/**
*
* Check parameters
*
*/
if (isset($_POST['id'])) {
// Get transaction
$transactionQuery = select_query('gateway_mollie', '', array('paymentid' => $_POST['id']), null, null, 1);
if (mysql_num_rows($transactionQuery) != 1) {
logTransaction('mollieunknown', $_POST, 'Callback - Failure 2 (Transaction not found)');
header('HTTP/1.1 500 Transaction not found');
exit();
if ($_SERVER['REQUEST_METHOD'] !== 'POST' || empty($_POST['id'])) {
logTransaction('mollieunknown', $_POST, 'Callback - Failure 0 (Arg mismatch)');
http_response_code(500);
exit('Arg mismatch');
}
$transaction = mysql_fetch_assoc($transactionQuery);
// Find transaction by Mollie payment ID
$transaction = Capsule::table('gateway_mollie')
->where('paymentid', $_POST['id'])
->first();
$method = $transaction['method'];
if (!$transaction) {
logTransaction('mollieunknown', $_POST, 'Callback - Failure 2 (Transaction not found)');
http_response_code(500);
exit('Transaction not found');
}
$transaction = (array) $transaction;
$method = $transaction['method'] ?: 'checkout';
// Load gateway configuration
$_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)');
header('HTTP/1.1 500 Transaction not open');
exit();
http_response_code(500);
exit('Transaction not open');
}
// Get user and transaction currencies
// Load currencies
$userCurrency = getCurrency($transaction['userid']);
$transactionCurrency = select_query('tblcurrencies', '', array('id' => $transaction['currencyid']));
$transactionCurrency = mysql_fetch_assoc($transactionCurrency);
$transactionCurrency = Capsule::table('tblcurrencies')
->where('id', $transaction['currencyid'])
->first();
// Check payment
$mollie = new \Mollie\Api\MollieApiClient();
$transactionCurrency = (array) $transactionCurrency;
// Init Mollie
$mollie = new MollieApiClient();
$mollie->setApiKey($_GATEWAY['key']);
try {
$payment = $mollie->payments->get($_POST['id']);
} catch (Exception $e) {
logTransaction($_GATEWAY['paymentmethod'], $_POST, 'Callback - Failure 4 (API Error): ' . $e->getMessage());
http_response_code(500);
exit('Mollie API error');
}
// Handle payment status
if ($payment->isPaid()) {
// Add conversion, when there is need to. WHMCS only supports currencies per user. WHY?!
// Currency conversion if needed
if ($transactionCurrency['id'] != $userCurrency['id']) {
$transaction['amount'] = convertCurrency($transaction['amount'], $transaction['currencyid'], $userCurrency['id']);
}
// Check invoice
$invoiceid = checkCbInvoiceID($transaction['invoiceid'], $_GATEWAY['paymentmethod']);
checkCbTransID($transaction['paymentid']);
// Add invoice
addInvoicePayment($invoiceid, $transaction['paymentid'], $transaction['amount'], '', $_GATEWAY['paymentmethod']);
update_query('gateway_mollie', array('status' => 'paid', 'updated' => date('Y-m-d H:i:s', time())), array('id' => $transaction['id']));
Capsule::table('gateway_mollie')
->where('id', $transaction['id'])
->update(['status' => 'paid', 'updated' => date('Y-m-d H:i:s')]);
logTransaction($_GATEWAY['paymentmethod'], array_merge($transaction, $_POST), 'Callback - Successful (Paid)');
http_response_code(200);
exit('OK');
header('HTTP/1.1 200 OK');
exit();
} else if ($payment->isOpen() == FALSE) {
update_query('gateway_mollie', array('status' => 'closed', 'updated' => date('Y-m-d H:i:s', time())), array('id' => $transaction['id']));
} elseif (!$payment->isOpen()) {
Capsule::table('gateway_mollie')
->where('id', $transaction['id'])
->update(['status' => 'closed', 'updated' => date('Y-m-d H:i:s')]);
logTransaction($_GATEWAY['paymentmethod'], array_merge($transaction, $_POST), 'Callback - Successful (Closed)');
http_response_code(200);
exit('Closed');
header('HTTP/1.1 200 OK');
exit();
} else {
logTransaction($_GATEWAY['paymentmethod'], array_merge($transaction, $_POST), 'Callback - Failure 1 (Payment not open or paid)');
header('HTTP/1.1 500 Payment not open or paid');
exit();
}
} else {
logTransaction('mollieunknown', $_POST, 'Callback - Failure 0 (Arg mismatch)');
header('HTTP/1.1 500 Arg mismatch');
exit();
http_response_code(500);
exit('Payment not open or paid');
}

View File

@@ -10,7 +10,6 @@ $_GATEWAYLANG['checkPayment'] = 'We controleren je betaling, moment geduld...';
$_GATEWAYLANG['payWithBanktransfer'] = 'Betaal met Bank overschrijving';
$_GATEWAYLANG['payWithBelfius'] = 'Betaal met Belfius';
$_GATEWAYLANG['payWithBitcoin'] = 'Betaal met Bitcoin';
$_GATEWAYLANG['payWithCreditcard'] = 'Betaal met Creditcard';
$_GATEWAYLANG['payWithIdeal'] = 'Betaal met iDeal';
$_GATEWAYLANG['payWithBancontact'] = 'Betaal met Bancontact';
@@ -22,3 +21,6 @@ $_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['selectBank'] = 'Select bank';
$_GATEWAYLANG['selectLater'] = 'Select later';
$_GATEWAYLANG['errorTransactionNotFound'] = 'Transaction is not found. Please try again.';
@@ -11,7 +10,6 @@ $_GATEWAYLANG['checkPayment'] = 'Checking your payment, please wait...';
$_GATEWAYLANG['payWithBanktransfer'] = 'Pay with Bank Transfer';
$_GATEWAYLANG['payWithBelfius'] = 'Pay with Belfius';
$_GATEWAYLANG['payWithBitcoin'] = 'Pay with Bitcoin';
$_GATEWAYLANG['payWithCreditcard'] = 'Pay with Credit Card';
$_GATEWAYLANG['payWithIdeal'] = 'Pay with iDeal';
$_GATEWAYLANG['payWithBancontact'] = 'Pay with Bancontact';
@@ -23,3 +21,6 @@ $_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

@@ -41,7 +41,7 @@ function mollie_link($params, $method = Mollie_API_Object_Method::IDEAL)
$tableCheckQuery = full_query('SHOW TABLES LIKE \'gateway_mollie\'');
if (mysql_num_rows($tableCheckQuery) != 1) {
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(40), `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\MollieApiClient();
@@ -71,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>';
}
} 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 = mysql_fetch_assoc($transactionCurrency);
@@ -93,11 +93,11 @@ function mollie_link($params, $method = Mollie_API_Object_Method::IDEAL)
'method' => $method,
'description' => $params['description'],
'redirectUrl' => $params['returnurl'] . '&check_payment=' . $transactionId,
'webhookUrl' => $params['systemurl'] . 'modules/gateways/mollie/callback.php',
'webhookUrl' => $params['systemurl'] . '/modules/gateways/mollie/callback.php',
'metadata' => array(
'invoice_id' => $params['invoiceid'],
),
'issuer' => ((isset($_POST['issuer']) && !empty($_POST['issuer'])) ? $_POST['issuer'] : NULL)
'dueDate' => (($method == \Mollie\Api\Types\PaymentMethod::BANKTRANSFER) ? date('Y-m-d', strtotime('+100 days')) : NULL),
));
update_query('gateway_mollie', array('paymentid' => $payment->id), array('id' => $transactionId));
@@ -105,21 +105,7 @@ function mollie_link($params, $method = Mollie_API_Object_Method::IDEAL)
header('Location: ' . $payment->getCheckoutUrl());
exit();
} else {
$return = '<form action="" method="POST">';
if ($method == \Mollie\Api\Types\PaymentMethod::IDEAL) {
$issuers = $mollie->issuers->all();
$return .= '<label for="issuer">' . $_GATEWAYLANG['selectBank'] . ':</label> ';
$return .= '<select name="issuer">';
foreach ($issuers as $issuer) {
if ($issuer->method == \Mollie\Api\Types\PaymentMethod::IDEAL) {
$return .= '<option value=' . htmlspecialchars($issuer->id) . '>' . htmlspecialchars($issuer->name) . '</option>';
}
}
$return .= '</select>';
}
$return = '<form action="viewinvoice.php?id=' . $params['invoiceid'] . '" method="POST">';
$return .= '<input type="submit" name="start" value="' . $_GATEWAYLANG['payWith' . ucfirst($method)] . '" /></form>';

View File

@@ -2,21 +2,21 @@
require_once __DIR__ . '/mollie/mollie.php';
function molliebitcoin_devapp_config()
function mollieapplepay_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie Bitcoin'
'Value' => 'Mollie Apple Pay'
)
));
return $config;
}
function molliebitcoin_devapp_link($params)
function mollieapplepay_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::BITCOIN);
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::APPLEPAY);
}

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,21 +2,21 @@
require_once __DIR__ . '/mollie/mollie.php';
function mollieinghomepay_devapp_config()
function mollieprzelewy24_devapp_config()
{
$config = mollie_config();
$config = array_merge($config, array(
'FriendlyName' => array(
'Type' => 'System',
'Value' => 'Mollie ING Home\'Pay'
'Value' => 'Mollie Przelewy24'
)
));
return $config;
}
function mollieinghomepay_devapp_link($params)
function mollieprzelewy24_devapp_link($params)
{
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::INGHOMEPAY);
return mollie_link($params, \Mollie\Api\Types\PaymentMethod::PRZELEWY24);
}