Version Description
28-04-2019 =
Fix - Remove Bitcoin as payment gateway, no longer supported by Mollie, contact info@mollie.com for details
Fix - Add extra check for URL's with parameters and correct them is structure is incorrect
Fix - getMethodIssuers: improve caching of issuers (iDEAL, KBC/CBC)
Fix - During payment always check if a product exists, if it doesn't create a Mollie Payment instead of Mollie Order
Download this release
Release Info
Developer | davdebcom |
Plugin | Mollie Payments for WooCommerce |
Version | 5.1.7 |
Comparing to | |
See all releases |
Code changes from version 5.1.6 to 5.1.7
- includes/mollie-api-php/examples/database/.gitignore +1 -0
- includes/mollie/wc/gateway/abstract.php +112 -56
- includes/mollie/wc/gateway/bitcoin.php +0 -37
- includes/mollie/wc/gateway/giftcard.php +3 -3
- includes/mollie/wc/gateway/ideal.php +1 -1
- includes/mollie/wc/gateway/kbc.php +1 -1
- includes/mollie/wc/helper/data.php +10 -6
- includes/mollie/wc/helper/orderlines.php +4 -2
- includes/mollie/wc/plugin.php +1 -2
- mollie-payments-for-woocommerce.php +1 -1
- readme.txt +11 -5
includes/mollie-api-php/examples/database/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
*.txt
|
includes/mollie/wc/gateway/abstract.php
CHANGED
@@ -429,13 +429,6 @@ abstract class Mollie_WC_Gateway_Abstract extends WC_Payment_Gateway
|
|
429 |
$test_mode = $settings_helper->isTestModeEnabled();
|
430 |
$customer_id = $this->getUserMollieCustomerId( $order, $test_mode );
|
431 |
|
432 |
-
$payment_object = Mollie_WC_Plugin::getPaymentFactoryHelper()->getPaymentObject( 'order' );
|
433 |
-
$paymentRequestData = $payment_object->getPaymentRequestData( $order, $customer_id );
|
434 |
-
|
435 |
-
$data = array_filter( $paymentRequestData );
|
436 |
-
|
437 |
-
$data = apply_filters( 'woocommerce_' . $this->id . '_args', $data, $order );
|
438 |
-
|
439 |
//
|
440 |
// PROCESS SUBSCRIPTION SWITCH - If this is a subscription switch and customer has a valid mandate, process the order internally
|
441 |
//
|
@@ -443,6 +436,13 @@ abstract class Mollie_WC_Gateway_Abstract extends WC_Payment_Gateway
|
|
443 |
0 != $order->get_user_id() && ( wcs_order_contains_switch( $order ) )
|
444 |
) {
|
445 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
446 |
try {
|
447 |
Mollie_WC_Plugin::debug( $this->id . ': Subscription switch started, fetching mandate(s) for order #' . $order_id );
|
448 |
$mandates = Mollie_WC_Plugin::getApiHelper()->getApiClient( $test_mode )->customers->get( $customer_id )->mandates();
|
@@ -485,78 +485,130 @@ abstract class Mollie_WC_Gateway_Abstract extends WC_Payment_Gateway
|
|
485 |
}
|
486 |
|
487 |
//
|
488 |
-
//
|
|
|
|
|
|
|
489 |
//
|
490 |
|
491 |
-
|
492 |
-
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
493 |
-
Mollie_WC_Plugin::debug( $this->id . ': Create Mollie payment object for order ' . $order->id, true );
|
494 |
-
} else {
|
495 |
-
Mollie_WC_Plugin::debug( $this->id . ': Create Mollie payment object for order ' . $order->get_id(), true );
|
496 |
-
}
|
497 |
|
498 |
-
|
499 |
|
500 |
-
|
501 |
-
try {
|
502 |
-
Mollie_WC_Plugin::debug( 'Creating payment object: type Order, first try creating a Mollie Order.' );
|
503 |
|
504 |
-
|
505 |
-
// Mollie_WC_Plugin::debug( $data );
|
506 |
|
507 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
508 |
}
|
509 |
-
|
|
|
|
|
|
|
|
|
510 |
|
511 |
-
|
512 |
-
$order_payment_method = ( version_compare( WC_VERSION, '3.0', '<' ) ) ? $order->payment_method : $order->get_payment_method();
|
513 |
|
514 |
-
|
515 |
-
|
516 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
517 |
}
|
518 |
|
519 |
-
Mollie_WC_Plugin::
|
|
|
|
|
|
|
|
|
|
|
520 |
|
521 |
-
|
522 |
-
unset( $data['payment']['customerId'] );
|
523 |
|
|
|
524 |
try {
|
|
|
525 |
|
526 |
-
|
527 |
-
|
528 |
-
throw $e;
|
529 |
-
}
|
530 |
|
531 |
-
// Retry without customer id.
|
532 |
-
Mollie_WC_Plugin::debug( 'Creating payment object: type Order, second try, creating a Mollie Order without a customerId.' );
|
533 |
$payment_object = Mollie_WC_Plugin::getApiHelper()->getApiClient( $test_mode )->orders->create( $data );
|
534 |
}
|
535 |
catch ( Mollie\Api\Exceptions\ApiException $e ) {
|
536 |
|
537 |
-
|
|
|
538 |
|
539 |
-
|
540 |
-
|
|
|
|
|
541 |
|
542 |
-
|
543 |
|
544 |
-
|
|
|
545 |
|
546 |
try {
|
547 |
|
548 |
-
|
549 |
-
|
|
|
|
|
550 |
|
551 |
-
// Retry
|
552 |
-
|
|
|
553 |
}
|
554 |
catch ( Mollie\Api\Exceptions\ApiException $e ) {
|
555 |
-
|
|
|
|
|
556 |
}
|
557 |
}
|
558 |
}
|
559 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
560 |
$this->saveMollieInfo( $order, $payment_object );
|
561 |
|
562 |
do_action( Mollie_WC_Plugin::PLUGIN_ID . '_payment_created', $payment_object, $order );
|
@@ -620,7 +672,7 @@ abstract class Mollie_WC_Gateway_Abstract extends WC_Payment_Gateway
|
|
620 |
$message = sprintf( __( 'Could not create %s payment.', 'mollie-payments-for-woocommerce' ), $this->title );
|
621 |
|
622 |
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
|
623 |
-
$message .= ' ' . $e->getMessage();
|
624 |
}
|
625 |
|
626 |
Mollie_WC_Plugin::addNotice( $message, 'error' );
|
@@ -1634,11 +1686,13 @@ abstract class Mollie_WC_Gateway_Abstract extends WC_Payment_Gateway
|
|
1634 |
|
1635 |
$lang_url = $this->getSiteUrlWithLanguage();
|
1636 |
|
1637 |
-
|
1638 |
-
|
1639 |
-
|
1640 |
-
|
1641 |
-
|
|
|
|
|
1642 |
|
1643 |
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
1644 |
Mollie_WC_Plugin::debug( $this->id . ': Order ' . $order->id . ' returnUrl: ' . $return_url, true );
|
@@ -1675,12 +1729,14 @@ abstract class Mollie_WC_Gateway_Abstract extends WC_Payment_Gateway
|
|
1675 |
|
1676 |
$lang_url = $this->getSiteUrlWithLanguage();
|
1677 |
|
1678 |
-
|
1679 |
-
|
|
|
|
|
|
|
|
|
1680 |
}
|
1681 |
|
1682 |
-
$webhook_url = str_replace($site_url, $lang_url, $webhook_url);
|
1683 |
-
|
1684 |
// Some (multilanguage) plugins will add a extra slash to the url (/nl//) causing the URL to redirect and lose it's data.
|
1685 |
// Status updates via webhook will therefor not be processed. The below regex will find and remove those double slashes.
|
1686 |
$webhook_url = preg_replace('/([^:])(\/{2,})/', '$1/', $webhook_url);
|
429 |
$test_mode = $settings_helper->isTestModeEnabled();
|
430 |
$customer_id = $this->getUserMollieCustomerId( $order, $test_mode );
|
431 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
432 |
//
|
433 |
// PROCESS SUBSCRIPTION SWITCH - If this is a subscription switch and customer has a valid mandate, process the order internally
|
434 |
//
|
436 |
0 != $order->get_user_id() && ( wcs_order_contains_switch( $order ) )
|
437 |
) {
|
438 |
|
439 |
+
$payment_object = Mollie_WC_Plugin::getPaymentFactoryHelper()->getPaymentObject( 'payment' );
|
440 |
+
$paymentRequestData = $payment_object->getPaymentRequestData( $order, $customer_id );
|
441 |
+
|
442 |
+
$data = array_filter( $paymentRequestData );
|
443 |
+
|
444 |
+
$data = apply_filters( 'woocommerce_' . $this->id . '_args', $data, $order );
|
445 |
+
|
446 |
try {
|
447 |
Mollie_WC_Plugin::debug( $this->id . ': Subscription switch started, fetching mandate(s) for order #' . $order_id );
|
448 |
$mandates = Mollie_WC_Plugin::getApiHelper()->getApiClient( $test_mode )->customers->get( $customer_id )->mandates();
|
485 |
}
|
486 |
|
487 |
//
|
488 |
+
// CHECK WOOCOMMERCE PRODUCTS
|
489 |
+
// Make sure all cart items are real WooCommerce products,
|
490 |
+
// not removed products or virtual ones (by WooCommerce Events Manager etc).
|
491 |
+
// If products are virtual, use Payments API instead of Orders API
|
492 |
//
|
493 |
|
494 |
+
$mollie_payment_type = 'order';
|
|
|
|
|
|
|
|
|
|
|
495 |
|
496 |
+
foreach ( $order->get_items() as $cart_item ) {
|
497 |
|
498 |
+
if ( $cart_item['quantity'] ) {
|
|
|
|
|
499 |
|
500 |
+
do_action( Mollie_WC_Plugin::PLUGIN_ID . '_orderlines_process_items_before_getting_product_id', $cart_item );
|
|
|
501 |
|
502 |
+
if ( $cart_item['variation_id'] ) {
|
503 |
+
$product = wc_get_product( $cart_item['variation_id'] );
|
504 |
+
} else {
|
505 |
+
$product = wc_get_product( $cart_item['product_id'] );
|
506 |
+
}
|
507 |
+
|
508 |
+
if ( $product == false ) {
|
509 |
+
$mollie_payment_type = 'payment';
|
510 |
+
break;
|
511 |
+
}
|
512 |
}
|
513 |
+
}
|
514 |
+
|
515 |
+
//
|
516 |
+
// TRY PROCESSING THE PAYMENT AS MOLLIE ORDER OR MOLLIE PAYMENT
|
517 |
+
//
|
518 |
|
519 |
+
try {
|
|
|
520 |
|
521 |
+
//
|
522 |
+
// PROCESS REGULAR PAYMENT AS MOLLIE ORDER
|
523 |
+
//
|
524 |
+
|
525 |
+
if ( $mollie_payment_type == 'order' ) {
|
526 |
+
|
527 |
+
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
528 |
+
Mollie_WC_Plugin::debug( $this->id . ': Create Mollie payment object for order ' . $order->id, true );
|
529 |
+
} else {
|
530 |
+
Mollie_WC_Plugin::debug( $this->id . ': Create Mollie payment object for order ' . $order->get_id(), true );
|
531 |
}
|
532 |
|
533 |
+
$payment_object = Mollie_WC_Plugin::getPaymentFactoryHelper()->getPaymentObject( 'order' );
|
534 |
+
$paymentRequestData = $payment_object->getPaymentRequestData( $order, $customer_id );
|
535 |
+
|
536 |
+
$data = array_filter( $paymentRequestData );
|
537 |
+
|
538 |
+
$data = apply_filters( 'woocommerce_' . $this->id . '_args', $data, $order );
|
539 |
|
540 |
+
do_action( Mollie_WC_Plugin::PLUGIN_ID . '_create_payment', $data, $order );
|
|
|
541 |
|
542 |
+
// Create Mollie payment with customer id.
|
543 |
try {
|
544 |
+
Mollie_WC_Plugin::debug( 'Creating payment object: type Order, first try creating a Mollie Order.' );
|
545 |
|
546 |
+
// Only enable this for hardcore debugging!
|
547 |
+
// Mollie_WC_Plugin::debug( $data );
|
|
|
|
|
548 |
|
|
|
|
|
549 |
$payment_object = Mollie_WC_Plugin::getApiHelper()->getApiClient( $test_mode )->orders->create( $data );
|
550 |
}
|
551 |
catch ( Mollie\Api\Exceptions\ApiException $e ) {
|
552 |
|
553 |
+
// Don't try to create a Mollie Payment for Klarna payment methods
|
554 |
+
$order_payment_method = ( version_compare( WC_VERSION, '3.0', '<' ) ) ? $order->payment_method : $order->get_payment_method();
|
555 |
|
556 |
+
if ( $order_payment_method == 'mollie_wc_gateway_klarnapaylater' || $order_payment_method == 'mollie_wc_gateway_sliceit' ) {
|
557 |
+
Mollie_WC_Plugin::debug( 'Creating payment object: type Order, failed for Klarna payment, stopping process.' );
|
558 |
+
throw $e;
|
559 |
+
}
|
560 |
|
561 |
+
Mollie_WC_Plugin::debug( 'Creating payment object: type Order, first try failed: ' . $e->getMessage() );
|
562 |
|
563 |
+
// Unset missing customer ID
|
564 |
+
unset( $data['payment']['customerId'] );
|
565 |
|
566 |
try {
|
567 |
|
568 |
+
if ( $e->getField() !== 'payment.customerId' ) {
|
569 |
+
Mollie_WC_Plugin::debug( 'Creating payment object: type Order, did not fail because of incorrect customerId, so trying Payment now.' );
|
570 |
+
throw $e;
|
571 |
+
}
|
572 |
|
573 |
+
// Retry without customer id.
|
574 |
+
Mollie_WC_Plugin::debug( 'Creating payment object: type Order, second try, creating a Mollie Order without a customerId.' );
|
575 |
+
$payment_object = Mollie_WC_Plugin::getApiHelper()->getApiClient( $test_mode )->orders->create( $data );
|
576 |
}
|
577 |
catch ( Mollie\Api\Exceptions\ApiException $e ) {
|
578 |
+
|
579 |
+
// Set Mollie payment type to payment, when creating a Mollie Order has failed
|
580 |
+
$mollie_payment_type = 'payment';
|
581 |
}
|
582 |
}
|
583 |
}
|
584 |
|
585 |
+
//
|
586 |
+
// PROCESS REGULAR PAYMENT AS MOLLIE PAYMENT
|
587 |
+
//
|
588 |
+
|
589 |
+
if ( $mollie_payment_type == 'payment' ) {
|
590 |
+
Mollie_WC_Plugin::debug( 'Creating payment object: type Payment, creating a Payment.' );
|
591 |
+
|
592 |
+
$payment_object = Mollie_WC_Plugin::getPaymentFactoryHelper()->getPaymentObject( 'payment' );
|
593 |
+
$paymentRequestData = $payment_object->getPaymentRequestData( $order, $customer_id );
|
594 |
+
|
595 |
+
$data = array_filter( $paymentRequestData );
|
596 |
+
|
597 |
+
$data = apply_filters( 'woocommerce_' . $this->id . '_args', $data, $order );
|
598 |
+
|
599 |
+
try {
|
600 |
+
|
601 |
+
// Only enable this for hardcore debugging!
|
602 |
+
// Mollie_WC_Plugin::debug( $data );
|
603 |
+
|
604 |
+
// Try as simple payment
|
605 |
+
$payment_object = Mollie_WC_Plugin::getApiHelper()->getApiClient( $test_mode )->payments->create( $data );
|
606 |
+
}
|
607 |
+
catch ( Mollie\Api\Exceptions\ApiException $e ) {
|
608 |
+
throw $e;
|
609 |
+
}
|
610 |
+
}
|
611 |
+
|
612 |
$this->saveMollieInfo( $order, $payment_object );
|
613 |
|
614 |
do_action( Mollie_WC_Plugin::PLUGIN_ID . '_payment_created', $payment_object, $order );
|
672 |
$message = sprintf( __( 'Could not create %s payment.', 'mollie-payments-for-woocommerce' ), $this->title );
|
673 |
|
674 |
if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
|
675 |
+
$message .= 'hii ' . $e->getMessage();
|
676 |
}
|
677 |
|
678 |
Mollie_WC_Plugin::addNotice( $message, 'error' );
|
1686 |
|
1687 |
$lang_url = $this->getSiteUrlWithLanguage();
|
1688 |
|
1689 |
+
// Make sure there aren't any double /? in the URL (some (multilanguage) plugins will add this)
|
1690 |
+
if ( strpos( $lang_url, '/?' ) !== false ) {
|
1691 |
+
$lang_url_params = substr( $lang_url, strpos( $lang_url, "/?" ) + 2 );
|
1692 |
+
$return_url = $return_url . '&' . $lang_url_params;
|
1693 |
+
} else {
|
1694 |
+
$return_url = str_replace( $site_url, $lang_url, $return_url );
|
1695 |
+
}
|
1696 |
|
1697 |
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
1698 |
Mollie_WC_Plugin::debug( $this->id . ': Order ' . $order->id . ' returnUrl: ' . $return_url, true );
|
1729 |
|
1730 |
$lang_url = $this->getSiteUrlWithLanguage();
|
1731 |
|
1732 |
+
// Make sure there aren't any double /? in the URL (some (multilanguage) plugins will add this)
|
1733 |
+
if ( strpos( $lang_url, '/?' ) !== false ) {
|
1734 |
+
$lang_url_params = substr( $lang_url, strpos( $lang_url, "/?" ) + 2 );
|
1735 |
+
$webhook_url = $webhook_url . '&' . $lang_url_params;
|
1736 |
+
} else {
|
1737 |
+
$webhook_url = str_replace( $site_url, $lang_url, $webhook_url );
|
1738 |
}
|
1739 |
|
|
|
|
|
1740 |
// Some (multilanguage) plugins will add a extra slash to the url (/nl//) causing the URL to redirect and lose it's data.
|
1741 |
// Status updates via webhook will therefor not be processed. The below regex will find and remove those double slashes.
|
1742 |
$webhook_url = preg_replace('/([^:])(\/{2,})/', '$1/', $webhook_url);
|
includes/mollie/wc/gateway/bitcoin.php
DELETED
@@ -1,37 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
use Mollie\Api\Types\PaymentMethod;
|
4 |
-
|
5 |
-
class Mollie_WC_Gateway_Bitcoin extends Mollie_WC_Gateway_Abstract
|
6 |
-
{
|
7 |
-
/**
|
8 |
-
* @return string
|
9 |
-
*/
|
10 |
-
public function getMollieMethodId ()
|
11 |
-
{
|
12 |
-
return PaymentMethod::BITCOIN;
|
13 |
-
}
|
14 |
-
|
15 |
-
/**
|
16 |
-
* @return string
|
17 |
-
*/
|
18 |
-
public function getDefaultTitle ()
|
19 |
-
{
|
20 |
-
return __('Bitcoin', 'mollie-payments-for-woocommerce');
|
21 |
-
}
|
22 |
-
|
23 |
-
/**
|
24 |
-
* @return string
|
25 |
-
*/
|
26 |
-
protected function getSettingsDescription() {
|
27 |
-
return '';
|
28 |
-
}
|
29 |
-
|
30 |
-
/**
|
31 |
-
* @return string
|
32 |
-
*/
|
33 |
-
protected function getDefaultDescription ()
|
34 |
-
{
|
35 |
-
return '';
|
36 |
-
}
|
37 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/mollie/wc/gateway/giftcard.php
CHANGED
@@ -96,8 +96,8 @@ class Mollie_WC_Gateway_Giftcard extends Mollie_WC_Gateway_Abstract
|
|
96 |
$html = '';
|
97 |
|
98 |
// If only one gift card issuers is available, show it without a dropdown
|
99 |
-
if ( count( $issuers
|
100 |
-
$html .= '<img src="' . $this->getIssuerIconUrl( $issuers
|
101 |
$html .= $issuers->description;
|
102 |
echo wpautop( wptexturize( $html ) );
|
103 |
|
@@ -107,7 +107,7 @@ class Mollie_WC_Gateway_Giftcard extends Mollie_WC_Gateway_Abstract
|
|
107 |
// If multiple gift card issuers are available, show them in a dropdown
|
108 |
$html .= '<select name="' . Mollie_WC_Plugin::PLUGIN_ID . '_issuer_' . $this->id . '">';
|
109 |
$html .= '<option value="">' . esc_html( __( $this->get_option( 'issuers_empty_option', '' ), 'mollie-payments-for-woocommerce' ) ) . '</option>';
|
110 |
-
foreach ( $issuers
|
111 |
$html .= '<option value="' . esc_attr( $issuer->id ) . '"' . ( $selected_issuer == $issuer->id ? ' selected=""' : '' ) . '>' . esc_html( $issuer->name ) . '</option>';
|
112 |
}
|
113 |
$html .= '</select>';
|
96 |
$html = '';
|
97 |
|
98 |
// If only one gift card issuers is available, show it without a dropdown
|
99 |
+
if ( count( $issuers ) === 1 ) {
|
100 |
+
$html .= '<img src="' . $this->getIssuerIconUrl( $issuers[0]->id ) . '" style="vertical-align:middle" />';
|
101 |
$html .= $issuers->description;
|
102 |
echo wpautop( wptexturize( $html ) );
|
103 |
|
107 |
// If multiple gift card issuers are available, show them in a dropdown
|
108 |
$html .= '<select name="' . Mollie_WC_Plugin::PLUGIN_ID . '_issuer_' . $this->id . '">';
|
109 |
$html .= '<option value="">' . esc_html( __( $this->get_option( 'issuers_empty_option', '' ), 'mollie-payments-for-woocommerce' ) ) . '</option>';
|
110 |
+
foreach ( $issuers as $issuer ) {
|
111 |
$html .= '<option value="' . esc_attr( $issuer->id ) . '"' . ( $selected_issuer == $issuer->id ? ' selected=""' : '' ) . '>' . esc_html( $issuer->name ) . '</option>';
|
112 |
}
|
113 |
$html .= '</select>';
|
includes/mollie/wc/gateway/ideal.php
CHANGED
@@ -96,7 +96,7 @@ class Mollie_WC_Gateway_Ideal extends Mollie_WC_Gateway_AbstractSepaRecurring
|
|
96 |
|
97 |
$html = '<select name="' . Mollie_WC_Plugin::PLUGIN_ID . '_issuer_' . $this->id . '">';
|
98 |
$html .= '<option value="">' . esc_html(__($this->get_option('issuers_empty_option', $this->getDefaultDescription()), 'mollie-payments-for-woocommerce')) . '</option>';
|
99 |
-
foreach ($issuers
|
100 |
{
|
101 |
$html .= '<option value="' . esc_attr($issuer->id) . '"' . ($selected_issuer == $issuer->id ? ' selected=""' : '') . '>' . esc_html($issuer->name) . '</option>';
|
102 |
}
|
96 |
|
97 |
$html = '<select name="' . Mollie_WC_Plugin::PLUGIN_ID . '_issuer_' . $this->id . '">';
|
98 |
$html .= '<option value="">' . esc_html(__($this->get_option('issuers_empty_option', $this->getDefaultDescription()), 'mollie-payments-for-woocommerce')) . '</option>';
|
99 |
+
foreach ($issuers as $issuer)
|
100 |
{
|
101 |
$html .= '<option value="' . esc_attr($issuer->id) . '"' . ($selected_issuer == $issuer->id ? ' selected=""' : '') . '>' . esc_html($issuer->name) . '</option>';
|
102 |
}
|
includes/mollie/wc/gateway/kbc.php
CHANGED
@@ -96,7 +96,7 @@ class Mollie_WC_Gateway_Kbc extends Mollie_WC_Gateway_AbstractSepaRecurring
|
|
96 |
|
97 |
$html = '<select name="' . Mollie_WC_Plugin::PLUGIN_ID . '_issuer_' . $this->id . '">';
|
98 |
$html .= '<option value="">' . esc_html(__($this->get_option('issuers_empty_option', $this->getDefaultDescription()), 'mollie-payments-for-woocommerce')) . '</option>';
|
99 |
-
foreach ($issuers
|
100 |
{
|
101 |
$html .= '<option value="' . esc_attr($issuer->id) . '"' . ($selected_issuer == $issuer->id ? ' selected=""' : '') . '>' . esc_html($issuer->name) . '</option>';
|
102 |
}
|
96 |
|
97 |
$html = '<select name="' . Mollie_WC_Plugin::PLUGIN_ID . '_issuer_' . $this->id . '">';
|
98 |
$html .= '<option value="">' . esc_html(__($this->get_option('issuers_empty_option', $this->getDefaultDescription()), 'mollie-payments-for-woocommerce')) . '</option>';
|
99 |
+
foreach ($issuers as $issuer)
|
100 |
{
|
101 |
$html .= '<option value="' . esc_attr($issuer->id) . '"' . ($selected_issuer == $issuer->id ? ' selected=""' : '') . '>' . esc_html($issuer->name) . '</option>';
|
102 |
}
|
includes/mollie/wc/helper/data.php
CHANGED
@@ -396,14 +396,18 @@ class Mollie_WC_Helper_Data
|
|
396 |
|
397 |
try {
|
398 |
|
399 |
-
$transient_id = Mollie_WC_Plugin::getDataHelper()->getTransientId( '
|
400 |
|
401 |
-
|
|
|
402 |
|
403 |
-
if ( $
|
404 |
-
|
405 |
-
|
406 |
-
|
|
|
|
|
|
|
407 |
|
408 |
// Set new transients (as cache)
|
409 |
try {
|
396 |
|
397 |
try {
|
398 |
|
399 |
+
$transient_id = Mollie_WC_Plugin::getDataHelper()->getTransientId( $method . '_issuers_' . ( $test_mode ? 'test' : 'live' ) );
|
400 |
|
401 |
+
// When no cache exists $cached_issuers will be `false`
|
402 |
+
$issuers = unserialize( get_transient( $transient_id ) );
|
403 |
|
404 |
+
if ( $issuers === false ) {
|
405 |
+
|
406 |
+
// Remove existing expired transients
|
407 |
+
delete_transient( $transient_id );
|
408 |
+
|
409 |
+
$method = $this->api_helper->getApiClient( $test_mode )->methods->get( "$method", array ( "include" => "issuers" ) );
|
410 |
+
$issuers = $method->issuers;
|
411 |
|
412 |
// Set new transients (as cache)
|
413 |
try {
|
includes/mollie/wc/helper/orderlines.php
CHANGED
@@ -333,8 +333,10 @@ class Mollie_WC_Helper_OrderLines {
|
|
333 |
private function get_item_reference( $product ) {
|
334 |
if ( $product && $product->get_sku() ) {
|
335 |
$item_reference = $product->get_sku();
|
336 |
-
}
|
337 |
$item_reference = $product->get_id();
|
|
|
|
|
338 |
}
|
339 |
|
340 |
return substr( strval( $item_reference ), 0, 64 );
|
@@ -476,4 +478,4 @@ class Mollie_WC_Helper_OrderLines {
|
|
476 |
return $shipping_tax_amount;
|
477 |
}
|
478 |
|
479 |
-
}
|
333 |
private function get_item_reference( $product ) {
|
334 |
if ( $product && $product->get_sku() ) {
|
335 |
$item_reference = $product->get_sku();
|
336 |
+
} elseif ( $product ) {
|
337 |
$item_reference = $product->get_id();
|
338 |
+
} else {
|
339 |
+
$item_reference = '';
|
340 |
}
|
341 |
|
342 |
return substr( strval( $item_reference ), 0, 64 );
|
478 |
return $shipping_tax_amount;
|
479 |
}
|
480 |
|
481 |
+
}
|
includes/mollie/wc/plugin.php
CHANGED
@@ -7,7 +7,7 @@ class Mollie_WC_Plugin
|
|
7 |
{
|
8 |
const PLUGIN_ID = 'mollie-payments-for-woocommerce';
|
9 |
const PLUGIN_TITLE = 'Mollie Payments for WooCommerce';
|
10 |
-
const PLUGIN_VERSION = '5.1.
|
11 |
|
12 |
const DB_VERSION = '1.0';
|
13 |
const DB_VERSION_PARAM_NAME = 'mollie-db-version';
|
@@ -24,7 +24,6 @@ class Mollie_WC_Plugin
|
|
24 |
public static $GATEWAYS = array(
|
25 |
'Mollie_WC_Gateway_BankTransfer',
|
26 |
'Mollie_WC_Gateway_Belfius',
|
27 |
-
'Mollie_WC_Gateway_Bitcoin',
|
28 |
'Mollie_WC_Gateway_Creditcard',
|
29 |
'Mollie_WC_Gateway_DirectDebit',
|
30 |
'Mollie_WC_Gateway_EPS',
|
7 |
{
|
8 |
const PLUGIN_ID = 'mollie-payments-for-woocommerce';
|
9 |
const PLUGIN_TITLE = 'Mollie Payments for WooCommerce';
|
10 |
+
const PLUGIN_VERSION = '5.1.7';
|
11 |
|
12 |
const DB_VERSION = '1.0';
|
13 |
const DB_VERSION_PARAM_NAME = 'mollie-db-version';
|
24 |
public static $GATEWAYS = array(
|
25 |
'Mollie_WC_Gateway_BankTransfer',
|
26 |
'Mollie_WC_Gateway_Belfius',
|
|
|
27 |
'Mollie_WC_Gateway_Creditcard',
|
28 |
'Mollie_WC_Gateway_DirectDebit',
|
29 |
'Mollie_WC_Gateway_EPS',
|
mollie-payments-for-woocommerce.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Mollie Payments for WooCommerce
|
4 |
* Plugin URI: https://www.mollie.com
|
5 |
* Description: Accept payments in WooCommerce with the official Mollie plugin
|
6 |
-
* Version: 5.1.
|
7 |
* Author: Mollie
|
8 |
* Author URI: https://www.mollie.com
|
9 |
* Requires at least: 3.8
|
3 |
* Plugin Name: Mollie Payments for WooCommerce
|
4 |
* Plugin URI: https://www.mollie.com
|
5 |
* Description: Accept payments in WooCommerce with the official Mollie plugin
|
6 |
+
* Version: 5.1.7
|
7 |
* Author: Mollie
|
8 |
* Author URI: https://www.mollie.com
|
9 |
* Requires at least: 3.8
|
readme.txt
CHANGED
@@ -2,13 +2,13 @@
|
|
2 |
Contributors: daanvm, davdebcom, l.vangunst, ndijkstra, robin-mollie
|
3 |
Tags: mollie, payments, payment gateway, woocommerce, credit card
|
4 |
Requires at least: 3.8
|
5 |
-
Tested up to: 5.
|
6 |
-
Stable tag: 5.1.
|
7 |
Requires PHP: 5.6
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
-
Accept all major payment methods in WooCommerce today. Credit cards, iDEAL
|
12 |
|
13 |
== Description ==
|
14 |
|
@@ -50,7 +50,6 @@ European and local payment methods:
|
|
50 |
International payment methods:
|
51 |
|
52 |
* PayPal (International)
|
53 |
-
* Bitcoin (International)
|
54 |
* Paysafecard (International)
|
55 |
|
56 |
Pay after delivery payment methods:
|
@@ -181,6 +180,13 @@ Automatic updates should work like a charm; as always though, ensure you backup
|
|
181 |
|
182 |
== Changelog ==
|
183 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
= 5.1.6 - 10-04-2019 =
|
185 |
|
186 |
* New - Add support for Przelewy24 (Poland)
|
@@ -541,7 +547,7 @@ WooCommerce -> Settings -> Payments -> Mollie - Bank Transfer.
|
|
541 |
|
542 |
= 2.0.1 - 02/10/2015 =
|
543 |
* Add support for SEPA Direct Debit.
|
544 |
-
* Add message for Belfius,
|
545 |
|
546 |
= 2.0.0 - 17/08/2015 =
|
547 |
* Complete rewrite of our WooCommerce plugin to better follow WordPress and WooCommerce standards and add better support for other plugins.
|
2 |
Contributors: daanvm, davdebcom, l.vangunst, ndijkstra, robin-mollie
|
3 |
Tags: mollie, payments, payment gateway, woocommerce, credit card
|
4 |
Requires at least: 3.8
|
5 |
+
Tested up to: 5.2
|
6 |
+
Stable tag: 5.1.7
|
7 |
Requires PHP: 5.6
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
+
Accept all major payment methods in WooCommerce today. Credit cards, iDEAL and more! Fast, safe and intuitive.
|
12 |
|
13 |
== Description ==
|
14 |
|
50 |
International payment methods:
|
51 |
|
52 |
* PayPal (International)
|
|
|
53 |
* Paysafecard (International)
|
54 |
|
55 |
Pay after delivery payment methods:
|
180 |
|
181 |
== Changelog ==
|
182 |
|
183 |
+
= 5.1.7 - 28-04-2019 =
|
184 |
+
|
185 |
+
* Fix - Remove Bitcoin as payment gateway, no longer supported by Mollie, contact info@mollie.com for details
|
186 |
+
* Fix - Add extra check for URL's with parameters and correct them is structure is incorrect
|
187 |
+
* Fix - getMethodIssuers: improve caching of issuers (iDEAL, KBC/CBC)
|
188 |
+
* Fix - During payment always check if a product exists, if it doesn't create a Mollie Payment instead of Mollie Order
|
189 |
+
|
190 |
= 5.1.6 - 10-04-2019 =
|
191 |
|
192 |
* New - Add support for Przelewy24 (Poland)
|
547 |
|
548 |
= 2.0.1 - 02/10/2015 =
|
549 |
* Add support for SEPA Direct Debit.
|
550 |
+
* Add message for Belfius, Bancontact and paysafecard when the payment is paid successfully.
|
551 |
|
552 |
= 2.0.0 - 17/08/2015 =
|
553 |
* Complete rewrite of our WooCommerce plugin to better follow WordPress and WooCommerce standards and add better support for other plugins.
|