Version Description
- 01-11-2018 =
IMPORTANT This version requires PHP 5.6 or higher. If you are using an older PHP version, please read this article: PHP & Mollie API v2.
- Fix - Improvements to refunds: better log messages, show errors to shop-manager
- Fix - Remove option to set a description for payments, the new Orders API does not support this
- Fix - Update WooCommerce status constants in our plugin (cancelled and refunded)
- Fix - Make sure customer ID is stored by getting the payment object with all payments embedded
- Fix - Get and use correct _mollie_payment_id in setActiveMolliePaymentForOrders and setActiveMolliePaymentForSubscriptions
- Fix - Move adding of sequenceType into payment object
Fix - Update Webship Giftcard logo to webshopgiftcard.svg
Fix - Klarna/Orders API: Also send Address Line 2 to Mollie Orders API
Fix - Klarna/Orders API: In billing and shipping address check that fields aren't just a space
Fix - Klarna/Orders API: Decode HTML entities in product names before sending them to Mollie
Fix - Klarna/Orders API: Don't fall back to Payments API if payment method is Klarna
Fix - Klarna/Orders API: Only add shipping address if all required fields are present
Fix - Klarna/Orders API: Always store Mollie order ID as mollie_orderid
Fix - Klarna/Orders API: Add fallback to getActiveMolliePayment and try to get payment ID from Mollie order if possible
Release Info
Developer | davdebcom |
Plugin | Mollie Payments for WooCommerce |
Version | 5.0.3 |
Comparing to | |
See all releases |
Code changes from version 5.0.2 to 5.0.3
- assets/images/{webshop-giftcard.svg → webshopgiftcard.svg} +0 -0
- includes/mollie-api-php/composer.lock +23 -23
- includes/mollie-api-php/vendor/composer/ca-bundle/res/cacert.pem +48 -122
- includes/mollie-api-php/vendor/composer/installed.json +6 -6
- includes/mollie/wc/gateway/abstract.php +32 -22
- includes/mollie/wc/gateway/abstractsubscription.php +0 -14
- includes/mollie/wc/helper/data.php +3 -3
- includes/mollie/wc/helper/orderlines.php +1 -1
- includes/mollie/wc/helper/settings.php +0 -9
- includes/mollie/wc/payment/object.php +95 -7
- includes/mollie/wc/payment/order.php +63 -38
- includes/mollie/wc/payment/payment.php +29 -12
- includes/mollie/wc/plugin.php +1 -1
- mollie-payments-for-woocommerce.php +1 -1
- readme.txt +23 -1
File without changes
|
@@ -8,16 +8,16 @@
|
|
8 |
"packages": [
|
9 |
{
|
10 |
"name": "composer/ca-bundle",
|
11 |
-
"version": "1.1.
|
12 |
"source": {
|
13 |
"type": "git",
|
14 |
"url": "https://github.com/composer/ca-bundle.git",
|
15 |
-
"reference": "
|
16 |
},
|
17 |
"dist": {
|
18 |
"type": "zip",
|
19 |
-
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/
|
20 |
-
"reference": "
|
21 |
"shasum": ""
|
22 |
},
|
23 |
"require": {
|
@@ -60,7 +60,7 @@
|
|
60 |
"ssl",
|
61 |
"tls"
|
62 |
],
|
63 |
-
"time": "2018-
|
64 |
},
|
65 |
{
|
66 |
"name": "guzzlehttp/guzzle",
|
@@ -814,16 +814,16 @@
|
|
814 |
},
|
815 |
{
|
816 |
"name": "phpunit/php-code-coverage",
|
817 |
-
"version": "6.
|
818 |
"source": {
|
819 |
"type": "git",
|
820 |
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
821 |
-
"reference": "
|
822 |
},
|
823 |
"dist": {
|
824 |
"type": "zip",
|
825 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/
|
826 |
-
"reference": "
|
827 |
"shasum": ""
|
828 |
},
|
829 |
"require": {
|
@@ -834,7 +834,7 @@
|
|
834 |
"phpunit/php-text-template": "^1.2.1",
|
835 |
"phpunit/php-token-stream": "^3.0",
|
836 |
"sebastian/code-unit-reverse-lookup": "^1.0.1",
|
837 |
-
"sebastian/environment": "^3.1",
|
838 |
"sebastian/version": "^2.0.1",
|
839 |
"theseer/tokenizer": "^1.1"
|
840 |
},
|
@@ -847,7 +847,7 @@
|
|
847 |
"type": "library",
|
848 |
"extra": {
|
849 |
"branch-alias": {
|
850 |
-
"dev-master": "6.
|
851 |
}
|
852 |
},
|
853 |
"autoload": {
|
@@ -873,7 +873,7 @@
|
|
873 |
"testing",
|
874 |
"xunit"
|
875 |
],
|
876 |
-
"time": "2018-10-
|
877 |
},
|
878 |
{
|
879 |
"name": "phpunit/php-file-iterator",
|
@@ -1017,16 +1017,16 @@
|
|
1017 |
},
|
1018 |
{
|
1019 |
"name": "phpunit/php-token-stream",
|
1020 |
-
"version": "3.0.
|
1021 |
"source": {
|
1022 |
"type": "git",
|
1023 |
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
|
1024 |
-
"reference": "
|
1025 |
},
|
1026 |
"dist": {
|
1027 |
"type": "zip",
|
1028 |
-
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/
|
1029 |
-
"reference": "
|
1030 |
"shasum": ""
|
1031 |
},
|
1032 |
"require": {
|
@@ -1062,20 +1062,20 @@
|
|
1062 |
"keywords": [
|
1063 |
"tokenizer"
|
1064 |
],
|
1065 |
-
"time": "2018-
|
1066 |
},
|
1067 |
{
|
1068 |
"name": "phpunit/phpunit",
|
1069 |
-
"version": "7.4.
|
1070 |
"source": {
|
1071 |
"type": "git",
|
1072 |
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
1073 |
-
"reference": "
|
1074 |
},
|
1075 |
"dist": {
|
1076 |
"type": "zip",
|
1077 |
-
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/
|
1078 |
-
"reference": "
|
1079 |
"shasum": ""
|
1080 |
},
|
1081 |
"require": {
|
@@ -1096,7 +1096,7 @@
|
|
1096 |
"phpunit/php-timer": "^2.0",
|
1097 |
"sebastian/comparator": "^3.0",
|
1098 |
"sebastian/diff": "^3.0",
|
1099 |
-
"sebastian/environment": "^3.1",
|
1100 |
"sebastian/exporter": "^3.1",
|
1101 |
"sebastian/global-state": "^2.0",
|
1102 |
"sebastian/object-enumerator": "^3.0.3",
|
@@ -1146,7 +1146,7 @@
|
|
1146 |
"testing",
|
1147 |
"xunit"
|
1148 |
],
|
1149 |
-
"time": "2018-10-
|
1150 |
},
|
1151 |
{
|
1152 |
"name": "sebastian/code-unit-reverse-lookup",
|
8 |
"packages": [
|
9 |
{
|
10 |
"name": "composer/ca-bundle",
|
11 |
+
"version": "1.1.3",
|
12 |
"source": {
|
13 |
"type": "git",
|
14 |
"url": "https://github.com/composer/ca-bundle.git",
|
15 |
+
"reference": "8afa52cd417f4ec417b4bfe86b68106538a87660"
|
16 |
},
|
17 |
"dist": {
|
18 |
"type": "zip",
|
19 |
+
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/8afa52cd417f4ec417b4bfe86b68106538a87660",
|
20 |
+
"reference": "8afa52cd417f4ec417b4bfe86b68106538a87660",
|
21 |
"shasum": ""
|
22 |
},
|
23 |
"require": {
|
60 |
"ssl",
|
61 |
"tls"
|
62 |
],
|
63 |
+
"time": "2018-10-18T06:09:13+00:00"
|
64 |
},
|
65 |
{
|
66 |
"name": "guzzlehttp/guzzle",
|
814 |
},
|
815 |
{
|
816 |
"name": "phpunit/php-code-coverage",
|
817 |
+
"version": "6.1.4",
|
818 |
"source": {
|
819 |
"type": "git",
|
820 |
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
|
821 |
+
"reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d"
|
822 |
},
|
823 |
"dist": {
|
824 |
"type": "zip",
|
825 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d",
|
826 |
+
"reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d",
|
827 |
"shasum": ""
|
828 |
},
|
829 |
"require": {
|
834 |
"phpunit/php-text-template": "^1.2.1",
|
835 |
"phpunit/php-token-stream": "^3.0",
|
836 |
"sebastian/code-unit-reverse-lookup": "^1.0.1",
|
837 |
+
"sebastian/environment": "^3.1 || ^4.0",
|
838 |
"sebastian/version": "^2.0.1",
|
839 |
"theseer/tokenizer": "^1.1"
|
840 |
},
|
847 |
"type": "library",
|
848 |
"extra": {
|
849 |
"branch-alias": {
|
850 |
+
"dev-master": "6.1-dev"
|
851 |
}
|
852 |
},
|
853 |
"autoload": {
|
873 |
"testing",
|
874 |
"xunit"
|
875 |
],
|
876 |
+
"time": "2018-10-31T16:06:48+00:00"
|
877 |
},
|
878 |
{
|
879 |
"name": "phpunit/php-file-iterator",
|
1017 |
},
|
1018 |
{
|
1019 |
"name": "phpunit/php-token-stream",
|
1020 |
+
"version": "3.0.1",
|
1021 |
"source": {
|
1022 |
"type": "git",
|
1023 |
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
|
1024 |
+
"reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18"
|
1025 |
},
|
1026 |
"dist": {
|
1027 |
"type": "zip",
|
1028 |
+
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/c99e3be9d3e85f60646f152f9002d46ed7770d18",
|
1029 |
+
"reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18",
|
1030 |
"shasum": ""
|
1031 |
},
|
1032 |
"require": {
|
1062 |
"keywords": [
|
1063 |
"tokenizer"
|
1064 |
],
|
1065 |
+
"time": "2018-10-30T05:52:18+00:00"
|
1066 |
},
|
1067 |
{
|
1068 |
"name": "phpunit/phpunit",
|
1069 |
+
"version": "7.4.3",
|
1070 |
"source": {
|
1071 |
"type": "git",
|
1072 |
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
1073 |
+
"reference": "c151651fb6ed264038d486ea262e243af72e5e64"
|
1074 |
},
|
1075 |
"dist": {
|
1076 |
"type": "zip",
|
1077 |
+
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c151651fb6ed264038d486ea262e243af72e5e64",
|
1078 |
+
"reference": "c151651fb6ed264038d486ea262e243af72e5e64",
|
1079 |
"shasum": ""
|
1080 |
},
|
1081 |
"require": {
|
1096 |
"phpunit/php-timer": "^2.0",
|
1097 |
"sebastian/comparator": "^3.0",
|
1098 |
"sebastian/diff": "^3.0",
|
1099 |
+
"sebastian/environment": "^3.1 || ^4.0",
|
1100 |
"sebastian/exporter": "^3.1",
|
1101 |
"sebastian/global-state": "^2.0",
|
1102 |
"sebastian/object-enumerator": "^3.0.3",
|
1146 |
"testing",
|
1147 |
"xunit"
|
1148 |
],
|
1149 |
+
"time": "2018-10-23T05:57:41+00:00"
|
1150 |
},
|
1151 |
{
|
1152 |
"name": "sebastian/code-unit-reverse-lookup",
|
@@ -1,7 +1,7 @@
|
|
1 |
##
|
2 |
## Bundle of CA Root Certificates
|
3 |
##
|
4 |
-
## Certificate data from Mozilla as of: Wed
|
5 |
##
|
6 |
## This is a bundle of X.509 certificates of public Certificate Authorities
|
7 |
## (CA). These were automatically extracted from Mozilla's root certificates
|
@@ -14,7 +14,7 @@
|
|
14 |
## Just configure this file as the SSLCACertificateFile.
|
15 |
##
|
16 |
## Conversion done with mk-ca-bundle.pl version 1.27.
|
17 |
-
## SHA256:
|
18 |
##
|
19 |
|
20 |
|
@@ -2792,126 +2792,6 @@ GiecMjvAwNW6qef4BENThe5SId6d9SWDPp5YSy/XZxMOIQIwBeF1Ad5o7SofTUwJCA3sS61kFyjn
|
|
2792 |
dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
|
2793 |
-----END CERTIFICATE-----
|
2794 |
|
2795 |
-
Certplus Root CA G1
|
2796 |
-
===================
|
2797 |
-
-----BEGIN CERTIFICATE-----
|
2798 |
-
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
-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
-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
-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
-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
-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
-
Qv4c/dMcLRC4hlTqQ7jbxofaqK6AJc96Jh2qkbBIb6613p7Y1/oA/caP0FG7Yn2ksYyy/yARujVj
|
2805 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
+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
|
2822 |
-
qsOR0C5CB8AMTVPNJLFMWx5R9N/pkvo=
|
2823 |
-
-----END CERTIFICATE-----
|
2824 |
-
|
2825 |
-
Certplus Root CA G2
|
2826 |
-
===================
|
2827 |
-
-----BEGIN CERTIFICATE-----
|
2828 |
-
MIICHDCCAaKgAwIBAgISESDZkc6uo+jF5//pAq/Pc7xVMAoGCCqGSM49BAMDMD4xCzAJBgNVBAYT
|
2829 |
-
AkZSMREwDwYDVQQKDAhDZXJ0cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjAeFw0x
|
2830 |
-
NDA1MjYwMDAwMDBaFw0zODAxMTUwMDAwMDBaMD4xCzAJBgNVBAYTAkZSMREwDwYDVQQKDAhDZXJ0
|
2831 |
-
cGx1czEcMBoGA1UEAwwTQ2VydHBsdXMgUm9vdCBDQSBHMjB2MBAGByqGSM49AgEGBSuBBAAiA2IA
|
2832 |
-
BM0PW1aC3/BFGtat93nwHcmsltaeTpwftEIRyoa/bfuFo8XlGVzX7qY/aWfYeOKmycTbLXku54uN
|
2833 |
-
Am8xIk0G42ByRZ0OQneezs/lf4WbGOT8zC5y0xaTTsqZY1yhBSpsBqNjMGEwDgYDVR0PAQH/BAQD
|
2834 |
-
AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMB8GA1Ud
|
2835 |
-
IwQYMBaAFNqDYwJ5jtpMxjwjFNiPwyCrKGBZMAoGCCqGSM49BAMDA2gAMGUCMHD+sAvZ94OX7PNV
|
2836 |
-
HdTcswYO/jOYnYs5kGuUIe22113WTNchp+e/IQ8rzfcq3IUHnQIxAIYUFuXcsGXCwI4Un78kFmjl
|
2837 |
-
vPl5adytRSv3tjFzzAalU5ORGpOucGpnutee5WEaXw==
|
2838 |
-
-----END CERTIFICATE-----
|
2839 |
-
|
2840 |
-
OpenTrust Root CA G1
|
2841 |
-
====================
|
2842 |
-
-----BEGIN CERTIFICATE-----
|
2843 |
-
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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
N3DlCPaTKbYwDQYJKoZIhvcNAQELBQADggIBAB3dAmB84DWn5ph76kTOZ0BP8pNuZtQ5iSas000E
|
2859 |
-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
-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
-
n0Md/rcYkoZDSw6cMoYsYPXpSOqV7XAp8dUv/TW0V8/bhUiZucJvbI/NeJWsZCj9VrDDb8O+WVLh
|
2862 |
-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
-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
-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
-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
-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
|
2867 |
-
OXXUc0ECd97N4EOH1uS6SsNsEn/+KuYj1oxx
|
2868 |
-
-----END CERTIFICATE-----
|
2869 |
-
|
2870 |
-
OpenTrust Root CA G2
|
2871 |
-
====================
|
2872 |
-
-----BEGIN CERTIFICATE-----
|
2873 |
-
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
-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
-
MB4XDTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoM
|
2876 |
-
CU9wZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzIwggIiMA0GCSqGSIb3DQEB
|
2877 |
-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
-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
-
4e6WiWYkBuTNQjpK3eCasMSCRbP+yatcfD7J6xcvDH1urqWPyKwlCm/61UWY0jUJ9gNDlP7ZvyCV
|
2880 |
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
|
2897 |
-
u7JwqkwR3v98KzfUetF3NI/n+UL3PIEMS1IK
|
2898 |
-
-----END CERTIFICATE-----
|
2899 |
-
|
2900 |
-
OpenTrust Root CA G3
|
2901 |
-
====================
|
2902 |
-
-----BEGIN CERTIFICATE-----
|
2903 |
-
MIICITCCAaagAwIBAgISESDm+Ez8JLC+BUCs2oMbNGA/MAoGCCqGSM49BAMDMEAxCzAJBgNVBAYT
|
2904 |
-
AkZSMRIwEAYDVQQKDAlPcGVuVHJ1c3QxHTAbBgNVBAMMFE9wZW5UcnVzdCBSb290IENBIEczMB4X
|
2905 |
-
DTE0MDUyNjAwMDAwMFoXDTM4MDExNTAwMDAwMFowQDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCU9w
|
2906 |
-
ZW5UcnVzdDEdMBsGA1UEAwwUT3BlblRydXN0IFJvb3QgQ0EgRzMwdjAQBgcqhkjOPQIBBgUrgQQA
|
2907 |
-
IgNiAARK7liuTcpm3gY6oxH84Bjwbhy6LTAMidnW7ptzg6kjFYwvWYpa3RTqnVkrQ7cG7DK2uu5B
|
2908 |
-
ta1doYXM6h0UZqNnfkbilPPntlahFVmhTzeXuSIevRHr9LIfXsMUmuXZl5mjYzBhMA4GA1UdDwEB
|
2909 |
-
/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAf
|
2910 |
-
BgNVHSMEGDAWgBRHd8MUi2I5DMlv4VBN0BBY3JWIbTAKBggqhkjOPQQDAwNpADBmAjEAj6jcnboM
|
2911 |
-
BBf6Fek9LykBl7+BFjNAk2z8+e2AcG+qj9uEwov1NcoG3GRvaBbhj5G5AjEA2Euly8LQCGzpGPta
|
2912 |
-
3U1fJAuwACEl74+nBCZx4nxp5V2a+EEfOzmTk51V6s2N8fvB
|
2913 |
-
-----END CERTIFICATE-----
|
2914 |
-
|
2915 |
ISRG Root X1
|
2916 |
============
|
2917 |
-----BEGIN CERTIFICATE-----
|
@@ -3312,3 +3192,49 @@ BBYEFFvKXuXe0oGqzagtZFG22XKbl+ZPMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUW8pe
|
|
3312 |
N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm
|
3313 |
m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg==
|
3314 |
-----END CERTIFICATE-----
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
##
|
2 |
## Bundle of CA Root Certificates
|
3 |
##
|
4 |
+
## Certificate data from Mozilla as of: Wed Oct 17 03:12:10 2018 GMT
|
5 |
##
|
6 |
## This is a bundle of X.509 certificates of public Certificate Authorities
|
7 |
## (CA). These were automatically extracted from Mozilla's root certificates
|
14 |
## Just configure this file as the SSLCACertificateFile.
|
15 |
##
|
16 |
## Conversion done with mk-ca-bundle.pl version 1.27.
|
17 |
+
## SHA256: 3f875d87fee4ce3d966c69f1d6c111aa95c0143ade59e4fa24882c582bb5f0ca
|
18 |
##
|
19 |
|
20 |
|
2792 |
dc5FZXIhF8siQQ6ME5g4mlRtm8rifOoCWCKR
|
2793 |
-----END CERTIFICATE-----
|
2794 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2795 |
ISRG Root X1
|
2796 |
============
|
2797 |
-----BEGIN CERTIFICATE-----
|
3192 |
N+vp1RPZytRrJPOwPYdGWBrssd9v+1a6cGvHOMzosYxPD/fxZ3YOg9AeUY8CMD32IygmTMZgh5Mm
|
3193 |
m7I1HrrW9zzRHM76JTymGoEVW/MSD2zuZYrJh6j5B+BimoxcSg==
|
3194 |
-----END CERTIFICATE-----
|
3195 |
+
|
3196 |
+
GlobalSign Root CA - R6
|
3197 |
+
=======================
|
3198 |
+
-----BEGIN CERTIFICATE-----
|
3199 |
+
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
|
3224 |
+
-----END CERTIFICATE-----
|
3225 |
+
|
3226 |
+
OISTE WISeKey Global Root GC CA
|
3227 |
+
===============================
|
3228 |
+
-----BEGIN CERTIFICATE-----
|
3229 |
+
MIICaTCCAe+gAwIBAgIQISpWDK7aDKtARb8roi066jAKBggqhkjOPQQDAzBtMQswCQYDVQQGEwJD
|
3230 |
+
SDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEo
|
3231 |
+
MCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQyBDQTAeFw0xNzA1MDkwOTQ4MzRa
|
3232 |
+
Fw00MjA1MDkwOTU4MzNaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYDVQQL
|
3233 |
+
ExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEdsb2Jh
|
3234 |
+
bCBSb290IEdDIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAETOlQwMYPchi82PG6s4nieUqjFqdr
|
3235 |
+
VCTbUf/q9Akkwwsin8tqJ4KBDdLArzHkdIJuyiXZjHWd8dvQmqJLIX4Wp2OQ0jnUsYd4XxiWD1Ab
|
3236 |
+
NTcPasbc2RNNpI6QN+a9WzGRo1QwUjAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
|
3237 |
+
BgNVHQ4EFgQUSIcUrOPDnpBgOtfKie7TrYy0UGYwEAYJKwYBBAGCNxUBBAMCAQAwCgYIKoZIzj0E
|
3238 |
+
AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk
|
3239 |
+
AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
|
3240 |
+
-----END CERTIFICATE-----
|
@@ -1,17 +1,17 @@
|
|
1 |
[
|
2 |
{
|
3 |
"name": "composer/ca-bundle",
|
4 |
-
"version": "1.1.
|
5 |
-
"version_normalized": "1.1.
|
6 |
"source": {
|
7 |
"type": "git",
|
8 |
"url": "https://github.com/composer/ca-bundle.git",
|
9 |
-
"reference": "
|
10 |
},
|
11 |
"dist": {
|
12 |
"type": "zip",
|
13 |
-
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/
|
14 |
-
"reference": "
|
15 |
"shasum": ""
|
16 |
},
|
17 |
"require": {
|
@@ -24,7 +24,7 @@
|
|
24 |
"psr/log": "^1.0",
|
25 |
"symfony/process": "^2.5 || ^3.0 || ^4.0"
|
26 |
},
|
27 |
-
"time": "2018-
|
28 |
"type": "library",
|
29 |
"extra": {
|
30 |
"branch-alias": {
|
1 |
[
|
2 |
{
|
3 |
"name": "composer/ca-bundle",
|
4 |
+
"version": "1.1.3",
|
5 |
+
"version_normalized": "1.1.3.0",
|
6 |
"source": {
|
7 |
"type": "git",
|
8 |
"url": "https://github.com/composer/ca-bundle.git",
|
9 |
+
"reference": "8afa52cd417f4ec417b4bfe86b68106538a87660"
|
10 |
},
|
11 |
"dist": {
|
12 |
"type": "zip",
|
13 |
+
"url": "https://api.github.com/repos/composer/ca-bundle/zipball/8afa52cd417f4ec417b4bfe86b68106538a87660",
|
14 |
+
"reference": "8afa52cd417f4ec417b4bfe86b68106538a87660",
|
15 |
"shasum": ""
|
16 |
},
|
17 |
"require": {
|
24 |
"psr/log": "^1.0",
|
25 |
"symfony/process": "^2.5 || ^3.0 || ^4.0"
|
26 |
},
|
27 |
+
"time": "2018-10-18T06:09:13+00:00",
|
28 |
"type": "library",
|
29 |
"extra": {
|
30 |
"branch-alias": {
|
@@ -4,13 +4,16 @@ use Mollie\Api\Types\PaymentMethod;
|
|
4 |
|
5 |
abstract class Mollie_WC_Gateway_Abstract extends WC_Payment_Gateway
|
6 |
{
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
|
|
|
|
|
|
14 |
|
15 |
/**
|
16 |
* @var string
|
@@ -481,6 +484,14 @@ abstract class Mollie_WC_Gateway_Abstract extends WC_Payment_Gateway
|
|
481 |
}
|
482 |
catch ( Mollie\Api\Exceptions\ApiException $e ) {
|
483 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
484 |
Mollie_WC_Plugin::debug( 'Creating payment object: type Order, first try failed: ' . $e->getMessage() );
|
485 |
|
486 |
// Unset missing customer ID
|
@@ -489,7 +500,7 @@ abstract class Mollie_WC_Gateway_Abstract extends WC_Payment_Gateway
|
|
489 |
try {
|
490 |
|
491 |
if ( $e->getField() !== 'payment.customerId' ) {
|
492 |
-
Mollie_WC_Plugin::debug( 'Creating payment object: type Order, did not fail because of customerId, so trying Payment now.' );
|
493 |
throw $e;
|
494 |
}
|
495 |
|
@@ -508,14 +519,6 @@ abstract class Mollie_WC_Gateway_Abstract extends WC_Payment_Gateway
|
|
508 |
|
509 |
$data = apply_filters( 'woocommerce_' . $this->id . '_args', $data, $order );
|
510 |
|
511 |
-
// Don't try to create a Mollie Payment for Klarna payment methods
|
512 |
-
$order_payment_method = ( version_compare( WC_VERSION, '3.0', '<' ) ) ? $order->payment_method : $order->get_payment_method();
|
513 |
-
|
514 |
-
if ( $order_payment_method == 'mollie_wc_gateway_klarnapaylater' || $order_payment_method == 'mollie_wc_gateway_sliceit' ) {
|
515 |
-
Mollie_WC_Plugin::debug( 'Creating payment object: removing method \'Klarna\' so cusromers can select another payment method at Mollie. ' );
|
516 |
-
unset( $data['method'] );
|
517 |
-
}
|
518 |
-
|
519 |
try {
|
520 |
|
521 |
// Only enable this for hardcore debugging!
|
@@ -1192,20 +1195,27 @@ abstract class Mollie_WC_Gateway_Abstract extends WC_Payment_Gateway
|
|
1192 |
public function process_refund( $order_id, $amount = null, $reason = '' ) {
|
1193 |
$order = Mollie_WC_Plugin::getDataHelper()->getWcOrder( $order_id );
|
1194 |
|
|
|
1195 |
if ( ! $order ) {
|
1196 |
Mollie_WC_Plugin::debug( __METHOD__ . ' - Could not find order ' . $order_id );
|
1197 |
|
1198 |
return false;
|
1199 |
}
|
1200 |
|
1201 |
-
|
1202 |
-
|
1203 |
-
|
1204 |
-
|
|
|
|
|
|
|
|
|
1205 |
}
|
1206 |
|
1207 |
-
//
|
1208 |
-
if (
|
|
|
|
|
1209 |
return false;
|
1210 |
}
|
1211 |
|
4 |
|
5 |
abstract class Mollie_WC_Gateway_Abstract extends WC_Payment_Gateway
|
6 |
{
|
7 |
+
/**
|
8 |
+
* WooCommerce default statuses
|
9 |
+
*/
|
10 |
+
const STATUS_PENDING = 'pending';
|
11 |
+
const STATUS_PROCESSING = 'processing';
|
12 |
+
const STATUS_ON_HOLD = 'on-hold';
|
13 |
+
const STATUS_COMPLETED = 'completed';
|
14 |
+
const STATUS_CANCELLED = 'cancelled'; // Mollie uses canceled (US English spelling), WooCommerce and this plugin use cancelled.
|
15 |
+
const STATUS_FAILED = 'failed';
|
16 |
+
const STATUS_REFUNDED = 'refunded';
|
17 |
|
18 |
/**
|
19 |
* @var string
|
484 |
}
|
485 |
catch ( Mollie\Api\Exceptions\ApiException $e ) {
|
486 |
|
487 |
+
// Don't try to create a Mollie Payment for Klarna payment methods
|
488 |
+
$order_payment_method = ( version_compare( WC_VERSION, '3.0', '<' ) ) ? $order->payment_method : $order->get_payment_method();
|
489 |
+
|
490 |
+
if ( $order_payment_method == 'mollie_wc_gateway_klarnapaylater' || $order_payment_method == 'mollie_wc_gateway_sliceit' ) {
|
491 |
+
Mollie_WC_Plugin::debug( 'Creating payment object: type Order, failed for Klarna payment, stopping process.' );
|
492 |
+
throw $e;
|
493 |
+
}
|
494 |
+
|
495 |
Mollie_WC_Plugin::debug( 'Creating payment object: type Order, first try failed: ' . $e->getMessage() );
|
496 |
|
497 |
// Unset missing customer ID
|
500 |
try {
|
501 |
|
502 |
if ( $e->getField() !== 'payment.customerId' ) {
|
503 |
+
Mollie_WC_Plugin::debug( 'Creating payment object: type Order, did not fail because of incorrect customerId, so trying Payment now.' );
|
504 |
throw $e;
|
505 |
}
|
506 |
|
519 |
|
520 |
$data = apply_filters( 'woocommerce_' . $this->id . '_args', $data, $order );
|
521 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
522 |
try {
|
523 |
|
524 |
// Only enable this for hardcore debugging!
|
1195 |
public function process_refund( $order_id, $amount = null, $reason = '' ) {
|
1196 |
$order = Mollie_WC_Plugin::getDataHelper()->getWcOrder( $order_id );
|
1197 |
|
1198 |
+
// Order not found
|
1199 |
if ( ! $order ) {
|
1200 |
Mollie_WC_Plugin::debug( __METHOD__ . ' - Could not find order ' . $order_id );
|
1201 |
|
1202 |
return false;
|
1203 |
}
|
1204 |
|
1205 |
+
// Get the Mollie payment
|
1206 |
+
$payment = Mollie_WC_Plugin::getPaymentObject()->getActiveMolliePayment( $order_id );
|
1207 |
+
|
1208 |
+
// Mollie payment not found
|
1209 |
+
if ( ! $payment ) {
|
1210 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' - Mollie payment object not found for order ' . $order_id );
|
1211 |
+
|
1212 |
+
return false;
|
1213 |
}
|
1214 |
|
1215 |
+
// Payment method for order isn't the same as payment object method
|
1216 |
+
if ( $payment->method != $this->getMollieMethodId() ) {
|
1217 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' - Invalid refund gateway for order ' . $order_id );
|
1218 |
+
|
1219 |
return false;
|
1220 |
}
|
1221 |
|
@@ -55,20 +55,6 @@ abstract class Mollie_WC_Gateway_AbstractSubscription extends Mollie_WC_Gateway_
|
|
55 |
return parent::process_payment($order_id);
|
56 |
}
|
57 |
|
58 |
-
/**
|
59 |
-
* @param $order
|
60 |
-
* @param $customer_id
|
61 |
-
* @return array
|
62 |
-
*/
|
63 |
-
protected function getPaymentRequestData($order, $customer_id)
|
64 |
-
{
|
65 |
-
$paymentRequestData = parent::getPaymentRequestData($order, $customer_id);
|
66 |
-
if ($this->isSubscriptionPayment){
|
67 |
-
$paymentRequestData['sequenceType'] = 'first';
|
68 |
-
}
|
69 |
-
return $paymentRequestData;
|
70 |
-
}
|
71 |
-
|
72 |
/**
|
73 |
* @param $order
|
74 |
* @param $customer_id
|
55 |
return parent::process_payment($order_id);
|
56 |
}
|
57 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
58 |
/**
|
59 |
* @param $order
|
60 |
* @param $customer_id
|
@@ -313,14 +313,14 @@ class Mollie_WC_Helper_Data
|
|
313 |
|
314 |
try {
|
315 |
|
316 |
-
$filters_key
|
317 |
$transient_id = Mollie_WC_Plugin::getDataHelper()->getTransientId( 'api_methods_' . ( $test_mode ? 'test' : 'live' ) . $filters_key );
|
318 |
|
319 |
if ( $use_cache ) {
|
320 |
$cached_methods = unserialize( get_transient( $transient_id ) );
|
321 |
|
322 |
if ( $cached_methods && $cached_methods instanceof \Mollie\Api\Resources\MethodCollection ) {
|
323 |
-
|
324 |
}
|
325 |
}
|
326 |
|
@@ -330,7 +330,7 @@ class Mollie_WC_Helper_Data
|
|
330 |
delete_transient( $transient_id );
|
331 |
|
332 |
// TODO David: Support orders and payment resource?
|
333 |
-
$filters['resource']
|
334 |
|
335 |
$methods = $this->api_helper->getApiClient( $test_mode )->methods->all( $filters );
|
336 |
|
313 |
|
314 |
try {
|
315 |
|
316 |
+
$filters_key = ( ! empty ( $filters['sequenceType'] ) ) ? '_' . $filters['sequenceType'] : '';
|
317 |
$transient_id = Mollie_WC_Plugin::getDataHelper()->getTransientId( 'api_methods_' . ( $test_mode ? 'test' : 'live' ) . $filters_key );
|
318 |
|
319 |
if ( $use_cache ) {
|
320 |
$cached_methods = unserialize( get_transient( $transient_id ) );
|
321 |
|
322 |
if ( $cached_methods && $cached_methods instanceof \Mollie\Api\Resources\MethodCollection ) {
|
323 |
+
$methods = $cached_methods;
|
324 |
}
|
325 |
}
|
326 |
|
330 |
delete_transient( $transient_id );
|
331 |
|
332 |
// TODO David: Support orders and payment resource?
|
333 |
+
$filters['resource'] = 'orders';
|
334 |
|
335 |
$methods = $this->api_helper->getApiClient( $test_mode )->methods->all( $filters );
|
336 |
|
@@ -276,7 +276,7 @@ class Mollie_WC_Helper_OrderLines {
|
|
276 |
$cart_item_data = $cart_item['data'];
|
277 |
$item_name = $cart_item_data->get_name();
|
278 |
|
279 |
-
return strip_tags(
|
280 |
}
|
281 |
|
282 |
/**
|
276 |
$cart_item_data = $cart_item['data'];
|
277 |
$item_name = $cart_item_data->get_name();
|
278 |
|
279 |
+
return html_entity_decode(strip_tags($item_name) );
|
280 |
}
|
281 |
|
282 |
/**
|
@@ -399,15 +399,6 @@ class Mollie_WC_Helper_Settings
|
|
399 |
'placeholder' => $test_placeholder,
|
400 |
'pattern' => '^test_\w{30,}$',
|
401 |
),
|
402 |
-
),
|
403 |
-
array(
|
404 |
-
'id' => $this->getSettingId('payment_description'),
|
405 |
-
'title' => __('Description', 'mollie-payments-for-woocommerce'),
|
406 |
-
'type' => 'text',
|
407 |
-
/* translators: Placeholder 1: Default payment description, placeholder 2: list of available tags */
|
408 |
-
'desc' => sprintf(__('Payment description send to Mollie. Default <code>%s</code><br/>You can use the following tags: %s', 'mollie-payments-for-woocommerce'), $default_payment_description, $payment_description_tags),
|
409 |
-
'default' => $default_payment_description,
|
410 |
-
'css' => 'width: 350px',
|
411 |
),
|
412 |
array(
|
413 |
'id' => $this->getSettingId('order_status_cancelled_payments'),
|
399 |
'placeholder' => $test_placeholder,
|
400 |
'pattern' => '^test_\w{30,}$',
|
401 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
402 |
),
|
403 |
array(
|
404 |
'id' => $this->getSettingId('order_status_cancelled_payments'),
|
@@ -43,6 +43,7 @@ class Mollie_WC_Payment_Object {
|
|
43 |
* @return Mollie\Api\Resources\Payment|null
|
44 |
*/
|
45 |
public function getPaymentObjectPayment( $payment_id, $test_mode = false, $use_cache = true ) {
|
|
|
46 |
try {
|
47 |
|
48 |
// Is test mode enabled?
|
@@ -60,11 +61,39 @@ class Mollie_WC_Payment_Object {
|
|
60 |
return null;
|
61 |
}
|
62 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
/**
|
64 |
* @param $order
|
65 |
* @param $customer_id
|
66 |
*
|
67 |
-
* @return array
|
68 |
*/
|
69 |
protected function getPaymentRequestData( $order, $customer_id ) {
|
70 |
|
@@ -101,7 +130,8 @@ class Mollie_WC_Payment_Object {
|
|
101 |
|
102 |
|
103 |
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
104 |
-
update_post_meta( $order_id, '
|
|
|
105 |
update_post_meta( $order_id, '_mollie_payment_mode', $this->data->mode, $single = true );
|
106 |
|
107 |
delete_post_meta( $order_id, '_mollie_cancelled_payment_id' );
|
@@ -114,12 +144,13 @@ class Mollie_WC_Payment_Object {
|
|
114 |
|
115 |
static::$order = Mollie_WC_Plugin::getDataHelper()->getWcOrder( $order_id );
|
116 |
|
|
|
117 |
static::$order->update_meta_data( '_mollie_payment_id', static::$paymentId );
|
118 |
static::$order->update_meta_data( '_mollie_payment_mode', $this->data->mode );
|
119 |
|
120 |
static::$order->delete_meta_data( '_mollie_cancelled_payment_id' );
|
121 |
|
122 |
-
if (
|
123 |
static::$order->update_meta_data( '_mollie_customer_id', static::$customerId );
|
124 |
}
|
125 |
|
@@ -141,7 +172,7 @@ class Mollie_WC_Payment_Object {
|
|
141 |
|
142 |
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
143 |
|
144 |
-
add_post_meta( $order_id, '_mollie_payment_id',
|
145 |
add_post_meta( $order_id, '_mollie_payment_mode', $this->data->mode, $single = true );
|
146 |
|
147 |
delete_post_meta( $order_id, '_mollie_cancelled_payment_id' );
|
@@ -162,7 +193,7 @@ class Mollie_WC_Payment_Object {
|
|
162 |
foreach ( $subscriptions as $subscription ) {
|
163 |
$this->unsetActiveMolliePayment( $subscription->id );
|
164 |
delete_post_meta( $subscription->id, '_mollie_customer_id' );
|
165 |
-
add_post_meta( $subscription->id, '_mollie_payment_id',
|
166 |
add_post_meta( $subscription->id, '_mollie_payment_mode', $this->data->mode, $single = true );
|
167 |
delete_post_meta( $subscription->id, '_mollie_cancelled_payment_id' );
|
168 |
if ( static::$customerId ) {
|
@@ -174,7 +205,7 @@ class Mollie_WC_Payment_Object {
|
|
174 |
|
175 |
$order = Mollie_WC_Plugin::getDataHelper()->getWcOrder( $order_id );
|
176 |
|
177 |
-
$order->update_meta_data( '_mollie_payment_id',
|
178 |
$order->update_meta_data( '_mollie_payment_mode', $this->data->mode );
|
179 |
|
180 |
$order->delete_meta_data( '_mollie_cancelled_payment_id' );
|
@@ -195,7 +226,7 @@ class Mollie_WC_Payment_Object {
|
|
195 |
foreach ( $subscriptions as $subscription ) {
|
196 |
$this->unsetActiveMolliePayment( $subscription->get_id() );
|
197 |
$subscription->delete_meta_data( '_mollie_customer_id' );
|
198 |
-
$subscription->update_meta_data( '_mollie_payment_id',
|
199 |
$subscription->update_meta_data( '_mollie_payment_mode', $this->data->mode );
|
200 |
$subscription->delete_meta_data( '_mollie_cancelled_payment_id' );
|
201 |
if ( static::$customerId ) {
|
@@ -309,6 +340,24 @@ class Mollie_WC_Payment_Object {
|
|
309 |
return $mollie_payment_id;
|
310 |
}
|
311 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
312 |
/**
|
313 |
* Get active Mollie payment mode for order
|
314 |
*
|
@@ -334,6 +383,8 @@ class Mollie_WC_Payment_Object {
|
|
334 |
* @return Mollie\Api\Resources\Payment|null
|
335 |
*/
|
336 |
public function getActiveMolliePayment( $order_id, $use_cache = true ) {
|
|
|
|
|
337 |
if ( $this->hasActiveMolliePayment( $order_id ) ) {
|
338 |
return $this->getPaymentObjectPayment(
|
339 |
$this->getActiveMolliePaymentId( $order_id ),
|
@@ -342,6 +393,18 @@ class Mollie_WC_Payment_Object {
|
|
342 |
);
|
343 |
}
|
344 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
345 |
return null;
|
346 |
}
|
347 |
|
@@ -358,6 +421,19 @@ class Mollie_WC_Payment_Object {
|
|
358 |
return ! empty( $mollie_payment_id );
|
359 |
}
|
360 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
361 |
/**
|
362 |
* @param int $order_id
|
363 |
* @param string $payment_id
|
@@ -481,6 +557,18 @@ class Mollie_WC_Payment_Object {
|
|
481 |
|
482 |
}
|
483 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
484 |
/**
|
485 |
* @return bool
|
486 |
*/
|
43 |
* @return Mollie\Api\Resources\Payment|null
|
44 |
*/
|
45 |
public function getPaymentObjectPayment( $payment_id, $test_mode = false, $use_cache = true ) {
|
46 |
+
// TODO David: Duplicate, send to child class.
|
47 |
try {
|
48 |
|
49 |
// Is test mode enabled?
|
61 |
return null;
|
62 |
}
|
63 |
|
64 |
+
/**
|
65 |
+
* Get Mollie payment from cache or load from Mollie
|
66 |
+
* Skip cache by setting $use_cache to false
|
67 |
+
*
|
68 |
+
* @param string $payment_id
|
69 |
+
* @param bool $test_mode (default: false)
|
70 |
+
* @param bool $use_cache (default: true)
|
71 |
+
*
|
72 |
+
* @return Mollie\Api\Resources\Payment|Mollie\Api\Resources\Order|null
|
73 |
+
*/
|
74 |
+
public function getPaymentObjectOrder( $payment_id, $test_mode = false, $use_cache = true ) {
|
75 |
+
// TODO David: Duplicate, send to child class.
|
76 |
+
try {
|
77 |
+
|
78 |
+
// Is test mode enabled?
|
79 |
+
$settings_helper = Mollie_WC_Plugin::getSettingsHelper();
|
80 |
+
$test_mode = $settings_helper->isTestModeEnabled();
|
81 |
+
|
82 |
+
$payment = Mollie_WC_Plugin::getApiHelper()->getApiClient( $test_mode )->orders->get( $payment_id, [ "embed" => "payments" ] );
|
83 |
+
|
84 |
+
return $payment;
|
85 |
+
}
|
86 |
+
catch ( \Mollie\Api\Exceptions\ApiException $e ) {
|
87 |
+
Mollie_WC_Plugin::debug( __FUNCTION__ . ": Could not load order $payment_id (" . ( $test_mode ? 'test' : 'live' ) . "): " . $e->getMessage() . ' (' . get_class( $e ) . ')' );
|
88 |
+
}
|
89 |
+
|
90 |
+
return null;
|
91 |
+
}
|
92 |
+
|
93 |
/**
|
94 |
* @param $order
|
95 |
* @param $customer_id
|
96 |
*
|
|
|
97 |
*/
|
98 |
protected function getPaymentRequestData( $order, $customer_id ) {
|
99 |
|
130 |
|
131 |
|
132 |
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
133 |
+
update_post_meta( $order_id, '_mollie_order_id', $this->data->id, $single = true );
|
134 |
+
update_post_meta( $order_id, '_mollie_payment_id', static::$paymentId, $single = true );
|
135 |
update_post_meta( $order_id, '_mollie_payment_mode', $this->data->mode, $single = true );
|
136 |
|
137 |
delete_post_meta( $order_id, '_mollie_cancelled_payment_id' );
|
144 |
|
145 |
static::$order = Mollie_WC_Plugin::getDataHelper()->getWcOrder( $order_id );
|
146 |
|
147 |
+
static::$order->update_meta_data( '_mollie_order_id', $this->data->id );
|
148 |
static::$order->update_meta_data( '_mollie_payment_id', static::$paymentId );
|
149 |
static::$order->update_meta_data( '_mollie_payment_mode', $this->data->mode );
|
150 |
|
151 |
static::$order->delete_meta_data( '_mollie_cancelled_payment_id' );
|
152 |
|
153 |
+
if ( static::$customerId ) {
|
154 |
static::$order->update_meta_data( '_mollie_customer_id', static::$customerId );
|
155 |
}
|
156 |
|
172 |
|
173 |
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
174 |
|
175 |
+
add_post_meta( $order_id, '_mollie_payment_id', static::$paymentId, $single = true );
|
176 |
add_post_meta( $order_id, '_mollie_payment_mode', $this->data->mode, $single = true );
|
177 |
|
178 |
delete_post_meta( $order_id, '_mollie_cancelled_payment_id' );
|
193 |
foreach ( $subscriptions as $subscription ) {
|
194 |
$this->unsetActiveMolliePayment( $subscription->id );
|
195 |
delete_post_meta( $subscription->id, '_mollie_customer_id' );
|
196 |
+
add_post_meta( $subscription->id, '_mollie_payment_id', static::$paymentId, $single = true );
|
197 |
add_post_meta( $subscription->id, '_mollie_payment_mode', $this->data->mode, $single = true );
|
198 |
delete_post_meta( $subscription->id, '_mollie_cancelled_payment_id' );
|
199 |
if ( static::$customerId ) {
|
205 |
|
206 |
$order = Mollie_WC_Plugin::getDataHelper()->getWcOrder( $order_id );
|
207 |
|
208 |
+
$order->update_meta_data( '_mollie_payment_id', static::$paymentId );
|
209 |
$order->update_meta_data( '_mollie_payment_mode', $this->data->mode );
|
210 |
|
211 |
$order->delete_meta_data( '_mollie_cancelled_payment_id' );
|
226 |
foreach ( $subscriptions as $subscription ) {
|
227 |
$this->unsetActiveMolliePayment( $subscription->get_id() );
|
228 |
$subscription->delete_meta_data( '_mollie_customer_id' );
|
229 |
+
$subscription->update_meta_data( '_mollie_payment_id', static::$paymentId );
|
230 |
$subscription->update_meta_data( '_mollie_payment_mode', $this->data->mode );
|
231 |
$subscription->delete_meta_data( '_mollie_cancelled_payment_id' );
|
232 |
if ( static::$customerId ) {
|
340 |
return $mollie_payment_id;
|
341 |
}
|
342 |
|
343 |
+
/**
|
344 |
+
* Get active Mollie payment id for order
|
345 |
+
*
|
346 |
+
* @param int $order_id
|
347 |
+
*
|
348 |
+
* @return string
|
349 |
+
*/
|
350 |
+
public function getActiveMollieOrderId( $order_id ) {
|
351 |
+
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
|
352 |
+
$mollie_payment_id = get_post_meta( $order_id, '_mollie_order_id', $single = true );
|
353 |
+
} else {
|
354 |
+
$order = Mollie_WC_Plugin::getDataHelper()->getWcOrder( $order_id );
|
355 |
+
$mollie_payment_id = $order->get_meta( '_mollie_order_id', true );
|
356 |
+
}
|
357 |
+
|
358 |
+
return $mollie_payment_id;
|
359 |
+
}
|
360 |
+
|
361 |
/**
|
362 |
* Get active Mollie payment mode for order
|
363 |
*
|
383 |
* @return Mollie\Api\Resources\Payment|null
|
384 |
*/
|
385 |
public function getActiveMolliePayment( $order_id, $use_cache = true ) {
|
386 |
+
|
387 |
+
// Check if there is a payment ID stored with order and get it
|
388 |
if ( $this->hasActiveMolliePayment( $order_id ) ) {
|
389 |
return $this->getPaymentObjectPayment(
|
390 |
$this->getActiveMolliePaymentId( $order_id ),
|
393 |
);
|
394 |
}
|
395 |
|
396 |
+
// If there is no payment ID, try to get order ID and if it's stored, try getting payment ID from API
|
397 |
+
if ( $this->hasActiveMollieOrder( $order_id ) ) {
|
398 |
+
$mollie_order = $this->getPaymentObjectOrder($this->getActiveMollieOrderId( $order_id ));
|
399 |
+
$mollie_order = Mollie_WC_Plugin::getPaymentFactoryHelper()->getPaymentObject( $mollie_order );
|
400 |
+
|
401 |
+
return $this->getPaymentObjectPayment(
|
402 |
+
$mollie_order->getMolliePaymentIdFromPaymentObject(),
|
403 |
+
$this->getActiveMolliePaymentMode( $order_id ) == 'test',
|
404 |
+
$use_cache
|
405 |
+
);
|
406 |
+
}
|
407 |
+
|
408 |
return null;
|
409 |
}
|
410 |
|
421 |
return ! empty( $mollie_payment_id );
|
422 |
}
|
423 |
|
424 |
+
/**
|
425 |
+
* Check if the order has an active Mollie order
|
426 |
+
*
|
427 |
+
* @param int $order_id
|
428 |
+
*
|
429 |
+
* @return bool
|
430 |
+
*/
|
431 |
+
public function hasActiveMollieOrder( $order_id ) {
|
432 |
+
$mollie_payment_id = $this->getActiveMollieOrderId( $order_id );
|
433 |
+
|
434 |
+
return ! empty( $mollie_payment_id );
|
435 |
+
}
|
436 |
+
|
437 |
/**
|
438 |
* @param int $order_id
|
439 |
* @param string $payment_id
|
557 |
|
558 |
}
|
559 |
|
560 |
+
/**
|
561 |
+
* Process a refund if supported
|
562 |
+
* @param int $order_id
|
563 |
+
* @param float $amount
|
564 |
+
* @param string $reason
|
565 |
+
|
566 |
+
* @since WooCommerce 2.2
|
567 |
+
*/
|
568 |
+
public function refund( $order, $order_id, $amount = null, $reason = '' ) {
|
569 |
+
|
570 |
+
}
|
571 |
+
|
572 |
/**
|
573 |
* @return bool
|
574 |
*/
|
@@ -75,6 +75,14 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
75 |
'order_id' => $order->id,
|
76 |
),
|
77 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
} else {
|
79 |
|
80 |
// Setup billing and shipping objects
|
@@ -82,28 +90,30 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
82 |
$shippingAddress = new stdClass();
|
83 |
|
84 |
// Get user details
|
85 |
-
$billingAddress->givenName = $order->get_billing_first_name();
|
86 |
-
$billingAddress->familyName = $order->get_billing_last_name();
|
87 |
-
$billingAddress->email = $order->get_billing_email();
|
88 |
|
89 |
// Get user details
|
90 |
-
$shippingAddress->givenName = $order->get_shipping_first_name();
|
91 |
-
$shippingAddress->familyName = $order->get_shipping_last_name();
|
92 |
-
$shippingAddress->email = $order->get_billing_email(); // WooCommerce doesn't have a shipping email
|
93 |
|
94 |
// Create billingAddress object
|
95 |
-
$billingAddress->streetAndNumber
|
96 |
-
$billingAddress->
|
97 |
-
$billingAddress->
|
98 |
-
$billingAddress->
|
99 |
-
$billingAddress->
|
|
|
100 |
|
101 |
// Create shippingAddress object
|
102 |
-
$shippingAddress->streetAndNumber
|
103 |
-
$shippingAddress->
|
104 |
-
$shippingAddress->
|
105 |
-
$shippingAddress->
|
106 |
-
$shippingAddress->
|
|
|
107 |
|
108 |
// Generate order lines for Mollie Orders
|
109 |
$order_lines_helper = Mollie_WC_Plugin::getOrderLinesHelper( self::$shop_country, $order );
|
@@ -123,7 +133,6 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
123 |
),
|
124 |
'locale' => $payment_locale,
|
125 |
'billingAddress' => $billingAddress,
|
126 |
-
'shippingAddress' => $shippingAddress,
|
127 |
'metadata' => array (
|
128 |
'order_id' => $order->get_id(),
|
129 |
'order_number' => $order->get_order_number(),
|
@@ -131,8 +140,21 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
131 |
'lines' => $order_lines['lines'],
|
132 |
'orderNumber' => $order->get_order_number(), // TODO David: use order number or order id?
|
133 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
}
|
135 |
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
if ( $store_customer ) {
|
137 |
$paymentRequestData['payment']['customerId'] = $customer_id;
|
138 |
}
|
@@ -155,7 +177,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
155 |
|
156 |
public function getMolliePaymentIdFromPaymentObject() {
|
157 |
|
158 |
-
// TODO David: Quick fix, there needs to be a better way to do this!
|
159 |
$payment = $this->getPaymentObject($this->data->id);
|
160 |
|
161 |
if ( isset( $payment->_embedded->payments{0}->id ) ) {
|
@@ -169,9 +191,12 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
169 |
|
170 |
public function getMollieCustomerIdFromPaymentObject() {
|
171 |
|
172 |
-
|
|
|
|
|
|
|
173 |
|
174 |
-
return $
|
175 |
|
176 |
}
|
177 |
|
@@ -195,7 +220,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
195 |
if ( $payment->isPaid() ) {
|
196 |
|
197 |
// Add messages to log
|
198 |
-
Mollie_WC_Plugin::debug(
|
199 |
|
200 |
// WooCommerce 2.2.0 has the option to store the Payment transaction id.
|
201 |
$woo_version = get_option( 'woocommerce_version', 'Unknown' );
|
@@ -207,7 +232,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
207 |
}
|
208 |
|
209 |
// Add messages to log
|
210 |
-
Mollie_WC_Plugin::debug(
|
211 |
|
212 |
$order->add_order_note( sprintf(
|
213 |
/* translators: Placeholder 1: payment method title, placeholder 2: payment ID */
|
@@ -223,7 +248,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
223 |
$this->unsetCancelledMolliePaymentId( $order_id );
|
224 |
|
225 |
// Add messages to log
|
226 |
-
Mollie_WC_Plugin::debug(
|
227 |
|
228 |
// Subscription processing
|
229 |
if ( class_exists( 'WC_Subscriptions' ) && class_exists( 'WC_Subscriptions_Admin' ) ) {
|
@@ -243,7 +268,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
243 |
} else {
|
244 |
|
245 |
// Add messages to log
|
246 |
-
Mollie_WC_Plugin::debug(
|
247 |
|
248 |
}
|
249 |
}
|
@@ -265,7 +290,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
265 |
if ( $payment->isAuthorized() ) {
|
266 |
|
267 |
// Add messages to log
|
268 |
-
Mollie_WC_Plugin::debug(
|
269 |
|
270 |
// WooCommerce 2.2.0 has the option to store the Payment transaction id.
|
271 |
$woo_version = get_option( 'woocommerce_version', 'Unknown' );
|
@@ -278,7 +303,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
278 |
}
|
279 |
|
280 |
// Add messages to log
|
281 |
-
Mollie_WC_Plugin::debug(
|
282 |
|
283 |
$order->add_order_note( sprintf(
|
284 |
/* translators: Placeholder 1: payment method title, placeholder 2: payment ID */
|
@@ -294,7 +319,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
294 |
$this->unsetCancelledMolliePaymentId( $order_id );
|
295 |
|
296 |
// Add messages to log
|
297 |
-
Mollie_WC_Plugin::debug(
|
298 |
|
299 |
// Subscription processing
|
300 |
if ( class_exists( 'WC_Subscriptions' ) && class_exists( 'WC_Subscriptions_Admin' ) ) {
|
@@ -315,7 +340,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
315 |
} else {
|
316 |
|
317 |
// Add messages to log
|
318 |
-
Mollie_WC_Plugin::debug(
|
319 |
|
320 |
}
|
321 |
}
|
@@ -337,7 +362,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
337 |
if ( $payment->isCompleted() ) {
|
338 |
|
339 |
// Add messages to log
|
340 |
-
Mollie_WC_Plugin::debug(
|
341 |
|
342 |
// WooCommerce 2.2.0 has the option to store the Payment transaction id.
|
343 |
$woo_version = get_option( 'woocommerce_version', 'Unknown' );
|
@@ -350,7 +375,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
350 |
}
|
351 |
|
352 |
// Add messages to log
|
353 |
-
Mollie_WC_Plugin::debug(
|
354 |
|
355 |
$order->add_order_note( sprintf(
|
356 |
/* translators: Placeholder 1: payment method title, placeholder 2: payment ID */
|
@@ -366,7 +391,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
366 |
$this->unsetCancelledMolliePaymentId( $order_id );
|
367 |
|
368 |
// Add messages to log
|
369 |
-
Mollie_WC_Plugin::debug(
|
370 |
|
371 |
// Subscription processing
|
372 |
if ( class_exists( 'WC_Subscriptions' ) && class_exists( 'WC_Subscriptions_Admin' ) ) {
|
@@ -386,7 +411,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
386 |
} else {
|
387 |
|
388 |
// Add messages to log
|
389 |
-
Mollie_WC_Plugin::debug(
|
390 |
|
391 |
}
|
392 |
}
|
@@ -407,7 +432,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
407 |
}
|
408 |
|
409 |
// Add messages to log
|
410 |
-
Mollie_WC_Plugin::debug(
|
411 |
|
412 |
$this->unsetActiveMolliePayment( $order_id, $payment->id );
|
413 |
$this->setCancelledMolliePaymentId( $order_id, $payment->id );
|
@@ -489,7 +514,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
489 |
}
|
490 |
|
491 |
// Add messages to log
|
492 |
-
Mollie_WC_Plugin::debug(
|
493 |
|
494 |
// If WooCommerce Subscriptions is installed, process this failure as a subscription, otherwise as a regular order
|
495 |
if ( function_exists( 'wcs_order_contains_renewal' ) && wcs_order_contains_renewal( $order_id ) ) {
|
@@ -521,7 +546,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
521 |
);
|
522 |
}
|
523 |
|
524 |
-
Mollie_WC_Plugin::debug(
|
525 |
|
526 |
|
527 |
// Send a "Failed order" email to notify the admin
|
@@ -558,7 +583,7 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
558 |
}
|
559 |
}
|
560 |
|
561 |
-
Mollie_WC_Plugin::debug(
|
562 |
|
563 |
}
|
564 |
|
@@ -579,11 +604,11 @@ class Mollie_WC_Payment_Order extends Mollie_WC_Payment_Object {
|
|
579 |
}
|
580 |
|
581 |
// Add messages to log
|
582 |
-
Mollie_WC_Plugin::debug(
|
583 |
|
584 |
// Check that this payment is the most recent, based on Mollie Payment ID from post meta, do not cancel the order if it isn't
|
585 |
if ( $mollie_payment_id != $payment->id ) {
|
586 |
-
Mollie_WC_Plugin::debug(
|
587 |
|
588 |
$order->add_order_note( sprintf(
|
589 |
/* translators: Placeholder 1: payment method title, placeholder 2: payment ID */
|
75 |
'order_id' => $order->id,
|
76 |
),
|
77 |
);
|
78 |
+
|
79 |
+
// Add sequenceType for subscriptions first payments
|
80 |
+
if ( class_exists( 'WC_Subscriptions' ) && class_exists( 'WC_Subscriptions_Admin' ) ) {
|
81 |
+
if ( Mollie_WC_Plugin::getDataHelper()->isSubscription( $order->id ) ) {
|
82 |
+
$paymentRequestData['payment']['sequenceType'] = 'first';
|
83 |
+
}
|
84 |
+
}
|
85 |
+
|
86 |
} else {
|
87 |
|
88 |
// Setup billing and shipping objects
|
90 |
$shippingAddress = new stdClass();
|
91 |
|
92 |
// Get user details
|
93 |
+
$billingAddress->givenName = ( ctype_space( $order->get_billing_first_name() ) ) ? null : $order->get_billing_first_name();
|
94 |
+
$billingAddress->familyName = ( ctype_space( $order->get_billing_last_name() ) ) ? null : $order->get_billing_last_name();
|
95 |
+
$billingAddress->email = ( ctype_space( $order->get_billing_email() ) ) ? null : $order->get_billing_email();
|
96 |
|
97 |
// Get user details
|
98 |
+
$shippingAddress->givenName = ( ctype_space( $order->get_shipping_first_name() ) ) ? null : $order->get_shipping_first_name();
|
99 |
+
$shippingAddress->familyName = ( ctype_space( $order->get_shipping_last_name() ) ) ? null : $order->get_shipping_last_name();
|
100 |
+
$shippingAddress->email = ( ctype_space( $order->get_billing_email() ) ) ? null : $order->get_billing_email(); // WooCommerce doesn't have a shipping email
|
101 |
|
102 |
// Create billingAddress object
|
103 |
+
$billingAddress->streetAndNumber = ( ctype_space( $order->get_billing_address_1() ) ) ? null : $order->get_billing_address_1();
|
104 |
+
$billingAddress->streetAdditional = ( ctype_space( $order->get_billing_address_2() ) ) ? null : $order->get_billing_address_2();
|
105 |
+
$billingAddress->postalCode = ( ctype_space( $order->get_billing_postcode() ) ) ? null : $order->get_billing_postcode();
|
106 |
+
$billingAddress->city = ( ctype_space( $order->get_billing_city() ) ) ? null : $order->get_billing_city();
|
107 |
+
$billingAddress->region = ( ctype_space( $order->get_billing_state() ) ) ? null : $order->get_billing_state();
|
108 |
+
$billingAddress->country = ( ctype_space( $order->get_billing_country() ) ) ? null : $order->get_billing_country();
|
109 |
|
110 |
// Create shippingAddress object
|
111 |
+
$shippingAddress->streetAndNumber = ( ctype_space( $order->get_shipping_address_1() ) ) ? null : $order->get_shipping_address_1();
|
112 |
+
$shippingAddress->streetAdditional = ( ctype_space( $order->get_shipping_address_2() ) ) ? null : $order->get_shipping_address_2();
|
113 |
+
$shippingAddress->postalCode = ( ctype_space( $order->get_shipping_postcode() ) ) ? null : $order->get_shipping_postcode();
|
114 |
+
$shippingAddress->city = ( ctype_space( $order->get_shipping_city() ) ) ? null : $order->get_shipping_city();
|
115 |
+
$shippingAddress->region = ( ctype_space( $order->get_shipping_state() ) ) ? null : $order->get_shipping_state();
|
116 |
+
$shippingAddress->country = ( ctype_space( $order->get_shipping_country() ) ) ? null : $order->get_shipping_country();
|
117 |
|
118 |
// Generate order lines for Mollie Orders
|
119 |
$order_lines_helper = Mollie_WC_Plugin::getOrderLinesHelper( self::$shop_country, $order );
|
133 |
),
|
134 |
'locale' => $payment_locale,
|
135 |
'billingAddress' => $billingAddress,
|
|
|
136 |
'metadata' => array (
|
137 |
'order_id' => $order->get_id(),
|
138 |
'order_number' => $order->get_order_number(),
|
140 |
'lines' => $order_lines['lines'],
|
141 |
'orderNumber' => $order->get_order_number(), // TODO David: use order number or order id?
|
142 |
);
|
143 |
+
|
144 |
+
// Add sequenceType for subscriptions first payments
|
145 |
+
if ( class_exists( 'WC_Subscriptions' ) && class_exists( 'WC_Subscriptions_Admin' ) ) {
|
146 |
+
if ( Mollie_WC_Plugin::getDataHelper()->isSubscription( $order->get_id() ) ) {
|
147 |
+
$paymentRequestData['payment']['sequenceType'] = 'first';
|
148 |
+
}
|
149 |
+
}
|
150 |
}
|
151 |
|
152 |
+
// Only add shippingAddress if all required fields are set
|
153 |
+
if ( isset( $shippingAddress->streetandNumber ) && isset( $shippingAddress->postalCode ) && isset( $shippingAddress->city ) && isset( $shippingAddress->country ) ) {
|
154 |
+
$paymentRequestData['shippingAddress'] = $shippingAddress;
|
155 |
+
}
|
156 |
+
|
157 |
+
// Only store customer at Mollie if setting is enabled
|
158 |
if ( $store_customer ) {
|
159 |
$paymentRequestData['payment']['customerId'] = $customer_id;
|
160 |
}
|
177 |
|
178 |
public function getMolliePaymentIdFromPaymentObject() {
|
179 |
|
180 |
+
// TODO David: Quick fix, make sure payment object has payments embedded, there needs to be a better way to do this!
|
181 |
$payment = $this->getPaymentObject($this->data->id);
|
182 |
|
183 |
if ( isset( $payment->_embedded->payments{0}->id ) ) {
|
191 |
|
192 |
public function getMollieCustomerIdFromPaymentObject() {
|
193 |
|
194 |
+
// TODO David: Quick fix, make sure payment object has payments embedded, there needs to be a better way to do this!
|
195 |
+
$payment = $this->getPaymentObject($this->data->id);
|
196 |
+
|
197 |
+
if ( isset( $payment->_embedded->payments{0}->customerId ) ) {
|
198 |
|
199 |
+
return $payment->_embedded->payments{0}->customerId;
|
200 |
|
201 |
}
|
202 |
|
220 |
if ( $payment->isPaid() ) {
|
221 |
|
222 |
// Add messages to log
|
223 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for order ' . $order_id );
|
224 |
|
225 |
// WooCommerce 2.2.0 has the option to store the Payment transaction id.
|
226 |
$woo_version = get_option( 'woocommerce_version', 'Unknown' );
|
232 |
}
|
233 |
|
234 |
// Add messages to log
|
235 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' WooCommerce payment_complete() processed and returned to ' . __METHOD__ . ' for order ' . $order_id );
|
236 |
|
237 |
$order->add_order_note( sprintf(
|
238 |
/* translators: Placeholder 1: payment method title, placeholder 2: payment ID */
|
248 |
$this->unsetCancelledMolliePaymentId( $order_id );
|
249 |
|
250 |
// Add messages to log
|
251 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' processing paid order via Mollie plugin fully completed for order ' . $order_id );
|
252 |
|
253 |
// Subscription processing
|
254 |
if ( class_exists( 'WC_Subscriptions' ) && class_exists( 'WC_Subscriptions_Admin' ) ) {
|
268 |
} else {
|
269 |
|
270 |
// Add messages to log
|
271 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' payment at Mollie not paid, so no processing for order ' . $order_id );
|
272 |
|
273 |
}
|
274 |
}
|
290 |
if ( $payment->isAuthorized() ) {
|
291 |
|
292 |
// Add messages to log
|
293 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for order ' . $order_id );
|
294 |
|
295 |
// WooCommerce 2.2.0 has the option to store the Payment transaction id.
|
296 |
$woo_version = get_option( 'woocommerce_version', 'Unknown' );
|
303 |
}
|
304 |
|
305 |
// Add messages to log
|
306 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' WooCommerce payment_complete() processed and returned to ' . __METHOD__ . ' for order ' . $order_id );
|
307 |
|
308 |
$order->add_order_note( sprintf(
|
309 |
/* translators: Placeholder 1: payment method title, placeholder 2: payment ID */
|
319 |
$this->unsetCancelledMolliePaymentId( $order_id );
|
320 |
|
321 |
// Add messages to log
|
322 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' processing order status update via Mollie plugin fully completed for order ' . $order_id );
|
323 |
|
324 |
// Subscription processing
|
325 |
if ( class_exists( 'WC_Subscriptions' ) && class_exists( 'WC_Subscriptions_Admin' ) ) {
|
340 |
} else {
|
341 |
|
342 |
// Add messages to log
|
343 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' order at Mollie not authorized, so no processing for order ' . $order_id );
|
344 |
|
345 |
}
|
346 |
}
|
362 |
if ( $payment->isCompleted() ) {
|
363 |
|
364 |
// Add messages to log
|
365 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for order ' . $order_id );
|
366 |
|
367 |
// WooCommerce 2.2.0 has the option to store the Payment transaction id.
|
368 |
$woo_version = get_option( 'woocommerce_version', 'Unknown' );
|
375 |
}
|
376 |
|
377 |
// Add messages to log
|
378 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' WooCommerce payment_complete() processed and returned to ' . __METHOD__ . ' for order ' . $order_id );
|
379 |
|
380 |
$order->add_order_note( sprintf(
|
381 |
/* translators: Placeholder 1: payment method title, placeholder 2: payment ID */
|
391 |
$this->unsetCancelledMolliePaymentId( $order_id );
|
392 |
|
393 |
// Add messages to log
|
394 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' processing order status update via Mollie plugin fully completed for order ' . $order_id );
|
395 |
|
396 |
// Subscription processing
|
397 |
if ( class_exists( 'WC_Subscriptions' ) && class_exists( 'WC_Subscriptions_Admin' ) ) {
|
411 |
} else {
|
412 |
|
413 |
// Add messages to log
|
414 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' order at Mollie not completed, so no further processing for order ' . $order_id );
|
415 |
|
416 |
}
|
417 |
}
|
432 |
}
|
433 |
|
434 |
// Add messages to log
|
435 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for order ' . $order_id );
|
436 |
|
437 |
$this->unsetActiveMolliePayment( $order_id, $payment->id );
|
438 |
$this->setCancelledMolliePaymentId( $order_id, $payment->id );
|
514 |
}
|
515 |
|
516 |
// Add messages to log
|
517 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for order ' . $order_id );
|
518 |
|
519 |
// If WooCommerce Subscriptions is installed, process this failure as a subscription, otherwise as a regular order
|
520 |
if ( function_exists( 'wcs_order_contains_renewal' ) && wcs_order_contains_renewal( $order_id ) ) {
|
546 |
);
|
547 |
}
|
548 |
|
549 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for order ' . $order_id . ' and payment ' . $payment->id . ', renewal order payment failed, order set to On-Hold for shop-owner review.' );
|
550 |
|
551 |
|
552 |
// Send a "Failed order" email to notify the admin
|
583 |
}
|
584 |
}
|
585 |
|
586 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for order ' . $order_id . ' and payment ' . $payment->id . ', regular order payment failed.' );
|
587 |
|
588 |
}
|
589 |
|
604 |
}
|
605 |
|
606 |
// Add messages to log
|
607 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for order ' . $order_id );
|
608 |
|
609 |
// Check that this payment is the most recent, based on Mollie Payment ID from post meta, do not cancel the order if it isn't
|
610 |
if ( $mollie_payment_id != $payment->id ) {
|
611 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for order ' . $order_id . ' and payment ' . $payment->id . ', not processed because of a newer pending payment ' . $mollie_payment_id );
|
612 |
|
613 |
$order->add_order_note( sprintf(
|
614 |
/* translators: Placeholder 1: payment method title, placeholder 2: payment ID */
|
@@ -69,6 +69,14 @@ class Mollie_WC_Payment_Payment extends Mollie_WC_Payment_Object {
|
|
69 |
'order_id' => $order->id,
|
70 |
),
|
71 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
} else {
|
73 |
|
74 |
$payment_description = strtr( $payment_description, array (
|
@@ -91,6 +99,13 @@ class Mollie_WC_Payment_Payment extends Mollie_WC_Payment_Object {
|
|
91 |
'order_id' => $order->get_id(),
|
92 |
),
|
93 |
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
}
|
95 |
|
96 |
if ( $store_customer ) {
|
@@ -156,7 +171,7 @@ class Mollie_WC_Payment_Payment extends Mollie_WC_Payment_Object {
|
|
156 |
if ( $payment->isPaid() ) {
|
157 |
|
158 |
// Add messages to log
|
159 |
-
Mollie_WC_Plugin::debug(
|
160 |
|
161 |
// WooCommerce 2.2.0 has the option to store the Payment transaction id.
|
162 |
$woo_version = get_option( 'woocommerce_version', 'Unknown' );
|
@@ -168,7 +183,7 @@ class Mollie_WC_Payment_Payment extends Mollie_WC_Payment_Object {
|
|
168 |
}
|
169 |
|
170 |
// Add messages to log
|
171 |
-
Mollie_WC_Plugin::debug(
|
172 |
|
173 |
$order->add_order_note( sprintf(
|
174 |
/* translators: Placeholder 1: payment method title, placeholder 2: payment ID */
|
@@ -184,7 +199,7 @@ class Mollie_WC_Payment_Payment extends Mollie_WC_Payment_Object {
|
|
184 |
$this->unsetCancelledMolliePaymentId( $order_id );
|
185 |
|
186 |
// Add messages to log
|
187 |
-
Mollie_WC_Plugin::debug(
|
188 |
|
189 |
// Subscription processing
|
190 |
if ( class_exists( 'WC_Subscriptions' ) && class_exists( 'WC_Subscriptions_Admin' ) ) {
|
@@ -205,7 +220,7 @@ class Mollie_WC_Payment_Payment extends Mollie_WC_Payment_Object {
|
|
205 |
} else {
|
206 |
|
207 |
// Add messages to log
|
208 |
-
Mollie_WC_Plugin::debug(
|
209 |
|
210 |
}
|
211 |
|
@@ -226,7 +241,7 @@ class Mollie_WC_Payment_Payment extends Mollie_WC_Payment_Object {
|
|
226 |
}
|
227 |
|
228 |
// Add messages to log
|
229 |
-
Mollie_WC_Plugin::debug(
|
230 |
|
231 |
$this->unsetActiveMolliePayment( $order_id, $payment->id );
|
232 |
$this->setCancelledMolliePaymentId( $order_id, $payment->id );
|
@@ -335,7 +350,7 @@ class Mollie_WC_Payment_Payment extends Mollie_WC_Payment_Object {
|
|
335 |
);
|
336 |
}
|
337 |
|
338 |
-
Mollie_WC_Plugin::debug(
|
339 |
|
340 |
}
|
341 |
|
@@ -356,11 +371,11 @@ class Mollie_WC_Payment_Payment extends Mollie_WC_Payment_Object {
|
|
356 |
}
|
357 |
|
358 |
// Add messages to log
|
359 |
-
Mollie_WC_Plugin::debug(
|
360 |
|
361 |
// Check that this payment is the most recent, based on Mollie Payment ID from post meta, do not cancel the order if it isn't
|
362 |
if ( $mollie_payment_id != $payment->id ) {
|
363 |
-
Mollie_WC_Plugin::debug(
|
364 |
|
365 |
$order->add_order_note( sprintf(
|
366 |
/* translators: Placeholder 1: payment method title, placeholder 2: payment ID */
|
@@ -433,11 +448,13 @@ class Mollie_WC_Payment_Payment extends Mollie_WC_Payment_Object {
|
|
433 |
if ( ! $payment_object ) {
|
434 |
Mollie_WC_Plugin::debug( __METHOD__ . ' - Could not find active Mollie payment for order ' . $order_id );
|
435 |
|
436 |
-
return
|
437 |
-
}
|
438 |
-
|
|
|
|
|
439 |
|
440 |
-
return
|
441 |
}
|
442 |
|
443 |
Mollie_WC_Plugin::debug( __METHOD__ . ' - Create refund - payment: ' . $payment_object->id . ', order: ' . $order_id . ', amount: ' . Mollie_WC_Plugin::getDataHelper()->getOrderCurrency( $order ) . $amount . ( ! empty( $reason ) ? ', reason: ' . $reason : '' ) );
|
69 |
'order_id' => $order->id,
|
70 |
),
|
71 |
);
|
72 |
+
|
73 |
+
// Add sequenceType for subscriptions first payments
|
74 |
+
if ( class_exists( 'WC_Subscriptions' ) && class_exists( 'WC_Subscriptions_Admin' ) ) {
|
75 |
+
if ( Mollie_WC_Plugin::getDataHelper()->isSubscription( $order->id ) ) {
|
76 |
+
$paymentRequestData['payment']['sequenceType'] = 'first';
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
} else {
|
81 |
|
82 |
$payment_description = strtr( $payment_description, array (
|
99 |
'order_id' => $order->get_id(),
|
100 |
),
|
101 |
);
|
102 |
+
|
103 |
+
// Add sequenceType for subscriptions first payments
|
104 |
+
if ( class_exists( 'WC_Subscriptions' ) && class_exists( 'WC_Subscriptions_Admin' ) ) {
|
105 |
+
if ( Mollie_WC_Plugin::getDataHelper()->isSubscription( $order->get_id() ) ) {
|
106 |
+
$paymentRequestData['sequenceType'] = 'first';
|
107 |
+
}
|
108 |
+
}
|
109 |
}
|
110 |
|
111 |
if ( $store_customer ) {
|
171 |
if ( $payment->isPaid() ) {
|
172 |
|
173 |
// Add messages to log
|
174 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for payment ' . $order_id );
|
175 |
|
176 |
// WooCommerce 2.2.0 has the option to store the Payment transaction id.
|
177 |
$woo_version = get_option( 'woocommerce_version', 'Unknown' );
|
183 |
}
|
184 |
|
185 |
// Add messages to log
|
186 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' WooCommerce payment_complete() processed and returned to ' . __METHOD__ . ' for payment ' . $order_id );
|
187 |
|
188 |
$order->add_order_note( sprintf(
|
189 |
/* translators: Placeholder 1: payment method title, placeholder 2: payment ID */
|
199 |
$this->unsetCancelledMolliePaymentId( $order_id );
|
200 |
|
201 |
// Add messages to log
|
202 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' processing paid payment via Mollie plugin fully completed for order ' . $order_id );
|
203 |
|
204 |
// Subscription processing
|
205 |
if ( class_exists( 'WC_Subscriptions' ) && class_exists( 'WC_Subscriptions_Admin' ) ) {
|
220 |
} else {
|
221 |
|
222 |
// Add messages to log
|
223 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' payment at Mollie not paid, so no processing for order ' . $order_id );
|
224 |
|
225 |
}
|
226 |
|
241 |
}
|
242 |
|
243 |
// Add messages to log
|
244 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for payment ' . $order_id );
|
245 |
|
246 |
$this->unsetActiveMolliePayment( $order_id, $payment->id );
|
247 |
$this->setCancelledMolliePaymentId( $order_id, $payment->id );
|
350 |
);
|
351 |
}
|
352 |
|
353 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for order ' . $order_id . ' and payment ' . $payment->id . ', regular payment failed.' );
|
354 |
|
355 |
}
|
356 |
|
371 |
}
|
372 |
|
373 |
// Add messages to log
|
374 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for order ' . $order_id );
|
375 |
|
376 |
// Check that this payment is the most recent, based on Mollie Payment ID from post meta, do not cancel the order if it isn't
|
377 |
if ( $mollie_payment_id != $payment->id ) {
|
378 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' called for order ' . $order_id . ' and payment ' . $payment->id . ', not processed because of a newer pending payment ' . $mollie_payment_id );
|
379 |
|
380 |
$order->add_order_note( sprintf(
|
381 |
/* translators: Placeholder 1: payment method title, placeholder 2: payment ID */
|
448 |
if ( ! $payment_object ) {
|
449 |
Mollie_WC_Plugin::debug( __METHOD__ . ' - Could not find active Mollie payment for order ' . $order_id );
|
450 |
|
451 |
+
return new WP_Error( '1', 'Could not find active Mollie payment for order ' . $order_id );
|
452 |
+
}
|
453 |
+
|
454 |
+
if ( ! $payment_object->isPaid() ) {
|
455 |
+
Mollie_WC_Plugin::debug( __METHOD__ . ' - Can not refund the unpaid payment ' . $payment_object->id . ' for order ' . $order_id );
|
456 |
|
457 |
+
return new WP_Error( '1', 'Can not refund an unpaid payment ' . $payment_object->id . ' for order ' . $order_id );
|
458 |
}
|
459 |
|
460 |
Mollie_WC_Plugin::debug( __METHOD__ . ' - Create refund - payment: ' . $payment_object->id . ', order: ' . $order_id . ', amount: ' . Mollie_WC_Plugin::getDataHelper()->getOrderCurrency( $order ) . $amount . ( ! empty( $reason ) ? ', reason: ' . $reason : '' ) );
|
@@ -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.0.
|
11 |
|
12 |
const DB_VERSION = '1.0';
|
13 |
const DB_VERSION_PARAM_NAME = 'mollie-db-version';
|
7 |
{
|
8 |
const PLUGIN_ID = 'mollie-payments-for-woocommerce';
|
9 |
const PLUGIN_TITLE = 'Mollie Payments for WooCommerce';
|
10 |
+
const PLUGIN_VERSION = '5.0.3';
|
11 |
|
12 |
const DB_VERSION = '1.0';
|
13 |
const DB_VERSION_PARAM_NAME = 'mollie-db-version';
|
@@ -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.0.
|
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.0.3
|
7 |
* Author: Mollie
|
8 |
* Author URI: https://www.mollie.com
|
9 |
* Requires at least: 3.8
|
@@ -3,7 +3,7 @@ Contributors: daanvm, davdebcom, l.vangunst, ndijkstra, robin-mollie
|
|
3 |
Tags: mollie, payments, woocommerce, payment gateway, e-commerce, credit card, ideal, sofort, bancontact, bitcoin, direct debit, subscriptions
|
4 |
Requires at least: 3.8
|
5 |
Tested up to: 4.9
|
6 |
-
Stable tag: 5.0.
|
7 |
Requires PHP: 5.6
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
@@ -181,6 +181,28 @@ Automatic updates should work like a charm; as always though, ensure you backup
|
|
181 |
|
182 |
== Changelog ==
|
183 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
= 5.0.2 - 11-10-2018 =
|
185 |
|
186 |
IMPORTANT
|
3 |
Tags: mollie, payments, woocommerce, payment gateway, e-commerce, credit card, ideal, sofort, bancontact, bitcoin, direct debit, subscriptions
|
4 |
Requires at least: 3.8
|
5 |
Tested up to: 4.9
|
6 |
+
Stable tag: 5.0.3
|
7 |
Requires PHP: 5.6
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
181 |
|
182 |
== Changelog ==
|
183 |
|
184 |
+
|
185 |
+
= 5.0.3 - 01-11-2018 =
|
186 |
+
|
187 |
+
IMPORTANT
|
188 |
+
This version requires PHP 5.6 or higher. If you are using an older PHP version, please read this article: [PHP & Mollie API v2](https://github.com/mollie/WooCommerce/wiki/PHP-&-Mollie-API-v2).
|
189 |
+
|
190 |
+
* Fix - Improvements to refunds: better log messages, show errors to shop-manager
|
191 |
+
* Fix - Remove option to set a description for payments, the new Orders API does not support this
|
192 |
+
* Fix - Update WooCommerce status constants in our plugin (cancelled and refunded)
|
193 |
+
* Fix - Make sure customer ID is stored by getting the payment object with all payments embedded
|
194 |
+
* Fix - Get and use correct _mollie_payment_id in setActiveMolliePaymentForOrders and setActiveMolliePaymentForSubscriptions
|
195 |
+
* Fix - Move adding of sequenceType into payment object
|
196 |
+
* Fix - Update Webship Giftcard logo to webshopgiftcard.svg
|
197 |
+
|
198 |
+
* Fix - Klarna/Orders API: Also send Address Line 2 to Mollie Orders API
|
199 |
+
* Fix - Klarna/Orders API: In billing and shipping address check that fields aren't just a space
|
200 |
+
* Fix - Klarna/Orders API: Decode HTML entities in product names before sending them to Mollie
|
201 |
+
* Fix - Klarna/Orders API: Don't fall back to Payments API if payment method is Klarna
|
202 |
+
* Fix - Klarna/Orders API: Only add shipping address if all required fields are present
|
203 |
+
* Fix - Klarna/Orders API: Always store Mollie order ID as _mollie_order_id
|
204 |
+
* Fix - Klarna/Orders API: Add fallback to getActiveMolliePayment and try to get payment ID from Mollie order if possible
|
205 |
+
|
206 |
= 5.0.2 - 11-10-2018 =
|
207 |
|
208 |
IMPORTANT
|