├── .gitignore
├── Paid_Membership_Pro
├── README.md
├── pmp-fondy-payment
│ ├── README.txt
│ ├── assets
│ │ └── js
│ │ │ └── fondy.js
│ ├── classes
│ │ ├── class.pmprogateway_fondy.php
│ │ └── fondy.lib.php
│ ├── languages
│ │ ├── pmp-fondy-payment-ru_RU.mo
│ │ ├── pmp-fondy-payment-ru_RU.po
│ │ └── pmp-fondy-payment.pot
│ ├── pmpro-fondy-gateway.php
│ ├── services
│ │ ├── fondy-ins.php
│ │ └── services.php
│ └── views
│ │ ├── payment-option-fields.php
│ │ └── submit-button.php
└── settings.png
├── README.md
├── Restrict_Content_Pro
├── README.md
└── fondy-restrict-gateway
│ ├── fondy
│ ├── fondy-admin.php
│ ├── fondy.inc.php
│ └── fondy.php
│ └── index.php
├── easy-digital-downloads-fondy
├── README.md
├── assets
│ └── images
│ │ └── fondy_logo.png
├── edd-fondy-payment.php
├── languages
│ ├── edd_fondy-ru_RU.mo
│ ├── edd_fondy-ru_RU.po
│ └── edd_fondy.pot
└── settings1.png
├── fondy-gravityforms-payment
├── README.md
├── class-gf-fondy.php
├── fondy.php
├── images
│ ├── active0.png
│ ├── active1.png
│ ├── add.png
│ ├── loading.gif
│ ├── remove.png
│ ├── tick.png
│ └── tooltip_tip.png
├── languages
│ └── gravityformsfondy.pot
└── settings1.png
└── woocommerce
├── README.md
├── fondy-woocommerce-payment-gateway
├── README.txt
├── assets
│ ├── css
│ │ ├── fondy_embedded.css
│ │ ├── fondy_seamless.css
│ │ └── fondy_seamless_old.css
│ ├── img
│ │ ├── fondy_logo_cards.svg
│ │ ├── icon-128x128.png
│ │ ├── logo.png
│ │ ├── master_visa_fondy.svg
│ │ ├── mc-logo.svg
│ │ └── visa-logo.svg
│ └── js
│ │ ├── fondy_embedded.js
│ │ ├── fondy_seamless.js
│ │ └── payform.min.js
├── fondy-woocommerce-payment-gateway.php
├── includes
│ ├── abstract-wc-fondy-payment-gateway.php
│ ├── class-wc-fondy-api.php
│ ├── compat
│ │ ├── class-wc-fondy-pre-orders-compat.php
│ │ └── class-wc-fondy-subscriptions-compat.php
│ ├── integration-types
│ │ ├── Fondy_Embedded.php
│ │ ├── Fondy_Hosted.php
│ │ └── Fondy_Seamless.php
│ └── payment-methods
│ │ ├── class-wc-gateway-fondy-bank.php
│ │ ├── class-wc-gateway-fondy-card.php
│ │ └── class-wc-gateway-fondy-localmethods.php
├── languages
│ ├── fondy-woocommerce-payment-gateway-ru_RU.mo
│ ├── fondy-woocommerce-payment-gateway-ru_RU.po
│ └── fondy-woocommerce-payment-gateway.pot
└── uninstall.php
└── settings1.png
/.gitignore:
--------------------------------------------------------------------------------
1 | /woocommerce/fondy-woocommerce-payment-gateway/*.po~
2 | /.idea
3 |
--------------------------------------------------------------------------------
/Paid_Membership_Pro/README.md:
--------------------------------------------------------------------------------
1 | wordpress
2 | =========
3 |
4 | # EN
5 |
6 | == Installation ==
7 |
8 | 1. Ensure you have latest version of plugin installed (Paid memberships Pro)
9 | 2. Upload the plugin files to the `/wp-content/plugins/`(or upload the plugin zip file using wp-admin.)
10 | 3. Activate the plugin through the 'Plugins' menu.
11 |
12 | == Configuration ==
13 |
14 | 1. Go to "Memberships > Payment Gateway & SSL Settings".
15 | 2. Choose method "Fondy". If it doesn't exist - activate the plugin.
16 | 4. Fill out the fields `Merchant ID:` and `Secret Key:`.
17 | 6. Save settings.
18 |
19 | ---------
20 |
21 | # RU
22 |
23 | == Установка ==
24 |
25 | 1. Убедитесь что у вас установлена последняя версия плагина. (Paid memberships Pro)
26 | 2. Распакуйте этот плагин в директорию `/wp-content/plugins/`(либо установите вложенный архив через панель администратора)
27 | 3. Активируйте плагин в меню "Плагины"
28 |
29 |
30 | == Конфигурация ==
31 |
32 | 1. Зайдите в "Memberships > Payment Gateway & SSL Settings"
33 | 2. Выберите метод "Fondy". Если его нет - активируйте плагин.
34 | 3. Заполните поля `Merchant ID:` и `Secret Key:` данными полученными от fondy.eu
35 | 4. Сохраните настройки
36 |
37 |
38 | ![Скриншот][1]
39 | ----
40 |
41 | [1]: https://raw.githubusercontent.com/cloudipsp/wordpress/master/Paid_Membership_Pro/settings.png
--------------------------------------------------------------------------------
/Paid_Membership_Pro/pmp-fondy-payment/README.txt:
--------------------------------------------------------------------------------
1 | === FONDY — Paid memberships Pro Payment Gateway ===
2 | Contributors: fondyeu
3 | Tags: payments, payment gateway, paid memberships pro, online payment, merchant
4 | Requires at least: 3.5
5 | Tested up to: 5.7
6 | Requires PHP: 5.6
7 | Stable tag: 1.0.9
8 | License: GPLv2 or later
9 | License URI: http://www.gnu.org/licenses/gpl-2.0.html
10 |
11 | FONDY payment gateway integration for Paid memberships Pro.
12 |
13 | == Description ==
14 | [This Paid memberships Pro payment plugin](https://fondy.eu/en/cms/wordpress/wordpress-paid-membership-pro/?utm_source=wordpress.org&utm_medium=cms) adds FONDY as payment gateway to plugin Paid memberships Pro. FONDY can accept VISA and MasterCard securely, quickly and easily on your store in minutes. Recurring payments, simple, straightforward pricing, top notch fraud intelligence, and 24/7 support.
15 |
16 | = Start with FONDY =
17 | [Create Free FONDY Account](https://portal.fondy.eu/mportal/#/account/registration?utm_source=wordpress.org&utm_medium=cms)
18 |
19 | == Features ==
20 | * Customize your checkout window ([Some styles](http://jsfiddle.net/8h65h91t/))
21 | * Easy configuration - only Merchant ID and Secret Key!
22 |
23 | == Allowed currencies ==
24 | With us your customers can make purchases in many currencies. FONDY support EUR, USD, GBP, RUB, UAH and some other.
25 |
26 | == Tariffs ==
27 | Only commission with payment. It is possible to adjust payment of the commission on itself, or to impose on the client.
28 |
29 | [See current tariffs on the FONDY website](https://fondy.eu/en/tariffs-fondy/)
30 |
31 |
32 | == Frequently Asked Questions ==
33 | Some answers you can find here [FAQ](https://fondy.eu/faq/?utm_source=wordpress.org&utm_medium=cms)
34 |
35 | == Installation ==
36 | 1. Ensure you have latest version of plugin installed (Paid memberships Pro)
37 | 2. Upload the plugin files to the `/wp-content/plugins/`(or upload the plugin zip file using wp-admin.)
38 | 3. Activate the plugin through the 'Plugins' menu.
39 |
40 | == Screenshots ==
41 | 1. FONDY options
42 | 2. Checkout page
43 |
44 | == Changelog ==
45 | = 1.0.9 =
46 | fix deprecation method calls for PHP 8
47 | = 1.0.8 =
48 | changed order_id generation logic
49 | = 1.0.7 =
50 | fix response_url redirect
51 | = 1.0.6 =
52 | add trial period support
53 | sandbox mode fix
54 | = 1.0.5 =
55 | add localization
56 | fix displaying currency and tax setting
57 | = 1.0.4 =
58 | fix duplicate orders
59 | = 1.0.0 =
60 | * First release
--------------------------------------------------------------------------------
/Paid_Membership_Pro/pmp-fondy-payment/assets/js/fondy.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | document.addEventListener("DOMContentLoaded", () => {
4 | /**
5 | * add membershiplevel trial settings description
6 | *
7 | * @see paid-memberships-pro/adminpages/membershiplevels.php:522
8 | * @since 1.0.6
9 | */
10 | //
11 | if (pagenow.includes('pmpro-membershiplevels') && fondy_param !== "undefined") {
12 | let trialDescriptionBlock = document.createElement('p'),
13 | trialDescriptionText = document.createElement('strong');
14 |
15 | trialDescriptionBlock.classList.add('description');
16 | trialDescriptionText.innerText = fondy_param.trialDescriptionText;
17 | trialDescriptionBlock.appendChild(trialDescriptionText);
18 | document.querySelector('.trial_info.recurring_info td').appendChild(trialDescriptionBlock);
19 | }
20 |
21 | /**
22 | * reinit gateway currency and tax settings
23 | *
24 | * @see paid-memberships-pro/paymentsettings.php:190
25 | * @since 1.0.5
26 | */
27 | if (pagenow.includes('pmpro-paymentsettings')) {
28 | let gatewaySelect = document.getElementById('gateway');
29 |
30 | if (gatewaySelect != null && gatewaySelect.value === 'fondy' && typeof pmpro_changeGateway === "function") {
31 | pmpro_changeGateway('fondy');
32 | }
33 | }
34 | });
--------------------------------------------------------------------------------
/Paid_Membership_Pro/pmp-fondy-payment/classes/class.pmprogateway_fondy.php:
--------------------------------------------------------------------------------
1 | isTestEnv = pmpro_getOption( "gateway_environment" ) === 'sandbox';
23 |
24 | parent::__construct($gateway);
25 | }
26 |
27 | public static function install()
28 | {
29 | global $wpdb;
30 |
31 | $wpdb->query("ALTER TABLE $wpdb->pmpro_membership_orders ADD fondy_token TEXT");
32 | }
33 |
34 | public static function uninstall()
35 | {
36 | global $wpdb;
37 |
38 | $wpdb->query("ALTER TABLE $wpdb->pmpro_membership_orders DROP COLUMN fondy_token");
39 | }
40 |
41 | /**
42 | * Run on WP init
43 | *
44 | * @since 1.8
45 | */
46 | public static function init()
47 | {
48 | //make sure fondy is a gateway option
49 | add_filter('pmpro_gateways', array('PMProGateway_fondy', 'pmpro_gateways'));
50 |
51 | //localization
52 | load_plugin_textdomain( 'pmp-fondy-payment', false, basename(PMPRO_FONDY_DIR).'/languages/' );
53 |
54 | //add plugin setting button
55 | add_filter('plugin_action_links_' . plugin_basename(PMPRO_FONDY_BASE_FILE),
56 | array('PMProGateway_fondy', 'plugin_action_links')
57 | );
58 |
59 | //add plugin doc button
60 | add_filter( 'plugin_row_meta', array('PMProGateway_fondy', 'plugin_row_meta'), 10, 2);
61 |
62 | //add fields to payment settings
63 | add_filter('pmpro_payment_options', array('PMProGateway_fondy', 'pmpro_payment_options'));
64 | add_filter('pmpro_payment_option_fields', array('PMProGateway_fondy', 'pmpro_payment_option_fields'), 10, 2);
65 |
66 | //code to add at checkout if fondy is the current gateway
67 | if (pmpro_getGateway() == "fondy") {
68 | //add_filter('pmpro_include_billing_address_fields', '__return_false');
69 | add_filter('pmpro_include_payment_information_fields', '__return_false');
70 | add_filter('pmpro_required_billing_fields', array('PMProGateway_fondy', 'pmpro_required_billing_fields'));
71 | add_filter('pmpro_checkout_default_submit_button', array(
72 | 'PMProGateway_fondy',
73 | 'pmpro_checkout_default_submit_button'
74 | ));
75 | add_filter('pmpro_checkout_before_change_membership_level', array(
76 | 'PMProGateway_fondy',
77 | 'pmpro_checkout_before_change_membership_level'
78 | ), 10, 2);
79 |
80 | // add js to some admin pmp pages
81 | add_filter('pmpro_payment_option_fields', array('PMProGateway_fondy', 'addFondyAdminPageJS'), 11, 2);
82 | add_filter('pmpro_membership_level_after_other_settings', array('PMProGateway_fondy', 'addFondyAdminPageJS'));
83 | }
84 | }
85 |
86 | /**
87 | * Make sure fondy is in the gateways list
88 | *
89 | * @since 1.8
90 | */
91 | public static function pmpro_gateways($gateways)
92 | {
93 | if (empty($gateways['fondy'])) {
94 | $gateways['fondy'] = __('Fondy', 'pmp-fondy-payment');
95 | }
96 |
97 | return $gateways;
98 | }
99 |
100 | public static function pmpro_required_billing_fields($fields)
101 | {
102 | //unset($fields['bfirstname']);
103 | //unset($fields['blastname']);
104 | unset($fields['baddress1']);
105 | unset($fields['bcity']);
106 | unset($fields['bstate']);
107 | unset($fields['bzipcode']);
108 | //unset($fields['bphone']);
109 | unset($fields['bemail']);
110 | unset($fields['bcountry']);
111 | unset($fields['CardType']);
112 | unset($fields['AccountNumber']);
113 | unset($fields['ExpirationMonth']);
114 | unset($fields['ExpirationYear']);
115 | unset($fields['CVV']);
116 |
117 | return $fields;
118 | }
119 |
120 | /**
121 | * Get a list of payment options that the fondy gateway needs/supports.
122 | *
123 | * @since 1.8
124 | */
125 | public static function getGatewayOptions()
126 | {
127 | $options = array(
128 | 'sslseal',
129 | 'nuclear_HTTPS',
130 | 'gateway_environment',
131 | 'fondy_merchantid',
132 | 'fondy_securitykey',
133 | 'currency',
134 | 'use_ssl',
135 | 'tax_state',
136 | 'tax_rate',
137 | 'accepted_credit_cards'
138 | );
139 |
140 | return $options;
141 | }
142 |
143 | /**
144 | * Set payment options for payment settings page.
145 | *
146 | * @since 1.8
147 | */
148 | public static function pmpro_payment_options($options)
149 | {
150 | //get fondy options
151 | $fondy_options = PMProGateway_fondy::getGatewayOptions();
152 |
153 | //merge with others.
154 | $options = array_merge($fondy_options, $options);
155 |
156 | return $options;
157 | }
158 |
159 | /**
160 | * Display fields for fondy options.
161 | *
162 | * @param $values
163 | * @param $gateway
164 | */
165 | public static function pmpro_payment_option_fields($values, $gateway)
166 | {
167 | include( PMPRO_FONDY_DIR .'/views/payment-option-fields.php' );
168 | }
169 |
170 | /**
171 | * Swap in our submit buttons.
172 | *
173 | * @since 1.8
174 | */
175 | public static function pmpro_checkout_default_submit_button($show)
176 | {
177 | $text_domain = 'pmpro';
178 |
179 | if (version_compare('1.8.13.6', PMPRO_VERSION, '<=')) {
180 | $text_domain = 'paid-memberships-pro';
181 | }
182 |
183 | include( PMPRO_FONDY_DIR .'/views/submit-button.php' );
184 |
185 | //don't show the default
186 | return false;
187 | }
188 |
189 | /**
190 | * @param $user_id
191 | * @param $morder
192 | */
193 | public static function pmpro_checkout_before_change_membership_level($user_id, $morder)
194 | {
195 | global $discount_code_id, $wpdb;
196 |
197 | //if no order, no need to pay
198 | if (empty($morder)) {
199 | return;
200 | }
201 |
202 | $morder->user_id = $user_id;
203 | $morder->saveOrder();
204 |
205 | //save discount code use
206 | if (!empty($discount_code_id)) {
207 | $wpdb->query("INSERT INTO $wpdb->pmpro_discount_codes_uses (code_id, user_id, order_id, timestamp) VALUES('" . $discount_code_id . "', '" . $user_id . "', '" . $morder->id . "', now())");
208 | }
209 |
210 | do_action("pmpro_before_send_to_fondy", $user_id, $morder);
211 |
212 | $morder->Gateway->sendToFondy($morder);
213 | }
214 |
215 |
216 | /**
217 | * add plugin setting button
218 | *
219 | * @param $links
220 | * @return mixed
221 | */
222 | public static function plugin_action_links($links)
223 | {
224 | $settings_link = ''. __("Settings") .'';
225 | array_unshift( $links, $settings_link );
226 |
227 | return $links;
228 | }
229 |
230 | /**
231 | * add plugin row buttons
232 | *
233 | * @param $links
234 | * @param $file
235 | * @return array
236 | */
237 | public static function plugin_row_meta($links, $file)
238 | {
239 | if(strpos($file, basename(PMPRO_FONDY_BASE_FILE)) !== false) {
240 | $row_links = array(
241 | '' . __('Docs', 'pmp-fondy-payment') . '',
242 | );
243 | $links = array_merge( $links, $row_links );
244 | }
245 |
246 | return $links;
247 | }
248 |
249 | /**
250 | * add js to admin page
251 | *
252 | * @since 1.0.6
253 | */
254 | public static function addFondyAdminPageJS()
255 | {
256 | wp_enqueue_script(
257 | 'fondy-pmp',
258 | plugins_url('assets/js/fondy.js', plugin_basename(PMPRO_FONDY_BASE_FILE)),
259 | [],
260 | PMPRO_FONDY_VERSION,
261 | true
262 | );
263 |
264 | if (sanitize_text_field($_REQUEST['page']) === 'pmpro-membershiplevels') {
265 | wp_localize_script('fondy-pmp', 'fondy_param', [
266 | 'trialDescriptionText' => 'Fondy integration currently does not support trial amounts greater than 0.', //todo l10n
267 | ]);
268 | }
269 | }
270 |
271 | /**
272 | * @param $order
273 | * @return bool
274 | */
275 | public function process(&$order)
276 | {
277 | if (empty($order->code)) {
278 | $order->code = $order->getRandomCode();
279 | }
280 |
281 | //clean up a couple values
282 | $order->payment_type = "Fondy";
283 | $order->CardType = "";
284 | $order->cardtype = "";
285 |
286 |
287 | $order->status = "review";
288 | $order->saveOrder();
289 |
290 | return true;
291 | }
292 |
293 | /**
294 | * @param MemberOrder $order
295 | */
296 | public function sendToFondy(&$order)
297 | {
298 | global $pmpro_currency;
299 |
300 | //taxes on initial amount
301 | $initial_payment = $order->InitialPayment;
302 | $initial_payment_tax = $order->getTaxForPrice($initial_payment);
303 | $initial_payment = round((float)$initial_payment + (float)$initial_payment_tax, 2);
304 |
305 | if (empty($order->code))
306 | $order->code = $order->getRandomCode();
307 |
308 | $fondy_args = array(
309 | 'merchant_data' => json_encode(array(
310 | 'name' => $order->billing->name,
311 | 'phone' => $order->billing->phone
312 | )),
313 | 'product_id' => $order->membership_id,
314 | 'order_id' => $order->code,
315 | 'merchant_id' => $this->isTestEnv ? FondyForm::TEST_MERCHANT_ID : pmpro_getOption("fondy_merchantid"),
316 | 'order_desc' => substr($order->membership_level->name . " at " . get_bloginfo("name"), 0, 127),
317 | 'amount' => round($initial_payment * 100),
318 | 'currency' => $pmpro_currency,
319 | 'response_url' => admin_url("admin-ajax.php") . "?action=fondy-ins",
320 | 'server_callback_url' => admin_url("admin-ajax.php") . "?action=fondy-ins",
321 | 'sender_email' => $order->Email,
322 | 'verification' => $order->InitialPayment === 0.0 ? 'Y' : 'N',
323 | );
324 |
325 | if (pmpro_isLevelRecurring($order->membership_level)) {
326 | $fondy_args['required_rectoken'] = 'Y';
327 | $fondy_args['recurring_data'] = $this->getRecurringData($order);
328 | $fondy_args['subscription'] = 'Y';
329 | $fondy_args['subscription_callback_url'] = admin_url("admin-ajax.php") . "?action=fondy-ins";
330 |
331 | //filter order before subscription. use with care.
332 | $order = apply_filters("pmpro_subscribe_order", $order, $this);
333 | $order->subscription_transaction_id = $order->code;
334 | }
335 |
336 | $order->status = "pending";
337 | $order->payment_transaction_id = $order->code;
338 | //update order
339 | $order->saveOrder();
340 |
341 | $response = $this->sendRequest($fondy_args);
342 | $body = wp_remote_retrieve_body($response);
343 | $code = wp_remote_retrieve_response_code($response);
344 | $message = wp_remote_retrieve_response_message($response);
345 | $out = json_decode($body, true);
346 |
347 | if ($code === 200 && $message === 'OK') {
348 | if (is_string($out)) {
349 | wp_parse_str($out, $out);
350 | }
351 |
352 | if (isset($out['response']['error_message'])) {
353 | $error = '
' . __('Error message: ', 'pmp-fondy-payment') . ' ' . $out['response']['error_message'] . '
';
354 | $error .= '' . __('Error code: ', 'pmp-fondy-payment') . ' ' . $out['response']['error_code'] . '
';
355 |
356 | wp_die($error, __('Error'), array('response' => '401'));
357 | } else {
358 | $url = json_decode(base64_decode($out['response']['data']), true)['order']['checkout_url'];
359 | wp_redirect($url);
360 | exit;
361 | }
362 | }
363 |
364 | exit; //mb add error handler
365 | }
366 |
367 | /**
368 | * @param MemberOrder $order
369 | * @return array
370 | */
371 | private function getRecurringData($order)
372 | {
373 | $every = intval($order->BillingFrequency);
374 | $period = strtolower($order->BillingPeriod);
375 | $startTS = strtotime('+ ' . $every . ' ' . $period);
376 |
377 | if ($order->BillingPeriod === 'Year'){ // fondy doesn't have 'year' period
378 | $every *= 12;
379 | $period = 'month';
380 | $startTS = strtotime('+ 1 month');
381 | }
382 |
383 | $recurringData = array(
384 | 'start_time' => date('Y-m-d', $startTS),
385 | 'amount' => round($order->PaymentAmount * 100),
386 | 'every' => $every,
387 | 'period' => $period,
388 | 'state' => 'shown_readonly',
389 | 'readonly' => 'Y'
390 | );
391 |
392 | if (!empty($order->TotalBillingCycles)){
393 | $recurringData["quantity"] = intval($order->TotalBillingCycles);
394 | }
395 |
396 | if (pmpro_isLevelTrial($order->membership_level)){
397 | $trialPeriod = strtolower($order->TrialBillingPeriod);
398 | $trialQuantity = intval($order->TrialBillingCycles);
399 |
400 | if ($order->TrialBillingPeriod === 'Year'){
401 | $trialPeriod = 'month';
402 | $trialQuantity *= 12;
403 | }
404 |
405 | //$recurringData["trial_amount"] = $order->TrialAmount; // w8 api realisation
406 | $recurringData["trial_period"] = $trialPeriod;
407 | $recurringData["trial_quantity"] = $trialQuantity;
408 | }
409 |
410 | return $recurringData;
411 | }
412 |
413 | /**
414 | * @param array $args
415 | * @return array|WP_Error
416 | */
417 | private function sendRequest($args)
418 | {
419 | $secretKey = $this->isTestEnv ? FondyForm::TEST_MERCHANT_KEY : pmpro_getOption("fondy_securitykey");
420 |
421 | $fields = [
422 | "version" => "2.0",
423 | "data" => base64_encode(json_encode(array('order' => $args))),
424 | "signature" => FondyForm::getSignature($args, $secretKey)
425 | ];
426 |
427 | $response = wp_remote_post(FondyForm::API_CHECKOUT_URL, array(
428 | 'headers' => array('Content-Type' => 'application/json'),
429 | 'timeout' => 45,
430 | 'method' => 'POST',
431 | 'sslverify' => true,
432 | 'httpversion' => '1.1',
433 | 'body' => json_encode(array('request' => $fields))
434 | )
435 | );
436 |
437 | if (is_wp_error($response)) {
438 | $error = '' . __('An unidentified error occurred.', 'pmp-fondy-payment') . '
';
439 | $error .= '' . $response->get_error_message() . '
';
440 |
441 | wp_die($error, __('Error'), array('response' => '401'));
442 | }
443 |
444 | return $response;
445 | }
446 | }
447 |
--------------------------------------------------------------------------------
/Paid_Membership_Pro/pmp-fondy-payment/classes/fondy.lib.php:
--------------------------------------------------------------------------------
1 | $data))));
17 | }
18 |
19 | public static function isPaymentValid($fondySettings, $response , $base64_data, $sign)
20 | {
21 | if ($fondySettings['merchant_id'] != $response['merchant_id']) {
22 |
23 | return 'An error has occurred during payment. Merchant data is incorrect.';
24 | }
25 | if (isset($response['response_signature_string'])){
26 | unset($response['response_signature_string']);
27 | }
28 | if (isset($response['signature'])){
29 | unset($response['signature']);
30 | }
31 | if ($sign != sha1($fondySettings['secret_key'] . FondyForm::SIGNATURE_SEPARATOR . $base64_data)) {
32 | return 'An error has occurred during payment. Signature is not valid.';
33 | }
34 | return true;
35 | }
36 | }
--------------------------------------------------------------------------------
/Paid_Membership_Pro/pmp-fondy-payment/languages/pmp-fondy-payment-ru_RU.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cloudipsp/wordpress/1fc23d2b1489c9ce74d07888dd01c78923a3c2f7/Paid_Membership_Pro/pmp-fondy-payment/languages/pmp-fondy-payment-ru_RU.mo
--------------------------------------------------------------------------------
/Paid_Membership_Pro/pmp-fondy-payment/languages/pmp-fondy-payment-ru_RU.po:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2020 PmP Fondy Payment
2 | # This file is distributed under the same license as the PmP Fondy Payment package.
3 | msgid ""
4 | msgstr ""
5 | "Project-Id-Version: PmP Fondy Payment 1.0.4\n"
6 | "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/pmp-fondy-payment\n"
7 | "POT-Creation-Date: 2020-10-12 15:41:15+00:00\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "PO-Revision-Date: 2020-MO-DA HO:MI+ZONE\n"
12 | "Last-Translator: FULL NAME \n"
13 | "Language-Team: LANGUAGE \n"
14 |
15 | #: classes/class.pmprogateway_fondy.php:84
16 | msgid "Fondy"
17 | msgstr "Fondy"
18 |
19 | #: classes/class.pmprogateway_fondy.php:137
20 | msgid "Settings"
21 | msgstr "Настройки"
22 |
23 | #: classes/class.pmprogateway_fondy.php:154
24 | msgid "View Documentation"
25 | msgstr "Просмотр документации"
26 |
27 | #: classes/class.pmprogateway_fondy.php:154
28 | msgid "Docs"
29 | msgstr "Документация"
30 |
31 | #: classes/class.pmprogateway_fondy.php:173
32 | msgid "Fondy Settings"
33 | msgstr "Настройки Fondy"
34 |
35 | #: classes/class.pmprogateway_fondy.php:178
36 | msgid "Merchant ID"
37 | msgstr "ID мерчанта"
38 |
39 | #: classes/class.pmprogateway_fondy.php:187
40 | msgid "Payment key"
41 | msgstr "Ключ платежа"
42 |
43 | #: classes/class.pmprogateway_fondy.php:422
44 | msgid "An unidentified error occurred."
45 | msgstr "Произошла неопознанная ошибка."
46 |
47 | #: classes/class.pmprogateway_fondy.php:434
48 | msgid "Error message: "
49 | msgstr "Сообщение об ошибке: "
50 |
51 | #: classes/class.pmprogateway_fondy.php:435
52 | msgid "Error code: "
53 | msgstr "Код ошибки: "
54 | #. Plugin Name of the plugin/theme
55 | msgid "PmP Fondy Payment"
56 | msgstr "PmP Fondy Payment"
57 |
58 | #. Plugin URI of the plugin/theme
59 | msgid "https://fondy.eu"
60 | msgstr "https://fondy.ru"
61 |
62 | #. Description of the plugin/theme
63 | msgid "Fondy Gateway for Paid Memberships Pro"
64 | msgstr "Fondy Gateway для Paid Memberships Pro"
65 |
66 | #. Author of the plugin/theme
67 | msgid "FONDY - Unified Payment Platform"
68 | msgstr "FONDY - Unified Payment Platform"
69 |
70 | #. Author URI of the plugin/theme
71 | msgid "https://fondy.eu/"
72 | msgstr "https://fondy.ru/"
73 |
--------------------------------------------------------------------------------
/Paid_Membership_Pro/pmp-fondy-payment/languages/pmp-fondy-payment.pot:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2020 PmP Fondy Payment
2 | # This file is distributed under the same license as the PmP Fondy Payment package.
3 | msgid ""
4 | msgstr ""
5 | "Project-Id-Version: PmP Fondy Payment 1.0.4\n"
6 | "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/pmp-fondy-payment\n"
7 | "POT-Creation-Date: 2020-10-12 15:41:15+00:00\n"
8 | "MIME-Version: 1.0\n"
9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "PO-Revision-Date: 2020-MO-DA HO:MI+ZONE\n"
12 | "Last-Translator: FULL NAME \n"
13 | "Language-Team: LANGUAGE \n"
14 |
15 | #: classes/class.pmprogateway_fondy.php:84
16 | msgid "Fondy"
17 | msgstr ""
18 |
19 | #: classes/class.pmprogateway_fondy.php:137
20 | msgid "Settings"
21 | msgstr ""
22 |
23 | #: classes/class.pmprogateway_fondy.php:154
24 | msgid "View Documentation"
25 | msgstr ""
26 |
27 | #: classes/class.pmprogateway_fondy.php:154
28 | msgid "Docs"
29 | msgstr ""
30 |
31 | #: classes/class.pmprogateway_fondy.php:173
32 | msgid "Fondy Settings"
33 | msgstr ""
34 |
35 | #: classes/class.pmprogateway_fondy.php:178
36 | msgid "Merchant ID"
37 | msgstr ""
38 |
39 | #: classes/class.pmprogateway_fondy.php:187
40 | msgid "Payment key"
41 | msgstr ""
42 |
43 | #: classes/class.pmprogateway_fondy.php:422
44 | msgid "An unidentified error occurred."
45 | msgstr ""
46 |
47 | #: classes/class.pmprogateway_fondy.php:434
48 | msgid "Error message: "
49 | msgstr ""
50 |
51 | #: classes/class.pmprogateway_fondy.php:435
52 | msgid "Error code: "
53 | msgstr ""
54 | #. Plugin Name of the plugin/theme
55 | msgid "PmP Fondy Payment"
56 | msgstr ""
57 |
58 | #. Plugin URI of the plugin/theme
59 | msgid "https://fondy.eu"
60 | msgstr ""
61 |
62 | #. Description of the plugin/theme
63 | msgid "Fondy Gateway for Paid Memberships Pro"
64 | msgstr ""
65 |
66 | #. Author of the plugin/theme
67 | msgid "FONDY - Unified Payment Platform"
68 | msgstr ""
69 |
70 | #. Author URI of the plugin/theme
71 | msgid "https://fondy.eu/"
72 | msgstr ""
73 |
--------------------------------------------------------------------------------
/Paid_Membership_Pro/pmp-fondy-payment/pmpro-fondy-gateway.php:
--------------------------------------------------------------------------------
1 | $val) {
24 | $_POST[esc_sql($key)] = esc_sql($val);
25 | }
26 | }
27 |
28 | if (isset($_POST['version'])){
29 | $base64_data = esc_sql($_POST['data']);
30 | $signature = esc_sql((string)$_POST['signature']);
31 | $response = json_decode(base64_decode(esc_sql($_POST['data'])), true)['order'];
32 |
33 | /**
34 | * Validate Fondy answer
35 | */
36 | if (pmpro_fondy_validate_sign($base64_data, $signature, $response, $gateway_environment === 'sandbox') !== true) {
37 | pmpro_fondy_fnlog("Signature Invalid.");
38 | pmpro_fondy_exit();
39 | }
40 | } elseif (!empty($_POST['order_id']) && !empty($_POST['merchant_id'])) { // todo remove this elseif after checkout2 response_url fix
41 | $merchantID = $gateway_environment === 'sandbox' ? FondyForm::TEST_MERCHANT_ID : pmpro_getOption("fondy_merchantid");
42 | if ($merchantID === $_POST['merchant_id']){
43 | $response = esc_sql($_POST);
44 | }
45 | }
46 |
47 | if (empty($response)) {
48 | pmpro_fondy_fnlog("Empty response.");
49 | pmpro_fondy_exit();
50 | }
51 |
52 | //assign posted variables to local variables
53 | $amount = (int)$response['amount'];
54 | $actual_amount = (int)$response['actual_amount'];
55 | $subscr_id = (int)$response['product_id'];
56 | $rectoken = esc_sql((string)$response['rectoken']);
57 | $order_id = esc_sql((string)$response['order_id']);
58 | $customer_email = esc_sql((string)$response['sender_email']);
59 | $system_payment_id = (int)$response['payment_id'];
60 | $order_status = esc_sql((string)$response['order_status']);
61 |
62 | if ($order_status == FondyForm::ORDER_APPROVED) {
63 |
64 | $morder = new MemberOrder($order_id);
65 | $morder->getMembershipLevel();
66 |
67 | $morder->getUser();
68 |
69 | if (isset($rectoken) and !empty($rectoken)) {
70 | $id = $morder->id;
71 | $rec = $wpdb->query($wpdb->prepare("
72 | UPDATE `$wpdb->pmpro_membership_orders`
73 | SET `fondy_token` = %s
74 | WHERE id = %d",
75 | array($rectoken, $id)
76 | ));
77 | }
78 |
79 | pmpro_fondy_fnlog("ORDER_CREATED: ORDER: " . var_export($morder, true) . "\n---\n");
80 |
81 | if (!empty($morder) && !empty($morder->status) && $morder->status == 'success') {
82 | $last_subscr_order = new MemberOrder();
83 | $last_subscr_order->getLastMemberOrderBySubscriptionTransactionID($system_payment_id);
84 | if (!empty($response['parent_order_id'])) {
85 | $order_old_id = esc_sql((string)$response['parent_order_id']);
86 | } else {
87 | $order_old_id = $order_id;
88 | }
89 | $order_info = array(
90 | 'amount' => $amount,
91 | 'actual_amount' => $actual_amount,
92 | 'order_id' => $order_id,
93 | 'payment_id' => $system_payment_id,
94 | );
95 | pmpro_fondy_insSaveOrder($order_old_id, $last_subscr_order, $order_info);
96 | pmpro_fondy_fnlog("Checkout was already processed (" . $morder->code . "). Reccuring this request.");
97 |
98 | } elseif (pmpro_fondy_insChangeMembershipLevel($order_id, $morder, $system_payment_id, $rectoken)) {
99 | pmpro_fondy_fnlog("Checkout processed (" . $morder->code . ") success!");
100 | } else {
101 | pmpro_fondy_fnlog("ERROR: Couldn't change level for order (" . $morder->code . ").");
102 | }
103 |
104 | if (isset($callback)) // return 200 to callback
105 | wp_die();
106 |
107 | pmpro_fondy_exit(pmpro_url("confirmation", "?level=" . $morder->membership_level->id));
108 | } else {
109 | pmpro_fondy_fnlog("ERROR: (" . $order_status . ").");
110 | }
111 |
112 |
113 | function pmpro_fondy_fnlog($s)
114 | {
115 | global $fondy_logstr;
116 | $fondy_logstr .= "\t" . $s . "\n";
117 | }
118 |
119 | function pmpro_fondy_exit($redirect = false)
120 | {
121 | global $fondy_logstr;
122 |
123 | $fondy_logstr = var_export($_REQUEST, true) . "Logged On: " . date("m/d/Y H:i:s") . "\n" . $fondy_logstr . "\n-------------\n";
124 |
125 | //log in file or email?
126 | if (defined('FONDY_PMPRO_DEBUG') && FONDY_PMPRO_DEBUG === "log") {
127 | //file
128 | $loghandle = fopen(dirname(__FILE__) . "/../logs/fondy.txt", "a+");
129 | fwrite($loghandle, $fondy_logstr);
130 | fclose($loghandle);
131 | } elseif (defined('FONDY_PMPRO_DEBUG')) {
132 | //email
133 | if (strpos(FONDY_PMPRO_DEBUG, "@")) {
134 | $log_email = FONDY_PMPRO_DEBUG;
135 | } //constant defines a specific email address
136 | else {
137 | $log_email = get_option("admin_email");
138 | }
139 |
140 | wp_mail($log_email, get_option("blogname") . " Fondy log", nl2br($fondy_logstr));
141 | }
142 |
143 | if (!empty($redirect)) {
144 | wp_redirect($redirect);
145 | }
146 |
147 | exit;
148 | }
149 |
150 | function pmpro_fondy_validate_sign($base64_data, $sign, $response = array(), $isTestEnv = false)
151 | {
152 | $settings = array(
153 | 'merchant_id' => $isTestEnv ? FondyForm::TEST_MERCHANT_ID : pmpro_getOption("fondy_merchantid"),
154 | 'secret_key' => $isTestEnv ? FondyForm::TEST_MERCHANT_KEY : pmpro_getOption("fondy_securitykey"),
155 | );
156 |
157 | return FondyForm::isPaymentValid($settings, $response, $base64_data, $sign);
158 | }
159 |
160 | function pmpro_fondy_insChangeMembershipLevel($txn_id, &$morder, $payment_id, $rectoken)
161 | {
162 | $recurring = $rectoken;
163 | //filter for level
164 | $morder->membership_level = apply_filters("pmpro_inshandler_level", $morder->membership_level, $morder->user_id);
165 |
166 | //set the start date to current_time('mysql') but allow filters (documented in preheaders/checkout.php)
167 | $startdate = apply_filters("pmpro_checkout_start_date", "'" . current_time('mysql') . "'", $morder->user_id, $morder->membership_level);
168 |
169 | //fix expiration date
170 | if (!empty($morder->membership_level->expiration_number)) {
171 | $enddate = "'" . date("Y-m-d", strtotime("+ " . $morder->membership_level->expiration_number . " " . $morder->membership_level->expiration_period, current_time("timestamp"))) . "'";
172 | } else {
173 | $enddate = "NULL";
174 | }
175 |
176 | //filter the enddate (documented in preheaders/checkout.php)
177 | $enddate = apply_filters("pmpro_checkout_end_date", $enddate, $morder->user_id, $morder->membership_level, $startdate);
178 |
179 | //get discount code
180 | $morder->getDiscountCode();
181 | if (!empty($morder->discount_code)) {
182 | //update membership level
183 | $morder->getMembershipLevel(true);
184 | $discount_code_id = $morder->discount_code->id;
185 | } else {
186 | $discount_code_id = "";
187 | }
188 |
189 |
190 | //custom level to change user to
191 | $custom_level = array(
192 | 'user_id' => $morder->user_id,
193 | 'membership_id' => $morder->membership_level->id,
194 | 'code_id' => $discount_code_id,
195 | 'initial_payment' => $morder->membership_level->initial_payment,
196 | 'billing_amount' => $morder->membership_level->billing_amount,
197 | 'cycle_number' => $morder->membership_level->cycle_number,
198 | 'cycle_period' => $morder->membership_level->cycle_period,
199 | 'billing_limit' => $morder->membership_level->billing_limit,
200 | 'trial_amount' => $morder->membership_level->trial_amount,
201 | 'trial_limit' => $morder->membership_level->trial_limit,
202 | 'startdate' => $startdate,
203 | 'enddate' => $enddate
204 | );
205 |
206 | global $pmpro_error, $wpdb;
207 | if (!empty($pmpro_error)) {
208 | pmpro_fondy_fnlog($pmpro_error);
209 | }
210 |
211 | if (pmpro_changeMembershipLevel($custom_level, $morder->user_id) !== false) {
212 | //update order status and transaction ids
213 | $morder->status = "success";
214 | $morder->payment_transaction_id = $txn_id;
215 | if ($recurring) {
216 | $morder->subscription_transaction_id = $payment_id;
217 | } else {
218 | $morder->subscription_transaction_id = '';
219 | }
220 | $morder->saveOrder();
221 |
222 | //add discount code use
223 | if (!empty($discount_code) && !empty($use_discount_code)) {
224 | $wpdb->query("INSERT INTO $wpdb->pmpro_discount_codes_uses (code_id, user_id, order_id, timestamp) VALUES('" . esc_sql($discount_code_id) . "', '" . esc_sql($morder->user_id) . "', '" . esc_sql($morder->id) . "', '" . current_time('mysql') . "')");
225 | }
226 |
227 |
228 | //hook
229 | do_action("pmpro_after_checkout", $morder->user_id, $morder);
230 |
231 | //setup some values for the emails
232 | if (!empty($morder)) {
233 | $invoice = new MemberOrder($morder->id);
234 | } else {
235 | $invoice = null;
236 | }
237 |
238 | pmpro_fondy_fnlog("CHANGEMEMBERSHIPLEVEL: ORDER: " . var_export($morder, true) . "\n---\n");
239 |
240 | $user = get_userdata($morder->user_id);
241 |
242 | if (empty($user)) {
243 | return false;
244 | }
245 |
246 | $user->membership_level = $morder->membership_level; //make sure they have the right level info
247 |
248 | //send email to member
249 | $pmproemail = new PMProEmail();
250 | $pmproemail->sendCheckoutEmail($user, $invoice);
251 |
252 | //send email to admin
253 | $pmproemail->sendCheckoutAdminEmail($user, $invoice);
254 |
255 | return true;
256 | } else {
257 | return false;
258 | }
259 | }
260 |
261 | function pmpro_fondy_insSaveOrder($txn_id, $last_order, $order_info = array())
262 | {
263 | global $wpdb;
264 |
265 | //check that txn_id has not been previously processed
266 | $old_txn = $wpdb->get_var("SELECT payment_transaction_id FROM $wpdb->pmpro_membership_orders WHERE payment_transaction_id = '" . $txn_id . "' LIMIT 1");
267 |
268 | if (empty($old_txn)) {
269 |
270 | //save order
271 | $user_id = $last_order->user_id;
272 | $user = get_userdata($user_id);
273 | $user->membership_level = pmpro_getMembershipLevelForUser($user_id);
274 | $morder = new MemberOrder();
275 | $morder->user_id = $last_order->user_id;
276 | $morder->membership_id = $last_order->membership_id;
277 |
278 | if (isset($order_info['amount'])) {
279 | $morder->subtotal = $order_info['amount'] / 100;
280 | } elseif (isset($order_info['actual_amount'])) {
281 | $morder->total = (!empty($order_info['amount']) ? $order_info['amount'] / 100 : 0);
282 | }
283 |
284 | $morder->payment_transaction_id = $order_info['order_id'];
285 | $morder->subscription_transaction_id = $order_info['payment_id'];
286 |
287 | $morder->gateway = $last_order->gateway;
288 | $morder->gateway_environment = $last_order->gateway_environment;
289 | $morder->billing = new stdClass();
290 |
291 | $morder->billing->street = $last_order->billing->street;
292 | $morder->billing->city = $last_order->billing->city;
293 | $morder->billing->state = $last_order->billing->state;
294 | $morder->billing->zip = $last_order->billing->zip;
295 | $morder->billing->country = $last_order->billing->country;
296 | $morder->billing->phone = $last_order->billing->phone;
297 | $morder->status = "success";
298 | $morder->payment_type = "Fondy";
299 | //save
300 | $morder->saveOrder();
301 | $morder->getMemberOrderByID($morder->id);
302 |
303 | //email the user their invoice
304 | $pmproemail = new PMProEmail();
305 | $pmproemail->sendInvoiceEmail(get_userdata($last_order->user_id), $morder);
306 |
307 | pmpro_fondy_fnlog("New order (" . $morder->code . ") created.");
308 | do_action('pmpro_subscription_payment_completed', $morder);
309 |
310 | return $morder->code;
311 | } else {
312 | pmpro_fondy_fnlog("Duplicate Transaction ID: " . $txn_id);
313 | return false;
314 | }
315 | }
--------------------------------------------------------------------------------
/Paid_Membership_Pro/pmp-fondy-payment/services/services.php:
--------------------------------------------------------------------------------
1 |
5 | style="display: none;">
7 |
8 |
9 | |
10 |
11 | style="display: none;">
12 |
13 |
14 | |
15 |
16 |
18 | |
19 |
20 | style="display: none;">
21 |
22 |
23 | |
24 |
25 |
27 | |
28 |
--------------------------------------------------------------------------------
/Paid_Membership_Pro/pmp-fondy-payment/views/submit-button.php:
--------------------------------------------------------------------------------
1 |
5 | ">
7 |
8 |
10 |
--------------------------------------------------------------------------------
/Paid_Membership_Pro/settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cloudipsp/wordpress/1fc23d2b1489c9ce74d07888dd01c78923a3c2f7/Paid_Membership_Pro/settings.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Fondy WordPress payment integration
2 | ### Choose plugin and unzip from folder
3 |
4 | 1. For **Easy Digital Downloads** plugin — ```easy-digital-downloads-fondy``` folder
5 | 2. For **Paid Membership Pro** plugin — ```Paid_Membership_Pro``` folder
6 | 3. For **Restrict Content Pro** plugin — ```Restrict_Content_Pro``` folder
7 | 4. For **WooCommerce + Subscription** plugin — ```woocommerce_subscription``` folder
8 | 5. For **WooCommerce** plugin — ```woocommerce``` folder
9 |
--------------------------------------------------------------------------------
/Restrict_Content_Pro/README.md:
--------------------------------------------------------------------------------
1 |
2 | **Wordpress + (Restrict Content Pro)**
3 |
4 | # RU
5 |
6 | *Установка*
7 |
8 | 1. Убедитесь что у вас установлена последняя версия плагина Restrict Content Pro
9 | 2. Распакуйте этот плагин в директорию `/wp-content/plugins/`(либо установите вложенный архив через панель администратора)
10 | 3. Активируйте плагин в меню "Плагины"
11 |
12 | *Конфигурация*
13 |
14 | 1. Зайдите в "Ограничения > Настройки > Платежи" найдите Fondy и активируйте
15 | 2. Введите во вкладке ```Fondy RCP payment``` параметры Fondy Secret Key, Fondy MID.
16 | 3. Сохраните настройки.
17 |
--------------------------------------------------------------------------------
/Restrict_Content_Pro/fondy-restrict-gateway/fondy/fondy-admin.php:
--------------------------------------------------------------------------------
1 | (int)$data['fondy_merchant_id'],
45 | 'fondy_secret' => (string)$data['fondy_secret'],
46 | 'fondy_reccuring' => (bool)$data['fondy_reccuring']
47 | );
48 | return $return;
49 | }
50 |
51 | function rcp_fondy_admin_page()
52 | {
53 | global $rcp_fondy_options;
54 | ?>
55 |
56 |
57 |
115 | $v) {
19 | $str .= self::SIGNATURE_SEPARATOR . $v;
20 | }
21 | if ($encoded) {
22 | return sha1($str);
23 | } else {
24 | return $str;
25 | }
26 | }
27 |
28 | public static function isPaymentValid($fondySettings, $response, $base64_data, $sign)
29 | {
30 | if ($fondySettings['mid'] != $response['merchant_id']) {
31 | return 'An error has occurred during payment. Merchant data is incorrect.';
32 | }
33 | if (isset($response['response_signature_string'])) {
34 | unset($response['response_signature_string']);
35 | }
36 | if (isset($response['signature'])) {
37 | unset($response['signature']);
38 | }
39 | if (isset($response['merchant_data'])) {
40 | $response['merchant_data'] = stripslashes($response['merchant_data']);
41 | }
42 | if (!empty($base64_data)) {
43 | if ($sign != sha1($fondySettings['secret_key'] . '|' . $base64_data)) {
44 | return 'An error has occurred during payment. Signature is not valid.';
45 | }
46 | } elseif ($sign != self::getSignature($response, $fondySettings['secret_key'])) {
47 | return 'An error has occurred during payment. Signature is not valid.';
48 | }
49 |
50 | return true;
51 | }
52 | }
--------------------------------------------------------------------------------
/Restrict_Content_Pro/fondy-restrict-gateway/fondy/fondy.php:
--------------------------------------------------------------------------------
1 | supports[] = 'one-time';
19 | $this->supports[] = 'recurring';
20 | $this->supports[] = 'fees';
21 | $this->supports[] = 'trial';
22 | $this->api_endpoint = 'https://api.fondy.eu/api/checkout/url/';
23 |
24 | if (!class_exists('Fondy_API')) {
25 | require_once RCP_FONDY_DIR . '/fondy/fondy.inc.php';
26 | }
27 | }
28 |
29 | /**
30 | * Process registration
31 | *
32 | * @since 2.1
33 | */
34 | public function process_signup()
35 | {
36 | global $rcp_options;
37 | global $rcp_fondy_options;
38 | global $rcp_payments_db;
39 |
40 | if ($this->auto_renew) {
41 | $amount = $this->initial_amount;
42 | } else {
43 | $amount = $this->initial_amount;
44 | }
45 |
46 | $member = new RCP_Member($this->user_id);
47 |
48 | if ($this->is_trial()) {
49 | $amount = 1;
50 | }
51 | /**
52 | * Cancel existing subscription if the member just upgraded to another one.
53 | */
54 | if ($member->just_upgraded() && $member->can_cancel()) {
55 | $cancelled = $member->cancel_payment_profile(false);
56 | }
57 |
58 | if ($amount == 0) {
59 | if ($this->payment->fees != 0) {
60 | $amount = $this->payment->fees;
61 | } else {
62 | $error = '' . __('Ошибка, для смены тарифа свяжитесь с администратором', 'fondy_rcp') . '
';
63 | wp_die($error, __('Error', 'fondy_rcp'), array('response' => '401'));
64 | }
65 | }
66 |
67 | $return = add_query_arg(array('rcp-confirm' => 'fondy', 'membership_id' => $this->membership->get_id()), get_permalink($rcp_options['registration_page']));
68 | if (isset($this->return_url)) {
69 | $return = $this->return_url;
70 | }
71 |
72 | $fondy_args = array(
73 | 'order_id' => $this->payment->id . '#' . $member->ID . '#' . time(),
74 | 'merchant_id' => $rcp_fondy_options['fondy_merchant_id'],
75 | 'order_desc' => $this->subscription_name,
76 | 'amount' => round($amount * 100),
77 | 'merchant_data' => json_encode(array(
78 | 'subtotal' => $this->amount,
79 | 'discount_amount' => $this->payment->discount_amount,
80 | 'subscription_key' => $this->payment->subscription_key,
81 | 'signup_fee' => $this->signup_fee
82 | )),
83 | 'currency' => $this->currency,
84 | 'server_callback_url' => add_query_arg('listener', 'fondy', home_url('index.php')),
85 | 'response_url' => $return,
86 | 'sender_email' => $member->user_email,
87 | 'verification' => $this->is_trial() ? 'y' : 'n'
88 | );
89 |
90 | if ($rcp_fondy_options['fondy_reccuring'] == true and ($this->auto_renew || $this->is_trial())) {
91 | $fondy_args['recurring_data'] = array(
92 | 'start_time' => date('Y-m-d', strtotime($this->is_trial() ? $this->subscription_start_date : '+ ' . $this->subscription_data['length'] . ' ' . $this->subscription_data['length_unit'])),
93 | 'amount' => round($this->subscription_data['recurring_price'] * 100),
94 | 'every' => intval($this->subscription_data['length']),
95 | 'period' => $this->subscription_data['length_unit'],
96 | 'state' => 'y',
97 | 'readonly' => 'y'
98 | );
99 | if ($this->subscription_data['length_unit'] == 'year') {
100 | $fondy_args['recurring_data']['start_time'] = date('Y-m-d', strtotime('+ ' . (intval($this->subscription_data['length']) * 12) . ' ' . 'month'));
101 | $fondy_args['recurring_data']['every'] = intval($this->subscription_data['length']) * 12;
102 | $fondy_args['recurring_data']['period'] = 'month';
103 | }
104 | $fondy_args['subscription'] = 'Y';
105 | $fondy_args['subscription_callback_url'] = add_query_arg('listener', 'fondy', home_url('index.php'));
106 | } else {
107 | $fondy_args['subscription'] = 'N';
108 | }
109 |
110 | $fields = [
111 | "version" => "2.0",
112 | "data" => base64_encode(json_encode(array('order' => $fondy_args))),
113 | "signature" => sha1($rcp_fondy_options['fondy_secret'] . '|' . base64_encode(json_encode(array('order' => $fondy_args))))
114 | ];
115 |
116 | $request = wp_remote_post($this->api_endpoint, array(
117 | 'headers' => array('Content-Type' => 'application/json'),
118 | 'timeout' => 45,
119 | 'method' => 'POST',
120 | 'sslverify' => true,
121 | 'httpversion' => '1.1',
122 | 'body' => json_encode(array('request' => $fields))
123 | )
124 | );
125 | $body = wp_remote_retrieve_body($request);
126 | $code = wp_remote_retrieve_response_code($request);
127 | $message = wp_remote_retrieve_response_message($request);
128 | $out = json_decode($body, true);
129 |
130 |
131 | if (is_wp_error($request)) {
132 |
133 | $error = '' . __('An unidentified error occurred.', 'fondy_rcp') . '
';
134 | $error .= '' . $request->get_error_message() . '
';
135 |
136 | wp_die($error, __('Error', 'fondy_rcp'), array('response' => '401'));
137 |
138 | } elseif (200 == $code && 'OK' == $message) {
139 |
140 | if (is_string($out)) {
141 | wp_parse_str($out, $out);
142 | }
143 | if (isset($out['response']['error_message'])) {
144 |
145 | $error = '' . __('Error message: ', 'fondy_rcp') . ' ' . $out['response']['error_message'] . '
';
146 | $error .= '' . __('Error code: ', 'fondy_rcp') . ' ' . $out['response']['error_message'] . '
';
147 |
148 | wp_die($error, __('Error', 'fondy_rcp'), array('response' => '401'));
149 |
150 | } else {
151 | $url = json_decode(base64_decode($out['response']['data']), true)['order']['checkout_url'];
152 | wp_redirect($url);
153 | exit;
154 |
155 | }
156 | }
157 | }
158 |
159 | /**
160 | * Add credit card form
161 | *
162 | * @return string
163 | * @since 2.1
164 | */
165 | public function fields()
166 | {
167 | $currency = get_option('rcp_settings')['currency'] ?? 'USD';
168 |
169 | return ($_POST['level_has_trial']) === 'true' ? sprintf(__('Вы будете перенаправлены на страницу оплаты для привязки карты
При этом будет удержана сумма 1 %s с последующим возвращением', 'fondy_rcp'), $currency) : __('Вы будете перенаправлены на страницу оплаты', 'fondy_rcp');
170 | }
171 |
172 | /**
173 | * Validate additional fields during registration submission
174 | *
175 | * @since 2.1
176 | */
177 | public function validate_fields()
178 | {
179 | return true;
180 | }
181 |
182 | /**
183 | * Process webhooks
184 | *
185 | * @since 2.1
186 | */
187 | public function process_webhooks()
188 | {
189 | if (!isset($_GET['listener']) || $_GET['listener'] != 'fondy') {
190 | return;
191 | }
192 |
193 | global $rcp_fondy_options;
194 |
195 | rcp_log('Starting to process Fondy webhook.');
196 |
197 | if (empty($_POST)) {
198 | $callback = json_decode(file_get_contents("php://input"));
199 |
200 | if (empty($callback)) {
201 | die('go away!');
202 | }
203 |
204 | $_POST = [];
205 |
206 | foreach ($callback as $key => $val) {
207 | $_POST[esc_sql($key)] = esc_sql($val);
208 | }
209 | }
210 |
211 | $posted = apply_filters('rcp_ipn_post', $_POST);
212 | $sign = $posted['signature'];
213 |
214 | if (isset($posted['data'])) { // new protocol
215 | $base64_data = $posted['data'];
216 | $posted = json_decode(base64_decode($posted['data']), true)['order'];
217 | }
218 |
219 | $fondySettings = array(
220 | 'mid' => $rcp_fondy_options['fondy_merchant_id'],
221 | 'secret_key' => $rcp_fondy_options['fondy_secret']
222 | );
223 | $paymentInfo = Fondy_API::isPaymentValid($fondySettings, $posted, $base64_data ?? '', $sign);
224 |
225 | if ($paymentInfo === true) {
226 | $exploded = explode('#', $posted['parent_order_id'] ?: $posted['order_id']);
227 | $user_id = $exploded[1];
228 |
229 | if (empty($user_id) && !empty($posted['sender_email'])) {
230 | $user = get_user_by('email', $posted['sender_email']);
231 | $user_id = $user ? $user->ID : false;
232 | }
233 |
234 | $member = new RCP_Member($user_id);
235 |
236 | if (!$member || !$member->ID > 0) {
237 | rcp_log('Fondy - member ID not found.');
238 |
239 | die('no member found');
240 | }
241 |
242 | $subscription_id = $member->get_pending_subscription_id();
243 |
244 | if (empty($subscription_id)) {
245 | $subscription_id = $member->get_subscription_id();
246 | }
247 | if (!$subscription_id) {
248 | rcp_log('Fondy - no subscription ID for member.');
249 | die('no subscription for member found');
250 | }
251 |
252 | if (!$subscription_level = rcp_get_subscription_details($subscription_id)) {
253 | rcp_log('Fondy - no subscription level found.');
254 | die('no subscription level found');
255 | }
256 | $data = (json_decode(stripslashes($posted['merchant_data']), true));
257 | $amount = $posted['amount'] / 100;
258 | if ($data['signup_fee']) {
259 | $fee = $data['signup_fee'];
260 | } else {
261 | $fee = 0;
262 | }
263 | if ($data['discount_amount']) {
264 | $discount = $data['discount_amount'];
265 | } else {
266 | $discount = 0;
267 | }
268 | if ($data['subtotal']) {
269 | $subtotal = $data['subtotal'];
270 | } else {
271 | $subtotal = 0;
272 | }
273 |
274 | $payment_data = array(
275 | 'date' => date('Y-m-d H:i:s', strtotime($posted['order_time'])),
276 | 'subscription' => $subscription_level->name,
277 | 'payment_type' => 'Fondy Credit Card',
278 | 'subscription_key' => $member->get_subscription_key(),
279 | 'amount' => $member->is_trialing() ? 0 : $amount,
280 | 'fees' => $amount,
281 | 'subtotal' => $subtotal,
282 | 'discount_amount' => $discount,
283 | 'user_id' => $user_id,
284 | 'gateway' => 'Fondy',
285 | 'transaction_id' => $posted['payment_id'] ?? '',
286 | 'status' => 'complete'
287 | );
288 | $rcp_payments = new RCP_Payments();
289 |
290 | rcp_log(sprintf('Processing Fondy. Payment status: %s', $posted['order_status']));
291 |
292 | switch (strtolower($posted['order_status'])) :
293 | case 'approved':
294 | if ($member->just_upgraded() && $member->can_cancel()) {
295 | $cancelled = $member->cancel_payment_profile(false);
296 |
297 | if ($cancelled) {
298 | $member->set_payment_profile_id('');
299 | }
300 | }
301 |
302 | if ($pending_id = $member->get_pending_payment_id()) { // has pending payment, just update
303 | $rcp_payments->update($pending_id, $payment_data);
304 |
305 | do_action('rcp_gateway_payment_processed', $member, $pending_id, $this);
306 | } elseif (isset($posted['parent_order_id']) && !$rcp_payments->payment_exists($payment_data['transaction_id'])) { // recurring and payment already exists
307 | $payment_data['transaction_type'] = 'renewal';
308 | $payment_id = $rcp_payments->insert($payment_data);
309 |
310 | $member->renew(true);
311 |
312 | do_action('rcp_webhook_recurring_payment_processed', $member, $payment_id, $this);
313 | do_action('rcp_gateway_payment_processed', $member, $payment_id, $this);
314 | }
315 |
316 | break;
317 | case 'declined' :
318 | rcp_log('Processing Fondy declined webhook.');
319 | $member->cancel();
320 | die('payment declined');
321 | case 'expired' :
322 | rcp_log('Processing Fondy expired webhook.');
323 |
324 | $member->set_status('expired');
325 |
326 | $member->set_expiration_date(date('Y-m-d H:i:s', strtotime($posted['order_time'])));
327 |
328 | $member->add_note(__('Subscription expired in Fondy', 'fondy_rcp'));
329 |
330 | die('member expired');
331 | break;
332 | endswitch;
333 |
334 | } else {
335 | rcp_log('Error: ' . $paymentInfo);
336 | die;
337 | }
338 | die;
339 | }
340 | }
--------------------------------------------------------------------------------
/Restrict_Content_Pro/fondy-restrict-gateway/index.php:
--------------------------------------------------------------------------------
1 | 'Fondy',
23 | 'admin_label' => 'Fondy',
24 | 'class' => 'RCP_Payment_Gateway_Fondy'
25 | );
26 | return $gateways;
27 | }
28 |
29 | function pw_rcp_register_fondy_mainClass()
30 | {
31 | global $rcp_fondy_options;
32 | $rcp_fondy_options = get_option('rcp_fondy_settings');
33 | require_once(RCP_FONDY_DIR . "/fondy/fondy.php");
34 | require_once(RCP_FONDY_DIR . "/fondy/fondy-admin.php");
35 | }
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/easy-digital-downloads-fondy/README.md:
--------------------------------------------------------------------------------
1 | # Fondy payment plugin for WP + Easy digital downloads
2 | ----
3 | ## Installation
4 | Navigate to your WordPress "Plugins" page:
5 | 1. Unzip plugin to your plugin directory ```(wp-content/plugins/)```
6 | 2. Login to your WordPress dashboard.
7 | 3. Navigate to **Plugins** and activate **"EDD Fondy Payment"** plugin.
8 | 4. Copy and paste your merchant id and secret key to **Downloads > Settings > Gateways**.
9 |
10 |
11 | ![Settings][1]
12 | ----
13 |
14 | [1]: https://raw.githubusercontent.com/cloudipsp/wordpress/master/easy-digital-downloads-fondy/settings1.png
--------------------------------------------------------------------------------
/easy-digital-downloads-fondy/assets/images/fondy_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cloudipsp/wordpress/1fc23d2b1489c9ce74d07888dd01c78923a3c2f7/easy-digital-downloads-fondy/assets/images/fondy_logo.png
--------------------------------------------------------------------------------
/easy-digital-downloads-fondy/languages/edd_fondy-ru_RU.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cloudipsp/wordpress/1fc23d2b1489c9ce74d07888dd01c78923a3c2f7/easy-digital-downloads-fondy/languages/edd_fondy-ru_RU.mo
--------------------------------------------------------------------------------
/easy-digital-downloads-fondy/languages/edd_fondy-ru_RU.po:
--------------------------------------------------------------------------------
1 | msgid ""
2 | msgstr ""
3 | "Project-Id-Version: EDD Fondy Payment\n"
4 | "Report-Msgid-Bugs-To: \n"
5 | "POT-Creation-Date: 2018-03-12 12:46+0000\n"
6 | "PO-Revision-Date: 2018-03-12 12:58+0000\n"
7 | "Last-Translator: dm \n"
8 | "Language-Team: Russian\n"
9 | "Language: ru_RU\n"
10 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && "
11 | "n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2);\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "X-Generator: Loco https://localise.biz/"
16 |
17 | #: edd-fondy-payment.php:185
18 | msgid "Choose language, leave empty if you want for brower language."
19 | msgstr "Выберите язык, оставте пустым для выбора языка по браузеру."
20 |
21 | #: edd-fondy-payment.php:165
22 | msgid "Configure the gateway settings"
23 | msgstr "Настройки платежного шлюза Fondy"
24 |
25 | #. Author of the plugin
26 | msgid "Dmitriy Miroshnikov"
27 | msgstr ""
28 |
29 | #. Name of the plugin
30 | msgid "EDD Fondy Payment"
31 | msgstr "EDD Fondy Payment"
32 |
33 | #: edd-fondy-payment.php:171
34 | msgid ""
35 | "Enter your Merchant ID, you can find it here."
37 | msgstr ""
38 | "Введите Идентификатор мерчанта, получить можно в личном кабинете."
40 |
41 | #: edd-fondy-payment.php:178
42 | msgid ""
43 | "Enter your Secret Key, you can find it here."
45 | msgstr ""
46 | "Введите ключ платежа, получить можно в личном кабинете."
48 |
49 | #: edd-fondy-payment.php:147
50 | msgid "Fondy"
51 | msgstr "Fondy"
52 |
53 | #: edd-fondy-payment.php:164
54 | msgid "Fondy Payment Gateway Settings"
55 | msgstr "Настройки платежного шлюза Fondy"
56 |
57 | #. Description of the plugin
58 | msgid "Fondy Payment integration for EDD plugin"
59 | msgstr "Интеграция Fondy с плагином EDD"
60 |
61 | #: edd-fondy-payment.php:147
62 | msgid "Fondy Payments"
63 | msgstr "Fondy"
64 |
65 | #: edd-fondy-payment.php:184
66 | msgid "Language"
67 | msgstr "Язык"
68 |
69 | #: edd-fondy-payment.php:170
70 | msgid "Merchant ID"
71 | msgstr "Идентификатор мерчанта"
72 |
73 | #: edd-fondy-payment.php:235
74 | #, php-format
75 | msgid "Order №: %s"
76 | msgstr "Заказ №: %s"
77 |
78 | #: edd-fondy-payment.php:227
79 | #, php-format
80 | msgid "Payment creation failed. Payment data: %s"
81 | msgstr "Создание платежа завершилось провалом. Данные: %s"
82 |
83 | #: edd-fondy-payment.php:227 edd-fondy-payment.php:261
84 | msgid "Payment Error"
85 | msgstr "Ошибка оплаты"
86 |
87 | #: edd-fondy-payment.php:261
88 | #, php-format
89 | msgid "Payment failed. Payment data: %s"
90 | msgstr "Оплата завершилось провалом. Данные: %s"
91 |
92 | #: edd-fondy-payment.php:443
93 | msgid ""
94 | "Please upgrade WordPress to the latest version to allow WordPress and this "
95 | "plugin to work properly."
96 | msgstr ""
97 |
98 | #: edd-fondy-payment.php:177
99 | msgid "Secret Key"
100 | msgstr "Ключ платежа:"
101 |
--------------------------------------------------------------------------------
/easy-digital-downloads-fondy/languages/edd_fondy.pot:
--------------------------------------------------------------------------------
1 | #, fuzzy
2 | msgid ""
3 | msgstr ""
4 | "Project-Id-Version: EDD Fondy Payment\n"
5 | "Report-Msgid-Bugs-To: \n"
6 | "POT-Creation-Date: 2018-03-12 12:46+0000\n"
7 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8 | "Last-Translator: FULL NAME \n"
9 | "Language-Team: \n"
10 | "Language: \n"
11 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "X-Generator: Loco https://localise.biz/"
16 |
17 | #: edd-fondy-payment.php:185
18 | msgid "Choose language, leave empty if you want for brower language."
19 | msgstr ""
20 |
21 | #: edd-fondy-payment.php:165
22 | msgid "Configure the gateway settings"
23 | msgstr ""
24 |
25 | #. Author of the plugin
26 | msgid "Dmitriy Miroshnikov"
27 | msgstr ""
28 |
29 | #. Name of the plugin
30 | msgid "EDD Fondy Payment"
31 | msgstr ""
32 |
33 | #: edd-fondy-payment.php:171
34 | msgid ""
35 | "Enter your Merchant ID, you can find it here."
37 | msgstr ""
38 |
39 | #: edd-fondy-payment.php:178
40 | msgid ""
41 | "Enter your Secret Key, you can find it here."
43 | msgstr ""
44 |
45 | #: edd-fondy-payment.php:147
46 | msgid "Fondy"
47 | msgstr ""
48 |
49 | #: edd-fondy-payment.php:164
50 | msgid "Fondy Payment Gateway Settings"
51 | msgstr ""
52 |
53 | #. Description of the plugin
54 | msgid "Fondy Payment integration for EDD plugin"
55 | msgstr ""
56 |
57 | #: edd-fondy-payment.php:147
58 | msgid "Fondy Payments"
59 | msgstr ""
60 |
61 | #: edd-fondy-payment.php:184
62 | msgid "Language"
63 | msgstr ""
64 |
65 | #: edd-fondy-payment.php:170
66 | msgid "Merchant ID"
67 | msgstr ""
68 |
69 | #: edd-fondy-payment.php:235
70 | #, php-format
71 | msgid "Order №: %s"
72 | msgstr ""
73 |
74 | #: edd-fondy-payment.php:227
75 | #, php-format
76 | msgid "Payment creation failed. Payment data: %s"
77 | msgstr ""
78 |
79 | #: edd-fondy-payment.php:227 edd-fondy-payment.php:261
80 | msgid "Payment Error"
81 | msgstr ""
82 |
83 | #: edd-fondy-payment.php:261
84 | #, php-format
85 | msgid "Payment failed. Payment data: %s"
86 | msgstr ""
87 |
88 | #: edd-fondy-payment.php:443
89 | msgid ""
90 | "Please upgrade WordPress to the latest version to allow WordPress and this "
91 | "plugin to work properly."
92 | msgstr ""
93 |
94 | #: edd-fondy-payment.php:177
95 | msgid "Secret Key"
96 | msgstr ""
97 |
--------------------------------------------------------------------------------
/easy-digital-downloads-fondy/settings1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cloudipsp/wordpress/1fc23d2b1489c9ce74d07888dd01c78923a3c2f7/easy-digital-downloads-fondy/settings1.png
--------------------------------------------------------------------------------
/fondy-gravityforms-payment/README.md:
--------------------------------------------------------------------------------
1 | Wordpress + gravityforms
2 | ---------
3 |
4 | # EN
5 |
6 | ## Installation
7 |
8 | 1. Ensure you have latest version gravityforms plugin installed.
9 | 2. Upload the plug-in folder to the `/wp-content/plugins/`
10 | 3. Activate the plug-in through the 'Plugins' menu.
11 |
12 | ## Configuration
13 |
14 | 1. Go to Forms -> Settings -> Fondy and create Feed.
15 | 2. Fill out the fields `Merchant Key` and `Merchant secret`.
16 | 3. Fill `Return URL` or leave empty to use default where users will be returned after payment.
17 | 4. Save settings.
18 |
19 | ---------
20 |
21 |
22 | ![Скриншот][1]
23 | ----
24 |
25 | [1]: https://raw.githubusercontent.com/cloudipsp/wordpress/master/fondy-gravityforms-payment/settings1.png
--------------------------------------------------------------------------------
/fondy-gravityforms-payment/fondy.php:
--------------------------------------------------------------------------------
1 | \n"
9 | "Language-Team: \n"
10 | "Language: \n"
11 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "X-Generator: Loco https://localise.biz/"
16 |
17 | #: class-gf-fondy.php:1319
18 | msgid ""
19 | "A reversal has occurred on this transaction because you have given the "
20 | "customer a refund."
21 | msgstr ""
22 |
23 | #: class-gf-fondy.php:1317
24 | msgid ""
25 | "A reversal has occurred on this transaction due to your customer triggering "
26 | "a money-back guarantee."
27 | msgstr ""
28 |
29 | #: class-gf-fondy.php:197
30 | msgid "Change post status when subscription is canceled."
31 | msgstr ""
32 |
33 | #: class-gf-fondy.php:79
34 | msgid "Confirm that you have configured your Fondy account in Merchant portal."
35 | msgstr ""
36 |
37 | #: class-gf-fondy.php:191
38 | msgid "Create post only when payment is received."
39 | msgstr ""
40 |
41 | #: class-gf-fondy.php:65
42 | #, php-format
43 | msgid "Create you free %sFondy account.%s"
44 | msgstr ""
45 |
46 | #: class-gf-fondy.php:259
47 | msgid "day(s)"
48 | msgstr ""
49 |
50 | #: class-gf-fondy.php:415
51 | msgid "Delete Post"
52 | msgstr ""
53 |
54 | #. Author of the plugin
55 | msgid "DM"
56 | msgstr ""
57 |
58 | #: class-gf-fondy.php:155
59 | msgid "Donations"
60 | msgstr ""
61 |
62 | #: class-gf-fondy.php:189
63 | msgid ""
64 | "Enable this option if you would like to only create the post after payment "
65 | "has been received."
66 | msgstr ""
67 |
68 | #: class-gf-fondy.php:178
69 | msgid ""
70 | "Enable this option if you would like to only send out this form's "
71 | "notifications for the 'Form is submitted' event after payment has been "
72 | "received. Leaving this option disabled will send these notifications "
73 | "immediately after the form is submitted. Notifications which are configured "
74 | "for other events will not be affected by this option."
75 | msgstr ""
76 |
77 | #: class-gf-fondy.php:169
78 | msgid "Enter the URL the user should be retuned if not set use defaults."
79 | msgstr ""
80 |
81 | #: class-gf-fondy.php:237
82 | msgid "First Name"
83 | msgstr ""
84 |
85 | #: class-gf-fondy.php:1426
86 | msgid "Fondy Add-On v1.0"
87 | msgstr ""
88 |
89 | #: class-gf-fondy.php:1433
90 | msgid ""
91 | "Fondy Feeds are now accessed via the Fondy sub-menu within the Form Settings "
92 | "for the Form you would like to integrate Fondy with."
93 | msgstr ""
94 |
95 | #: class-gf-fondy.php:270
96 | msgid "Fondy Field"
97 | msgstr ""
98 |
99 | #: class-gf-fondy.php:110
100 | msgid "Fondy Merchant ID"
101 | msgstr ""
102 |
103 | #. Name of the plugin
104 | msgid "Fondy Payment Gravity Forms Add-on"
105 | msgstr ""
106 |
107 | #: class-gf-fondy.php:118
108 | msgid "Fondy secret key "
109 | msgstr ""
110 |
111 | #: class-gf-fondy.php:122
112 | msgid "Fondy secret key from portal"
113 | msgstr ""
114 |
115 | #: class-gf-fondy.php:77
116 | msgid "Fondy setting"
117 | msgstr ""
118 |
119 | #: class-gf-fondy.php:66
120 | #, php-format
121 | msgid "Go to settings end enter Callback URL: %s"
122 | msgstr ""
123 |
124 | #: class-gf-fondy.php:62
125 | msgid ""
126 | "Gravity Forms requires to be create and enabled your Fondy account. Follow "
127 | "the following steps to confirm it is enabled."
128 | msgstr ""
129 |
130 | #. Author URI of the plugin
131 | msgid "https://fondy.eu"
132 | msgstr ""
133 |
134 | #. URI of the plugin
135 | msgid "https://www.gravityforms.com"
136 | msgstr ""
137 |
138 | #: class-gf-fondy.php:1444
139 | msgid "I understand, dismiss this message!"
140 | msgstr ""
141 |
142 | #. Description of the plugin
143 | msgid "Integrates Gravity Forms with Fondy."
144 | msgstr ""
145 |
146 | #: class-gf-fondy.php:234
147 | msgid "Last Name"
148 | msgstr ""
149 |
150 | #: class-gf-fondy.php:414
151 | msgid "Mark Post as Draft"
152 | msgstr ""
153 |
154 | #: class-gf-fondy.php:114
155 | msgid "Merchant ID from portal"
156 | msgstr ""
157 |
158 | #: class-gf-fondy.php:126 class-gf-fondy.php:136
159 | msgid "Mode"
160 | msgstr ""
161 |
162 | #: class-gf-fondy.php:261
163 | msgid "month(s)"
164 | msgstr ""
165 |
166 | #: class-gf-fondy.php:176 class-gf-fondy.php:178
167 | msgid "Notifications"
168 | msgstr ""
169 |
170 | #: class-gf-fondy.php:1315
171 | msgid ""
172 | "Order completed successfully, funds are hold on the payer’s account and soon "
173 | "will be credited of the merchant; merchant can provide the service or ship "
174 | "goods."
175 | msgstr ""
176 |
177 | #: class-gf-fondy.php:1309
178 | msgid ""
179 | "Order has been created, but the customer has not entered payment details yet;"
180 | " merchant must continue to request the status of the order"
181 | msgstr ""
182 |
183 | #: class-gf-fondy.php:1313
184 | msgid ""
185 | "Order is declined by FONDY payment gateway or by bank or by external payment "
186 | "system"
187 | msgstr ""
188 |
189 | #: class-gf-fondy.php:1311
190 | msgid ""
191 | "Order is still in processing by payment gateway; merchant must continue to "
192 | "request the status of the order"
193 | msgstr ""
194 |
195 | #: class-gf-fondy.php:1193
196 | #, php-format
197 | msgid ""
198 | "Payment amount (%s) does not match product price. Entry will not be marked "
199 | "as Approved. Transaction ID: %s"
200 | msgstr ""
201 |
202 | #: class-gf-fondy.php:1376
203 | msgid "Payment Completed"
204 | msgstr ""
205 |
206 | #: class-gf-fondy.php:1150
207 | #, php-format
208 | msgid "Payment created. Amount: %s. Transaction ID: %s. Reason: %s"
209 | msgstr ""
210 |
211 | #: class-gf-fondy.php:1378
212 | msgid "Payment Failed"
213 | msgstr ""
214 |
215 | #: class-gf-fondy.php:1177
216 | #, php-format
217 | msgid "Payment has been declined. Transaction ID: %s. Reason: %s"
218 | msgstr ""
219 |
220 | #: class-gf-fondy.php:1232
221 | #, php-format
222 | msgid "Payment has been expired. Transaction ID: %s. Reason: %s"
223 | msgstr ""
224 |
225 | #: class-gf-fondy.php:1216
226 | #, php-format
227 | msgid "Payment has been reversed. Transaction ID: %s. Reason: %s"
228 | msgstr ""
229 |
230 | #: class-gf-fondy.php:1576
231 | #, php-format
232 | msgid ""
233 | "Payment information was manually updated. Status: %s. Amount: %s. "
234 | "Transaction ID: %s. Date: %s"
235 | msgstr ""
236 |
237 | #: class-gf-fondy.php:1161
238 | #, php-format
239 | msgid "Payment is pending. Amount: %s. Transaction ID: %s. Reason: %s"
240 | msgstr ""
241 |
242 | #: class-gf-fondy.php:1379
243 | msgid "Payment Pending"
244 | msgstr ""
245 |
246 | #: class-gf-fondy.php:1377
247 | msgid "Payment Refunded"
248 | msgstr ""
249 |
250 | #: class-gf-fondy.php:1446
251 | msgid "Please wait..."
252 | msgstr ""
253 |
254 | #: class-gf-fondy.php:187 class-gf-fondy.php:189
255 | msgid "Posts"
256 | msgstr ""
257 |
258 | #: class-gf-fondy.php:129
259 | msgid "Production"
260 | msgstr ""
261 |
262 | #: class-gf-fondy.php:1321
263 | msgid ""
264 | "Reason has not been specified. For more information, contact Fondy Customer "
265 | "Service."
266 | msgstr ""
267 |
268 | #: class-gf-fondy.php:165 class-gf-fondy.php:169
269 | msgid "Return URL"
270 | msgstr ""
271 |
272 | #: class-gf-fondy.php:136
273 | msgid ""
274 | "Select Production to receive live payments. Select Test for testing purposes "
275 | "when using the Fondy development sandbox."
276 | msgstr ""
277 |
278 | #: class-gf-fondy.php:327
279 | msgid ""
280 | "Send notifications for the 'Form is submitted' event only when payment is "
281 | "received."
282 | msgstr ""
283 |
284 | #: class-gf-fondy.php:84
285 | msgid "Settings have been updated."
286 | msgstr ""
287 |
288 | #: class-gf-fondy.php:1381
289 | msgid "Subscription Canceled"
290 | msgstr ""
291 |
292 | #: class-gf-fondy.php:1380
293 | msgid "Subscription Created"
294 | msgstr ""
295 |
296 | #: class-gf-fondy.php:1382
297 | msgid "Subscription Expired"
298 | msgstr ""
299 |
300 | #: class-gf-fondy.php:1383
301 | msgid "Subscription Payment Added"
302 | msgstr ""
303 |
304 | #: class-gf-fondy.php:1384
305 | msgid "Subscription Payment Failed"
306 | msgstr ""
307 |
308 | #: class-gf-fondy.php:130
309 | msgid "Test"
310 | msgstr ""
311 |
312 | #: class-gf-fondy.php:1428
313 | msgid "Thank you! Fondy simple integration."
314 | msgstr ""
315 |
316 | #: class-gf-fondy.php:96
317 | #, php-format
318 | msgid "To get started, please configure your %sFondy Settings%s!"
319 | msgstr ""
320 |
321 | #: class-gf-fondy.php:260
322 | msgid "week(s)"
323 | msgstr ""
324 |
325 | #: class-gf-fondy.php:262
326 | msgid "year(s)"
327 | msgstr ""
328 |
--------------------------------------------------------------------------------
/fondy-gravityforms-payment/settings1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cloudipsp/wordpress/1fc23d2b1489c9ce74d07888dd01c78923a3c2f7/fondy-gravityforms-payment/settings1.png
--------------------------------------------------------------------------------
/woocommerce/README.md:
--------------------------------------------------------------------------------
1 | WooCommerce Fondy Plugin
2 | =========
3 |
4 | #EN
5 |
6 | == Installation ==
7 |
8 | 1. Ensure you have latest version of WooCommerce plugin installed (WooCommerce 3.0+)
9 | 2. Upload the plugin files to the `/wp-content/plugins/`(or upload the plugin zip file using wp-admin.)
10 | 3. Activate the plugin through the 'Plugins' menu.
11 |
12 | == Configuration ==
13 |
14 | 1. Go to Woocommerce -> Settings -> Payment.
15 | 2. Go to tab "Fondy". If it doesn't exist - activate the plugin.
16 | 3. Allow this payment method (Enable). Name it "Online Payments".
17 | 4. Fill out the fields `Merchant ID` and `Secret Key`. You can get them on the [Fondy](https://fondy.io "official site Fondy") website.
18 | 5. Customize other plugin settings if it`s necessary.
19 | 6. Save settings.
20 |
21 | ---------
22 |
23 | #RU
24 |
25 | == Установка ==
26 |
27 | 1. Убедитесь что у вас установлена последняя версия плагина WooCommerce (WooCommerce 3.0+)
28 | 2. Распакуйте этот плагин в директорию `/wp-content/plugins/`(либо установите вложенный архив через панель администратора)
29 | 3. Активируйте плагин в меню "Плагины"
30 |
31 |
32 | == Конфигурация ==
33 |
34 | 1. Зайдите в "WooCommerce > Настройки > Оплата"
35 | 2. Зайдите на таб "Fondy". Если его нет - активируйте плагин.
36 | 3. Включите этот способ оплаты (Enable). Назовите его "Online Payments".
37 | 4. Заполните поля `Merchant ID` и `Secret Key` данными полученными от fondy.io.
38 | 5. При необходимости настройте другие параметры плагина.
39 | 6. Сохраните настройки.
40 |
41 |
42 | ![Скриншот][1]
43 | ----
44 |
45 | [1]: https://raw.githubusercontent.com/cloudipsp/wordpress/master/woocommerce/settings1.png
46 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/README.txt:
--------------------------------------------------------------------------------
1 | === Fondy — WooCommerce Payment Gateway ===
2 | Contributors: fondyeu
3 | Tags: payments, payment gateway, woocommerce, online payment, merchant, credit card, fondy, apple pay, payment request, google pay
4 | Requires at least: 3.5
5 | Tested up to: 6.0.1
6 | Requires PHP: 5.6
7 | Stable tag: 3.0.3
8 | License: GPLv2 or later
9 | License URI: http://www.gnu.org/licenses/gpl-2.0.html
10 |
11 | == Description ==
12 | The plugin for WooCommerce allows you to integrate the online payment form on the Checkout page of your online store.
13 |
14 | Fondy’s [WooCommerce Payment Gateway plugin](https://fondy.io/gb/plugins/woocommerce/) for online stores, based on CMS Wordpress provides businesses with a single platform for quick and secure accepting payments on the site, and its customers with convenient ways to pay for goods and services of their interest. After connecting the system, your customers will be able to pay for purchases using bank cards, online banking, mobile payments.
15 |
16 | The ability to pay in a convenient way increases customer loyalty, increases the frequency of purchases and helps entrepreneurs earn more. The Fondy platform has already been connected to more than 8000 entrepreneurs around the world — from small start-ups and niche stores to international companies with millions of turnover.
17 |
18 | We already work in [33 countries](https://docs.fondy.eu/docs/page/supported-countries/), accept payments from any country, and support more than [100 currencies](https://docs.fondy.eu/docs/page/27/), cooperate with banks of the European Union, UK, Eastern Europe, Ukraine and constantly expand our presence around the world.
19 |
20 |
21 | == Reasons to choose Fondy ==
22 | * We accept payments in all the countries in 100 currencies
23 | * A wide range of payment methods: credit cards, local means of payment, Internet banks
24 | * Support for recurring payments — regular debit from the client card for subscription services
25 | * Holding system — freezing money on the client’s card for up to 25 days with the possibility of debit or refund in 1 click
26 | * Tokenization — automatic filling in the details of the client card upon re-entry
27 | * Roles system — the ability to create users with different access rights to the personal account
28 | * Maximum security level: three levels of anti-fraud protection, SSL/TLS encryption, 3D Secure technology
29 | * [Detailed analytics](https://fondy.io/en/products/personal-cabinet/) on payments and invoices, the formation of customized reports in the user's personal account
30 |
31 |
32 | == Supported payment methods ==
33 |
34 | = Bank cards =
35 | * Visa, MasterCard, Maestro, American Express, Discover, JCB ([full list](https://docs.fondy.eu/docs/page/payment_methods/))
36 |
37 | = Alternative payment methods =
38 | * Trustpay, Alipay, WeChat Pay, Safetypay, iDEAL, SEPA, Skrill ([full list](https://docs.fondy.eu/docs/page/payment_methods/))
39 |
40 | = Internet banking =
41 | * Banks in 26 countries ([full list](https://docs.fondy.eu/docs/page/supported-countries/))
42 |
43 |
44 | == Platform features and benefits ==
45 |
46 | = Easy to get started =
47 | Fast and friendly onboarding is one of the key advantages of Fondy. You just need to register in the personal account of the platform, enter payment information, sign an electronic agreement and undergo an express audit of the site by our specialists.
48 |
49 | The procedure takes from 1 hour to 2 days. After that you can accept payments from the customers, create online invoices in your account and engage in business development.
50 |
51 | = Payment security =
52 | To ensure a high level of security and availability of the platform we placed it in a cloud service that meets the top ten security standards, has protection against DDoS attacks and ensures that there is no physical access by unauthorized persons and organizations to the data and equipment.
53 |
54 | Every year we pass PCI DSS certification. We also developed and constantly update our own anti-fraud system consisting of three levels: barrier, analytical, post-operator. This means that the fraudsters have no chance.
55 |
56 | = Customer care =
57 | When they first pay, the clients enter the card data and selects their favourite method of payment, the platform will save them in encrypted form. All the following payments will be made for your customers in 1 click, without having to enter any data and fill in the fields. Such care removes unnecessary barriers to purchase, the customers do not have to look for a card or recall the CVV code.
58 |
59 | For those who regularly buy goods or purchase subscription services in Fondy, you can set up periodic debiting of money from the card (account) once a week/month/year using the payment calendar. The client will not have to bother with repeated payments, and you will always receive money on time.
60 |
61 | = Flexible payment options =
62 | It so happens that the client paid the order and the goods were not in stock. The seller gets into an awkward situation. For such cases Fondy offers a holding mechanism — freezing money in a client’s account for a while. If there is no product, you can return the money back to the client in 1 click.
63 |
64 | There are many cases when you need to check the client’s solvency or freeze a certain amount on his account. Often holding is used by car rental services, hotels, delivery services, taxi services.
65 |
66 | = Mobile payments =
67 | Fondy is fully optimized for use on smartphones, tablets, laptops, desktops, TVs. Your customers will be comfortable to make purchases from any device.
68 |
69 | We also took care of the sellers, they can access the personal account via the web interface or a convenient mobile application for [Android](https://play.google.com/store/apps/details?id=com.cloudipsp.fondyportal&hl=en) and [iOS](https://itunes.apple.com/ua/app/fondy-merchant-portal/id1273277350?l=en). From the application you can view the statistics, generate invoices, work with payments.
70 |
71 | = Smart analytics =
72 | We help the sellers get to better know their customers. The built-in analytics system allows real-time tracking of the status of all the payments, to see at what stage of the purchase each customer is.
73 |
74 | The system also provides analytics on customers, showing in which ways payment is most often made, from which devices, countries and in what currency. The received data can be viewed in your Fondy account or converted into reports and saved to a computer.
75 |
76 |
77 | == Screenshots ==
78 | 1. Plugin settings
79 | 2. Plugin settings
80 | 3. Plugin switching-on
81 | 4. Order status
82 | 5. Payment window in your account on the site
83 | 6. Payment page as part of the site design
84 | 7. Separate payment page on the side of Fondy
85 | 8. Failed payment
86 | 9. Successful payment
87 |
88 |
89 | == Tariffs ==
90 | Only commission with payment. It is possible to adjust payment of the commission on itself, or to impose on the client.
91 |
92 | [See current tariffs on the Fondy website](https://fondy.io/gb/pricing/)
93 |
94 |
95 | == FAQ ==
96 | Some answers you can find here [FAQ](https://fondy.io/en/faq/)
97 |
98 |
99 | == Installation instructions for the plugin ==
100 |
101 | = 1. Module installation =
102 |
103 | There are two ways to install the plugin:
104 |
105 | 1. Download Fondy payment acceptance plugin for WooCommerce from the WordPress add-ons directory. Unpack this plugin into the /wp-content/plugins/ directory. After that activate it in the “Plugins” menu.
106 | 2. Use the installation on the link replacing “site.com” with the address of your site: [site.com/wp-admin/plugin-install.php?tab=plugin-information&plugin=fondy-woocommerce-payment-gateway](http://site.com/wp-admin/plugin-install.php?tab=plugin-information&plugin=fondy-woocommerce-payment-gateway)
107 |
108 |
109 | = 2. Module activation =
110 |
111 | Go to the Wordpress control panel, find the Fondy payment module in the “Plugins” menu. Click on the “Activate”.
112 |
113 | = 3. Settings =
114 |
115 | To set up the payment acceptance plugin, do the following:
116 |
117 | 1. Go to “WooCommerce” > Settings > Payments.
118 | 2. Go to the management of “Fondy” → Management. Let the plugin use this payment method: click “Enable”.
119 | 3. Enter the data you received from Fondy company. (can be found in your merchant's technical settings) You need to fill in two fields — Merchant ID and Merchant secretkey.
120 | 4. Choose how the payment will be displayed:
121 | a. Payment page within the site design
122 | b. Payment page in the personal account on the site
123 | c. Separate payment page on the side of Fondy
124 | 5. Select the Answer page — the page to which the user will be redirected after making the payment, the so-called “Thank you page”.
125 | 6. Set what order status should be returned after successful/unsuccessful payment.
126 | 7. Save the settings.
127 |
128 | Done, now you can accept payments from the customers!
129 |
130 |
131 | == Changelog ==
132 | = 1.0.0 =
133 | * First release
134 | = 1.0.1 =
135 | add default success page
136 | = 2.0 =
137 | change to host-to-host
138 | = 2.2 =
139 | stability update
140 | = 2.2.3 =
141 | change payment complete status
142 | = 2.3.0 =
143 | some fix, duplicate update
144 | = 2.4.0 =
145 | Added v2 js Api
146 | = 2.4.1 =
147 | Added js Mask CCard
148 | = 2.4.2 =
149 | some fix php tags
150 | = 2.4.3 =
151 | Added Refund function
152 | = 2.4.4 =
153 | Fixed checkout card
154 | = 2.4.5 =
155 | Fix for php 5.3 <
156 | = 2.5.2 =
157 | Added instant redirect
158 | = 2.5.3 =
159 | Styles moved to merchant portal
160 | = 2.5.6 =
161 | Added order statuses to settings page
162 | = 2.5.8 =
163 | New logo and testing mode
164 | = 2.6.3 =
165 | Fixed default options
166 | = 2.6.5 =
167 | Added pre-orders
168 | = 2.6.7 =
169 | Added subscription
170 | = 2.6.8 =
171 | Refund fix
172 | = 2.6.9 =
173 | Added some API request error handler
174 | = 3.0.0 =
175 | Add Bank and Local payment methods
176 | Add support checkout 2.0
177 | Add some hooks and filters
178 | Add MP transaction link
179 | Add send reservation data (anti-fraud, ОФД, etc.)
180 | Add better order status matching
181 | Remove old unused settings
182 | Fix callback url
183 | Fix PHP 8 compatibility
184 | = 3.0.1 =
185 | Fix relative server_callback_url
186 | = 3.0.2 =
187 | Add send email renewal order payment info
188 | Add more informative WP remote_post errors
189 | = 3.0.3 =
190 | Fixed handle POST form callback
191 |
192 | == Upgrade Notice ==
193 |
194 | = 1.0.0 =
195 | Add pop-up mode
196 | = 1.0.1 =
197 | add default success page
198 | = 2.0 =
199 | change to host-to-host
200 | = 2.2 =
201 | stability update
202 | = 2.2.2 =
203 | add expired callback
204 | = 2.2.3 =
205 | change payment complete status
206 | = 2.3.0 =
207 | some fix, duplicate update
208 | = 2.4.0 =
209 | Added v2 js Api
210 | = 2.4.1 =
211 | Added js Mask CCard
212 | = 2.4.2 =
213 | some fix php tags
214 | = 2.4.3 =
215 | Added Refund function
216 | = 2.4.4 =
217 | Fixed checkout card
218 | = 2.4.6 =
219 | Order notify update
220 | = 2.4.7 =
221 | Unification css containers
222 | = 2.4.8 =
223 | Stability update
224 | = 2.4.9 =
225 | Added multi currencies support(WMPL)
226 | = 2.5.0 =
227 | Added token caching
228 | = 2.5.2 =
229 | Added instant redirect
230 | = 2.5.3 =
231 | Styles moved to merchant portal
232 | = 3.0.0 =
233 | Up WooCommerce required minimum version to 3.0.
234 | Add support checkout 2.0.
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/assets/css/fondy_embedded.css:
--------------------------------------------------------------------------------
1 | #fondy-checkout-container button::after{
2 | display: block !important;
3 | }
4 | /*todo forget for what this part*/
5 | #payment .payment_methods li .payment_box.payment_method_fondy_card{
6 | padding: 1.41575em !important;
7 | }
8 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/assets/css/fondy_seamless.css:
--------------------------------------------------------------------------------
1 | #payment .payment_methods li .payment_box.payment_method_fondy_card{
2 | padding: 0;
3 | }
4 |
5 | #payment .payment_methods li .payment_box.payment_method_fondy_wallet{
6 | padding: 1rem 0;
7 | }
8 |
9 | html #f.f-embed .f-wrapper{
10 | min-height: 0;
11 | }
12 |
13 | #checkout-card-container .f-payment-method-card-inner .f-info {
14 | display: none;
15 | }
16 |
17 | #checkout-card-container .f-payment-method-card-inner .f-icons{
18 | margin-top: 1rem;
19 | }
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/assets/css/fondy_seamless_old.css:
--------------------------------------------------------------------------------
1 | #checkout_wrapper{min-height:800px;text-align:left;position:relative;background:#fff;padding-left:15px;padding-right:15px;padding-bottom:30px;margin:9px auto}#checkout_fondy_form input{line-height:36px}#checkout_fondy_form input::-webkit-input-placeholder{opacity:.4;color:#000;font-size:.75rem;transform:translate3d(0,-1px,0)}#checkout_fondy_form input:-moz-placeholder{opacity:.4;color:#000;font-size:.75rem;transform:translate3d(0,-1px,0)}#checkout_fondy_form input::-moz-placeholder{opacity:.4;color:#000;font-size:.75rem;transform:translate3d(0,-1px,0)}#checkout_fondy_form input:-ms-input-placeholder{opacity:.4;color:#000;font-size:.75rem;transform:translate3d(0,-1px,0)}#checkout_fondy_form input::-ms-input-placeholder{opacity:.4;color:#000;font-size:.75rem;transform:translate3d(0,-1px,0)}#checkout_fondy_form input::placeholder{opacity:.4;color:#000;font-size:.75rem;transform:translate3d(0,-1px,0)}#checkout_fondy_form .f-container{width:100%}#checkout_fondy_form{max-width:350px;margin:0 auto 0 0}#checkout_fondy_form .error-wrapper{padding:.15rem .15rem 1rem;display:none;color:red;font-size:1rem}#checkout_fondy_form .error-wrapper.show{display:block}#checkout_fondy_form button.button{cursor:pointer}#checkout_fondy_form button.button,#checkout_fondy_form input.input{min-height:36px;padding:0;border:1px solid #ccc;border-radius:5px;display:block;width:100%;box-sizing:border-box;outline:0;text-align:center}#checkout_fondy_form button.button:focus,#checkout_fondy_form input.input:focus{box-shadow:inset 0 0 1px 1px #d3d3d3;border-color:gray;position:relative;z-index:2}#checkout_fondy_form .input-wrapper{margin:0 0 .85rem}#checkout_fondy_form .input-wrapper:last-child{margin-bottom:0}#checkout_fondy_form .input-label{font-size:.85rem;color:gray}#checkout_fondy_form .input-field,#checkout_fondy_form .input-label{box-sizing:border-box;padding:.15rem;float:left}#checkout_fondy_form .input-wrapper:after{clear:both;content:'';display:block}#checkout_fondy_form .w-1{display:inline-block;width:100%;position:relative}#checkout_fondy_form .w-2{display:inline-block;width:50%}#checkout_fondy_form .w-3{display:inline-block;width:33.33333%}#checkout_fondy_form .w-3-2{display:inline-block;width:66.66666%}#checkout_fondy_form .w-4{display:inline-block;width:25%}#checkout_fondy_form .w-rigth{float:right!important}#checkout_fondy_form #f_card_sep{width:30px;height:25px;border-radius:5px;background:#ccc;position:absolute;right:5px;top:23%}@media (max-width:1024px) and (min-width:767px){#checkout_fondy_form #f_card_sep{display:none}}#checkout_fondy_form #f_card_sep.mastercard{background:url(../img/mc-logo.svg) center no-repeat;background-size:contain}#checkout_fondy_form #f_card_sep.visa{background:url(../img/visa-logo.svg) center no-repeat;background-size:contain}#checkout_fondy_form #f_card_sep:after{content:" ";display:block;width:70%;height:60%;border-top-right-radius:5px;border-bottom-right-radius:5px;background:#d9d9d9;position:absolute;top:20%}#checkout_fondy_form #f_card_sep.mastercard:after,#checkout_fondy_form #f_card_sep.visa:after{display:none}
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/assets/img/fondy_logo_cards.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
88 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/assets/img/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cloudipsp/wordpress/1fc23d2b1489c9ce74d07888dd01c78923a3c2f7/woocommerce/fondy-woocommerce-payment-gateway/assets/img/icon-128x128.png
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/assets/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cloudipsp/wordpress/1fc23d2b1489c9ce74d07888dd01c78923a3c2f7/woocommerce/fondy-woocommerce-payment-gateway/assets/img/logo.png
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/assets/img/mc-logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/assets/img/visa-logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/assets/js/fondy_embedded.js:
--------------------------------------------------------------------------------
1 | document.addEventListener("DOMContentLoaded", () => fondy("#fondy-checkout-container", FondyPaymentArguments));
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/assets/js/fondy_seamless.js:
--------------------------------------------------------------------------------
1 | function f_block(e) {
2 | f_is_blocked(e) || e.addClass("processing").block({message: null, overlayCSS: {background: "#fff", opacity: .6}})
3 | }
4 | function f_is_blocked(e) {
5 | return e.is(".processing") || e.parents(".processing").length
6 | }
7 | function f_unblock(e) {
8 | e.removeClass("processing").unblock()
9 | }
10 | function nextInput(e, r) {
11 | clearTimeout(e.keydownIdle), e.keydownIdle = setTimeout(function (t, o, n, a, c) {
12 | n = (o = Array.prototype.slice.call(e.form.elements)).indexOf(e), 0 === (c = Number(e.value.length)) && 8 === r.keyCode ? t = o[--n] : c === Number(e.getAttribute("maxlength")) && (t = o[++n]), t && (t.focus(), "setSelectionRange" in t && t === document.activeElement && t.setSelectionRange(0, t.value.length))
13 | })
14 | }
15 | function fondy_submit_order(e) {
16 | if (jQuery("#payment_method_fondy").is(":checked")) {
17 | (e || window.event).preventDefault();
18 | var r = jQuery("form[name=checkout]");
19 | !r.length && jQuery(".checkout.woocommerce-checkout").length ? r = jQuery(".checkout.woocommerce-checkout") : jQuery("#checkout_fondy_form").find(".error-wrapper").html("Invalid checkout form, please disable on checkout method and try another."), f_clean_error();
20 | var t = jQuery("#fondy_ccard"), o = jQuery("#fondy_expiry_month"), n = jQuery("#fondy_expiry_year"), a = jQuery("#fondy_cvv2");
21 | if (console.log(payform.parseCardType(t.val())), console.log(f_valid_credit_card(t.val())), !f_valid_credit_card(t.val()))return fondy_error(t);
22 | if (!f_valid_month(o.val()))return fondy_error(o);
23 | if (!f_valid_year(n.val()))return fondy_error(n);
24 | if (!f_valid_cvv2(a.val()))return fondy_error(a);
25 | jQuery("#checkout_fondy_form").find(".error-wrapper").hide();
26 | var c = r.serialize() + "&" + jQuery.param({
27 | action: "generate_ajax_order_fondy_info",
28 | nonce_code: fondy_info.nonce
29 | });
30 | f_block(jQuery("#checkout_fondy_form")), f_block(jQuery("#place_order")), jQuery.post(fondy_info.url, c, function (e) {
31 | if ("success" === e.result) {
32 | jQuery("input[name='token']").length || jQuery("#checkout_fondy_form").append('9&&(e-=9),l+=e;return l%10==0},s=function(t){var e;return!(null==("undefined"!=typeof document&&null!==document&&null!=(e=document.selection)?e.createRange:void 0)||!document.selection.createRange().text)||null!=t.selectionStart&&t.selectionStart!==t.selectionEnd},C=function(t){var e,n,r,a,u,l,i,o;for(null==t&&(t=""),r="0123456789",a="0123456789",o="",u=0,i=(n=t.split("")).length;u-1&&(e=a[l]),o+=e;return o},m=function(t){var e;if(e=n(t.target),t.target.value=v.formatCardNumber(t.target.value),null!=e&&"change"!==t.type)return t.target.setSelectionRange(e,e)},g=function(t){var e,r,u,l,i,o,c;if(u=String.fromCharCode(t.which),/^\d+$/.test(u)&&(c=t.target.value,e=a(c+u),l=(c.replace(/\D/g,"")+u).length,o=16,e&&(o=e.length[e.length.length-1]),!(l>=o||(r=n(t.target))&&r!==c.length)))return(i=e&&"amex"===e.type?/^(\d{4}|\d{4}\s\d{6})$/:/(?:^|\s)(\d{4})$/).test(c)?(t.preventDefault(),setTimeout(function(){return t.target.value=c+" "+u})):i.test(c+u)?(t.preventDefault(),setTimeout(function(){return t.target.value=c+u+" "})):void 0},i=function(t){var e,r;if(r=t.target.value,8===t.which&&(!(e=n(t.target))||e===r.length))return/\d\s$/.test(r)?(t.preventDefault(),setTimeout(function(){return t.target.value=r.replace(/\d\s$/,"")})):/\s\d?$/.test(r)?(t.preventDefault(),setTimeout(function(){return t.target.value=r.replace(/\d$/,"")})):void 0},y=function(t){var e;if(e=n(t.target),t.target.value=v.formatCardExpiry(t.target.value),null!=e&&"change"!==t.type)return t.target.setSelectionRange(e,e)},c=function(t){var e,n;if(e=String.fromCharCode(t.which),/^\d+$/.test(e))return n=t.target.value+e,/^\d$/.test(n)&&"0"!==n&&"1"!==n?(t.preventDefault(),setTimeout(function(){return t.target.value="0"+n+" / "})):/^\d\d$/.test(n)?(t.preventDefault(),setTimeout(function(){return t.target.value=n+" / "})):void 0},h=function(t){var e,n;if(e=String.fromCharCode(t.which),/^\d+$/.test(e))return n=t.target.value,/^\d\d$/.test(n)?t.target.value=n+" / ":void 0},f=function(t){var e,n;if("/"===(n=String.fromCharCode(t.which))||" "===n)return e=t.target.value,/^\d$/.test(e)&&"0"!==e?t.target.value="0"+e+" / ":void 0},o=function(t){var e,r;if(r=t.target.value,8===t.which&&(!(e=n(t.target))||e===r.length))return/\d\s\/\s$/.test(r)?(t.preventDefault(),setTimeout(function(){return t.target.value=r.replace(/\d\s\/\s$/,"")})):void 0},p=function(t){var e;if(e=n(t.target),t.target.value=C(t.target.value).replace(/\D/g,"").slice(0,4),null!=e&&"change"!==t.type)return t.target.setSelectionRange(e,e)},S=function(t){var e;if(!(t.metaKey||t.ctrlKey||0===t.which||t.which<33))return e=String.fromCharCode(t.which),/^\d+$/.test(e)?void 0:t.preventDefault()},$=function(t){var e,n,r;if(n=String.fromCharCode(t.which),/^\d+$/.test(n)&&!s(t.target))return r=(t.target.value+n).replace(/\D/g,""),(e=a(r))&&r.length>e.length[e.length.length-1]?t.preventDefault():r.length>16?t.preventDefault():void 0},w=function(t){var e;if(e=String.fromCharCode(t.which),/^\d+$/.test(e)&&!s(t.target))return(t.target.value+e).replace(/\D/g,"").length>6?t.preventDefault():void 0},D=function(t){var e;if(e=String.fromCharCode(t.which),/^\d+$/.test(e)&&!s(t.target))return(t.target.value+e).length>4?t.preventDefault():void 0},v.cvcInput=function(t){return r(t,"keypress",S),r(t,"keypress",D),r(t,"paste",p),r(t,"change",p),r(t,"input",p)},v.expiryInput=function(t){return r(t,"keypress",S),r(t,"keypress",w),r(t,"keypress",c),r(t,"keypress",f),r(t,"keypress",h),r(t,"keydown",o),r(t,"change",y),r(t,"input",y)},v.cardNumberInput=function(t){return r(t,"keypress",S),r(t,"keypress",$),r(t,"keypress",g),r(t,"keydown",i),r(t,"paste",m),r(t,"change",m),r(t,"input",m)},v.numericInput=function(t){return r(t,"keypress",S),r(t,"paste",S),r(t,"change",S),r(t,"input",S)},v.parseCardExpiry=function(t){var e,n,r;return e=(n=(t=t.replace(/\s/g,"")).split("/",2))[0],2===(null!=(r=n[1])?r.length:void 0)&&/^\d+$/.test(r)&&(r=(new Date).getFullYear().toString().slice(0,2)+r),{month:e=parseInt(e,10),year:r=parseInt(r,10)}},v.validateCardNumber=function(e){var n,r;return e=(e+"").replace(/\s+|-/g,""),!!/^\d+$/.test(e)&&(!!(n=a(e))&&(r=e.length,t.call(n.length,r)>=0&&(!1===n.luhn||d(e))))},v.validateCardExpiry=function(t,e){var n,r,a;return"object"==typeof t&&"month"in t&&(t=(a=t).month,e=a.year),!(!t||!e)&&(t=String(t).trim(),e=String(e).trim(),!!/^\d+$/.test(t)&&(!!/^\d+$/.test(e)&&(1<=t&&t<=12&&(2===e.length&&(e=e<70?"20"+e:"19"+e),4===e.length&&(r=new Date(e,t),n=new Date,r.setMonth(r.getMonth()-1),r.setMonth(r.getMonth()+1,1),r>n)))))},v.validateCardCVC=function(e,n){var r,a;return e=String(e).trim(),!!/^\d+$/.test(e)&&(null!=(r=u(n))?(a=e.length,t.call(r.cvcLength,a)>=0):e.length>=3&&e.length<=4)},v.parseCardType=function(t){var e;return t&&(null!=(e=a(t))?e.type:void 0)||null},v.formatCardNumber=function(t){var e,n,r,u;return t=(t=C(t)).replace(/\D/g,""),(e=a(t))?(u=e.length[e.length.length-1],t=t.slice(0,u),e.format.global?null!=(r=t.match(e.format))?r.join(" "):void 0:null!=(n=e.format.exec(t))?(n.shift(),(n=n.filter(Boolean)).join(" ")):void 0):t},v.formatCardExpiry=function(t){var e,n,r,a;return(n=(t=C(t)).match(/^\D*(\d{1,2})(\D+)?(\d{1,4})?/))?(e=n[1]||"",r=n[2]||"",(a=n[3]||"").length>0?r=" / ":" /"===r?(e=e.substring(0,1),r=""):2===e.length||r.length>0?r=" / ":1===e.length&&"0"!==e&&"1"!==e&&(e="0"+e,r=" / "),e+r+a):""},v})}).call(this);
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/fondy-woocommerce-payment-gateway.php:
--------------------------------------------------------------------------------
1 | isAcceptableEnv())
54 | return;
55 |
56 | require_once dirname(__FILE__) . '/includes/class-wc-fondy-api.php';
57 |
58 | require_once dirname(__FILE__) . '/includes/integration-types/Fondy_Embedded.php';
59 | require_once dirname(__FILE__) . '/includes/integration-types/Fondy_Hosted.php';
60 | require_once dirname(__FILE__) . '/includes/integration-types/Fondy_Seamless.php';
61 |
62 | require_once dirname(__FILE__) . '/includes/abstract-wc-fondy-payment-gateway.php';
63 | require_once dirname(__FILE__) . '/includes/payment-methods/class-wc-gateway-fondy-card.php';
64 | require_once dirname(__FILE__) . '/includes/payment-methods/class-wc-gateway-fondy-bank.php';
65 | require_once dirname(__FILE__) . '/includes/payment-methods/class-wc-gateway-fondy-localmethods.php';
66 |
67 | require_once dirname(__FILE__) . '/includes/compat/class-wc-fondy-pre-orders-compat.php';
68 | require_once dirname(__FILE__) . '/includes/compat/class-wc-fondy-subscriptions-compat.php';
69 |
70 | // This action hook registers our PHP class as a WooCommerce payment gateway
71 | add_filter('woocommerce_payment_gateways', [$this, 'add_gateways']);
72 | // localization
73 | load_plugin_textdomain('fondy-woocommerce-payment-gateway', false, basename(WC_FONDY_DIR) . '/languages/');
74 | // add plugin setting button
75 | add_filter('plugin_action_links_' . plugin_basename(__FILE__), [$this, 'plugin_action_links']);
76 |
77 | $this->updateSettings();
78 | }
79 |
80 | public function add_gateways($gateways)
81 | {
82 | $gateways[] = 'WC_Gateway_Fondy_Card';
83 | $gateways[] = 'WC_Gateway_Fondy_Bank';
84 | $gateways[] = 'WC_Gateway_Fondy_LocalMethods';
85 | return $gateways;
86 | }
87 |
88 | /**
89 | * render setting button in wp plugins list
90 | *
91 | * @param $links
92 | * @return array|string[]
93 | */
94 | public function plugin_action_links($links)
95 | {
96 | $plugin_links = [
97 | sprintf(
98 | '%2$s',
99 | admin_url('admin.php?page=wc-settings&tab=checkout§ion=fondy'),
100 | __('Settings', 'fondy-woocommerce-payment-gateway')
101 | ),
102 | ];
103 |
104 | return array_merge($plugin_links, $links);
105 | }
106 |
107 | /**
108 | * migrate old settings
109 | */
110 | public function updateSettings()
111 | {
112 | if (version_compare(get_option('fondy_woocommerce_version'), WC_FONDY_VERSION, '<')) {
113 | update_option('fondy_woocommerce_version', WC_FONDY_VERSION);
114 | $settings = maybe_unserialize(get_option('woocommerce_fondy_settings', []));
115 |
116 | if (isset($settings['salt'])) {
117 | $settings['secret_key'] = $settings['salt'];
118 | unset($settings['salt']);
119 | }
120 |
121 | if (isset($settings['default_order_status'])){
122 | $settings['completed_order_status'] = $settings['default_order_status'];
123 | unset($settings['default_order_status']);
124 | }
125 |
126 | if (isset($settings['payment_type'])) {
127 | switch ($settings['payment_type']) {
128 | case 'page_mode':
129 | $settings['integration_type'] = 'embedded';
130 | break;
131 | case 'on_checkout_page':
132 | $settings['integration_type'] = 'seamless';
133 | break;
134 | default:
135 | $settings['integration_type'] = 'hosted';
136 | }
137 | unset($settings['payment_type']);
138 | }
139 |
140 | unset($settings['calendar']);
141 | unset($settings['page_mode_instant']);
142 | unset($settings['on_checkout_page']);
143 | unset($settings['force_lang']);
144 |
145 | update_option('woocommerce_fondy_settings', $settings);
146 | }
147 | }
148 |
149 | /**
150 | * check env
151 | *
152 | * @return bool
153 | */
154 | public function isAcceptableEnv()
155 | {
156 | if (version_compare(WC_VERSION, WC_FONDY_MIN_WC_VER, '<')) {
157 | add_action('admin_notices', [$this, 'woocommerce_fondy_wc_not_supported_notice']);
158 | return false;
159 | }
160 |
161 | if (version_compare(phpversion(), WC_FONDY_MIN_PHP_VER, '<')) {
162 | add_action('admin_notices', [$this, 'woocommerce_fondy_php_not_supported_notice']);
163 |
164 | return false;
165 | }
166 |
167 | return true;
168 | }
169 |
170 | public function woocommerce_fondy_wc_not_supported_notice()
171 | {
172 | /* translators: 1) required WC version 2) current WC version */
173 | $message = sprintf(__('Payment Gateway Fondy requires WooCommerce %1$s or greater to be installed and active. WooCommerce %2$s is no longer supported.', 'fondy-woocommerce-payment-gateway'), WC_FONDY_MIN_WC_VER, WC_VERSION);
174 | echo '';
175 | }
176 |
177 | public function woocommerce_fondy_php_not_supported_notice()
178 | {
179 | /* translators: 1) required PHP version 2) current PHP version */
180 | $message = sprintf(__('The minimum PHP version required for Fondy Payment Gateway is %1$s. You are running %2$s.', 'fondy-woocommerce-payment-gateway'), WC_FONDY_MIN_PHP_VER, phpversion());
181 | echo '';
182 | }
183 |
184 | /**
185 | * prevent from being unserialized (which would create a second instance of it)
186 | */
187 | public function __wakeup()
188 | {
189 | throw new Exception("Cannot unserialize singleton");
190 | }
191 | }
192 | }
193 |
194 | function woocommerce_gateway_fondy() {
195 | return WC_Fondy::getInstance();
196 | }
197 |
198 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/includes/abstract-wc-fondy-payment-gateway.php:
--------------------------------------------------------------------------------
1 | test_mode) {
29 | $this->merchant_id = WC_Fondy_API::TEST_MERCHANT_ID;
30 | $this->secret_key = WC_Fondy_API::TEST_MERCHANT_SECRET_KEY;
31 | }
32 |
33 | WC_Fondy_API::setMerchantID($this->merchant_id);
34 | WC_Fondy_API::setSecretKey($this->secret_key);
35 |
36 | // callback handler
37 | add_action('woocommerce_api_' . strtolower(get_class($this)), [$this, 'callbackHandler']);
38 |
39 | // todo mb thankyoupage change order status or clear cart
40 | // add_action('woocommerce_before_thankyou', [$this, '']);
41 |
42 | // This action hook saves the settings
43 | add_action('woocommerce_update_options_payment_gateways_' . $this->id, [$this, 'process_admin_options']);
44 |
45 | if ($this->integration_type === 'embedded') {
46 | add_action('wp_enqueue_scripts', [$this, 'includeEmbeddedAssets']);
47 | add_action('woocommerce_receipt_' . $this->id, [$this, 'receipt_page']);
48 | }
49 |
50 | if ($this->integration_type === 'seamless') {
51 | add_action('wp_enqueue_scripts', [$this, 'includeSeamlessAssets']);
52 | add_filter('woocommerce_order_button_html', [$this, 'custom_order_button_html']);
53 | add_action('wp_ajax_nopriv_generate_ajax_order_fondy_info', [$this, 'generate_ajax_order_fondy_info'], 99);
54 | add_action('wp_ajax_generate_ajax_order_fondy_info', [$this, 'generate_ajax_order_fondy_info'], 99);
55 | }
56 | }
57 |
58 | /**
59 | * Process Payment.
60 | * Run after submit order button.
61 | *
62 | * @param int $order_id
63 | * @return array
64 | */
65 | public function process_payment($order_id)
66 | {
67 | $order = wc_get_order($order_id);
68 | $processResult = ['result' => 'success', 'redirect' => ''];
69 |
70 | try {
71 | if ($this->integration_type === 'embedded') {
72 | $processResult['redirect'] = $order->get_checkout_payment_url(true);
73 | } elseif ($this->integration_type === 'seamless') {
74 | $processResult['token'] = $this->getCheckoutToken($order);
75 | } else {
76 | $paymentParams = $this->getPaymentParams($order);
77 | $processResult['redirect'] = WC_Fondy_API::getCheckoutUrl($paymentParams);
78 | }
79 | } catch (Exception $e) {
80 | wc_add_notice($e->getMessage(), 'error');
81 | $processResult['result'] = 'fail';
82 | }
83 |
84 | // in prev version we are use session to save redirect_url
85 | return apply_filters('wc_gateway_fondy_process_payment_complete', $processResult, $order);
86 | }
87 |
88 | /**
89 | * Fondy payment parameters
90 | *
91 | * @param WC_Order $order
92 | * @return mixed|void
93 | * @since 3.0.0
94 | */
95 | public function getPaymentParams($order)
96 | {
97 | $params = [
98 | 'order_id' => $this->createFondyOrderID($order),
99 | 'order_desc' => __('Order №: ', 'fondy-woocommerce-payment-gateway') . $order->get_id(),
100 | 'amount' => (int)round($order->get_total() * 100),
101 | 'currency' => get_woocommerce_currency(),
102 | 'lang' => $this->getLanguage(),
103 | 'sender_email' => $this->getEmail($order),
104 | 'response_url' => $this->getResponseUrl($order),
105 | 'server_callback_url' => $this->getCallbackUrl(),
106 | 'reservation_data' => $this->getReservationData($order),
107 | ];
108 |
109 | return apply_filters('wc_gateway_fondy_payment_params', $params, $order);
110 | }
111 |
112 | /**
113 | * Generate unique fondy order id
114 | * and save it to order meta.
115 | *
116 | * @param $order
117 | * @return string
118 | * @since 3.0.0
119 | */
120 | public function createFondyOrderID($order)
121 | {
122 | $fondyOrderID = $order->get_id() . self::ORDER_SEPARATOR . time();
123 | $order->update_meta_data(self::META_NAME_FONDY_ORDER_ID, $fondyOrderID);
124 | $order->save();
125 |
126 | return $fondyOrderID;
127 | }
128 |
129 | /**
130 | * Extracts fondy order if from order meta
131 | *
132 | * @param WC_Order $order
133 | * @return mixed
134 | * @since 3.0.0
135 | */
136 | public function getFondyOrderID($order)
137 | {
138 | return $order->get_meta(self::META_NAME_FONDY_ORDER_ID);
139 | }
140 |
141 | /**
142 | * Return custom or default order thank-you page url
143 | *
144 | * @param WC_Order $order
145 | * @return false|string|WP_Error
146 | * @since 3.0.0
147 | */
148 | public function getResponseUrl($order)
149 | {
150 | return $this->redirect_page_id ? get_permalink($this->redirect_page_id) : $this->get_return_url($order);
151 | }
152 |
153 | /**
154 | * Gets the transaction URL linked to Fondy merchant portal dashboard.
155 | *
156 | * @param WC_Order $order
157 | * @return string
158 | * @since 3.0.0
159 | */
160 | public function get_transaction_url($order)
161 | {
162 | $this->view_transaction_url = 'https://portal.fondy.eu/mportal/#/payments/order/%s';
163 | return parent::get_transaction_url($order);
164 | }
165 |
166 | /**
167 | * get checkout token
168 | * cache it to session
169 | *
170 | * @param $order
171 | * @return array|string
172 | * @throws Exception
173 | */
174 | public function getCheckoutToken($order)
175 | {
176 | $orderID = $order->get_id();
177 | $amount = (int)round($order->get_total() * 100);
178 | $currency = get_woocommerce_currency();
179 | $sessionTokenKey = 'session_token_' . md5($this->merchant_id . '_' . $orderID . '_' . $amount . '_' . $currency);
180 | $checkoutToken = WC()->session->get($sessionTokenKey);
181 |
182 | if (empty($checkoutToken)) {
183 | $paymentParams = $this->getPaymentParams($order);
184 | $checkoutToken = WC_Fondy_API::getCheckoutToken($paymentParams);
185 | WC()->session->set($sessionTokenKey, $checkoutToken);
186 | }
187 |
188 | return $checkoutToken;
189 | }
190 |
191 | /**
192 | * remove checkoutToken cache from session
193 | *
194 | * @param $paymentParams
195 | * @param $orderID
196 | */
197 | public function clearCache($paymentParams, $orderID)
198 | {
199 | WC()->session->__unset('session_token_' . md5($this->merchant_id . '_' . $orderID . '_' . $paymentParams['amount'] . '_' . $paymentParams['currency']));
200 | }
201 |
202 | /**
203 | * Fondy widget options
204 | *
205 | * @return array
206 | * @since 3.0.0
207 | */
208 | public function getPaymentOptions()
209 | {
210 | return [
211 | 'full_screen' => false,
212 | 'button' => true,
213 | 'email' => true,
214 | 'show_menu_first' => false,
215 | ];
216 | }
217 |
218 | /**
219 | * Site lang cropped
220 | *
221 | * @return string
222 | */
223 | public function getLanguage()
224 | {
225 | return substr(get_bloginfo('language'), 0, 2);
226 | }
227 |
228 | /**
229 | * Order Email
230 | *
231 | * @param WC_Order $order
232 | * @return string
233 | */
234 | public function getEmail($order)
235 | {
236 | $current_user = wp_get_current_user();
237 | $email = $current_user->user_email;
238 |
239 | if (empty($email)) {
240 | $order_data = $order->get_data();
241 | $email = $order_data['billing']['email'];
242 | }
243 |
244 | return $email;
245 | }
246 |
247 | public function getCallbackUrl()
248 | {
249 | return wc_get_endpoint_url('wc-api', strtolower(get_class($this)), get_site_url());
250 | }
251 |
252 | /**
253 | * Fondy antifraud parameters
254 | *
255 | * @param WC_Order $order
256 | * @return string
257 | * @since 3.0.0
258 | */
259 | public function getReservationData($order)
260 | {
261 | $orderData = $order->get_data();
262 | $orderDataBilling = $orderData['billing'];
263 |
264 | $reservationData = [
265 | 'customer_zip' => $orderDataBilling['postcode'],
266 | 'customer_name' => $orderDataBilling['first_name'] . ' ' . $orderDataBilling['last_name'],
267 | 'customer_address' => $orderDataBilling['address_1'] . ' ' . $orderDataBilling['city'],
268 | 'customer_state' => $orderDataBilling['state'],
269 | 'customer_country' => $orderDataBilling['country'],
270 | 'phonemobile' => $orderDataBilling['phone'],
271 | 'account' => $orderDataBilling['email'],
272 | 'cms_name' => 'Wordpress',
273 | 'cms_version' => get_bloginfo('version'),
274 | 'cms_plugin_version' => WC_FONDY_VERSION . ' (Woocommerce ' . WC_VERSION . ')',
275 | 'shop_domain' => get_site_url(),
276 | 'path' => isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '',
277 | 'products' => $this->getReservationDataProducts($order->get_items())
278 | ];
279 |
280 | return base64_encode(json_encode($reservationData));
281 | }
282 |
283 | /**
284 | * data to create fiscal check
285 | *
286 | * @param $orderItemsProducts
287 | * @return array
288 | */
289 | public function getReservationDataProducts($orderItemsProducts)
290 | {
291 | $reservationDataProducts = [];
292 |
293 | try {
294 | /** @var WC_Order_Item_Product $orderProduct */
295 | foreach ($orderItemsProducts as $orderProduct) {
296 | $reservationDataProducts[] = [
297 | 'id' => $orderProduct->get_product_id(),
298 | 'name' => $orderProduct->get_name(),
299 | 'price' => $orderProduct->get_product()->get_price(),
300 | 'total_amount' => $orderProduct->get_total(),
301 | 'quantity' => $orderProduct->get_quantity(),
302 | ];
303 | }
304 | } catch (Exception $e) {
305 | $reservationDataProducts['error'] = $e->getMessage();
306 | }
307 |
308 | return $reservationDataProducts;
309 | }
310 |
311 |
312 | /**
313 | * @return array
314 | */
315 | public function getIntegrationTypes()
316 | {
317 | $integration_types = [];
318 |
319 | if (isset($this->embedded)) {
320 | $integration_types['embedded'] = __('Embedded', 'fondy-woocommerce-payment-gateway');
321 | }
322 |
323 | if (isset($this->hosted)) {
324 | $integration_types['hosted'] = __('Hosted', 'fondy-woocommerce-payment-gateway');
325 | }
326 |
327 | if (isset($this->seamless)) {
328 | $integration_types['seamless'] = __('Seamless', 'fondy-woocommerce-payment-gateway');
329 | }
330 |
331 | return $integration_types;
332 | }
333 |
334 | /**
335 | * @param bool $title
336 | * @param bool $indent
337 | * @return array
338 | */
339 | public function fondy_get_pages($title = false, $indent = true)
340 | {
341 | $wp_pages = get_pages('sort_column=menu_order');
342 | $page_list = array();
343 | if ($title) {
344 | $page_list[] = $title;
345 | }
346 | foreach ($wp_pages as $page) {
347 | $prefix = '';
348 | // show indented child pages?
349 | if ($indent) {
350 | $has_parent = $page->post_parent;
351 | while ($has_parent) {
352 | $prefix .= ' - ';
353 | $next_page = get_post($has_parent);
354 | $has_parent = $next_page->post_parent;
355 | }
356 | }
357 | // add to page list array array
358 | $page_list[$page->ID] = $prefix . $page->post_title;
359 | }
360 |
361 | return $page_list;
362 | }
363 |
364 | /**
365 | * Getting all available woocommerce order statuses
366 | *
367 | * @return array
368 | */
369 | public function getPaymentOrderStatuses()
370 | {
371 | $order_statuses = function_exists('wc_get_order_statuses') ? wc_get_order_statuses() : [];
372 | $statuses = [
373 | 'default' => __('Default status', 'fondy-woocommerce-payment-gateway')
374 | ];
375 | if ($order_statuses) {
376 | foreach ($order_statuses as $k => $v) {
377 | $statuses[str_replace('wc-', '', $k)] = $v;
378 | }
379 | }
380 | return $statuses;
381 | }
382 |
383 | /**
384 | * Fondy callback handler
385 | *
386 | * @since 3.0.0
387 | */
388 | public function callbackHandler()
389 | {
390 | try {
391 | $requestBody = !empty($_POST) ? $_POST : json_decode(file_get_contents('php://input'), true);
392 | WC_Fondy_API::validateRequest($requestBody);
393 |
394 | if (!empty($requestBody['reversal_amount']) || $requestBody['tran_type'] === 'reverse') // todo MB add refund complete note
395 | exit; // just ignore reverse callback
396 |
397 | // order switch status process
398 | $orderID = strstr($requestBody['order_id'], self::ORDER_SEPARATOR, true);
399 | $order = wc_get_order($orderID);
400 | $this->clearCache($requestBody, $orderID); // remove checkoutToken if exist
401 |
402 | do_action('wc_gateway_fondy_receive_valid_callback', $requestBody, $order);
403 |
404 | switch ($requestBody['order_status']) {
405 | case self::ORDER_APPROVED: //we recive with this status in 3 type transaction callback - purchase, capture and partial reverse
406 | $this->fondyPaymentComplete($order, $requestBody['payment_id']);
407 | break;
408 | case self::ORDER_CREATED:
409 | case self::ORDER_PROCESSING:
410 | // we can receive processing status when Issuer bank declined payment. Mb add note.
411 | // in default WC set pending status to order
412 | break;
413 | case self::ORDER_DECLINED:
414 | $newOrderStatus = $this->declined_order_status != 'default' ? $this->declined_order_status : 'failed';
415 | /* translators: 1) fondy order status 2) fondy order id */
416 | $orderNote = sprintf(__('Transaction ERROR: order %1$s
Fondy ID: %2$s', 'fondy-woocommerce-payment-gateway'), $requestBody['order_status'], $requestBody['payment_id']);
417 | $order->update_status($newOrderStatus, $orderNote);
418 | break;
419 | case self::ORDER_EXPIRED:
420 | $newOrderStatus = $this->expired_order_status != 'default' ? $this->expired_order_status : 'cancelled';
421 | $orderNote = sprintf(__('Transaction ERROR: order %1$s
Fondy ID: %2$s', 'fondy-woocommerce-payment-gateway'), $requestBody['order_status'], $requestBody['payment_id']);
422 | $order->update_status($newOrderStatus, $orderNote);
423 | break;
424 | default:
425 | throw new Exception (__('Unhandled fondy order status', 'fondy-woocommerce-payment-gateway'));
426 | }
427 | } catch (Exception $e) {
428 | if (!empty($order))
429 | $order->update_status('failed', $e->getMessage());
430 | wp_send_json(['error' => $e->getMessage()], 400);
431 | }
432 |
433 | status_header(200);
434 | exit;
435 | }
436 |
437 | /**
438 | * Fondy payment complete process
439 | *
440 | * @param WC_Order $order
441 | * @param $transactionID
442 | * @since 3.0.0
443 | */
444 | public function fondyPaymentComplete($order, $transactionID)
445 | {
446 | if (!$order->is_paid()) {
447 | $order->payment_complete($transactionID);
448 | /* translators: fondy order id */
449 | $orderNote = sprintf(__('Fondy payment successful.
Fondy ID: %1$s
', 'fondy-woocommerce-payment-gateway'), $transactionID);
450 |
451 | if ($this->completed_order_status != 'default') {
452 | WC()->cart->empty_cart();
453 | $order->update_status($this->completed_order_status, $orderNote);
454 | } else $order->add_order_note($orderNote);
455 | }
456 | }
457 | }
458 |
459 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/includes/class-wc-fondy-api.php:
--------------------------------------------------------------------------------
1 | checkout_url;
72 | }
73 |
74 | /**
75 | * @throws Exception
76 | */
77 | public static function getCheckoutToken($requestData)
78 | {
79 | $response = self::sendToAPI('checkout/token', $requestData);
80 |
81 | return $response->token;
82 | }
83 |
84 | /**
85 | * @throws Exception
86 | */
87 | public static function reverse($requestData)
88 | {
89 | return self::sendToAPI('reverse/order_id', $requestData);
90 | }
91 |
92 | /**
93 | * @throws Exception
94 | */
95 | public static function capture($requestData)
96 | {
97 | return self::sendToAPI('capture/order_id', $requestData);
98 | }
99 |
100 | /**
101 | * @throws Exception
102 | */
103 | public static function recurring($requestData)
104 | {
105 | return self::sendToAPI('recurring', $requestData);
106 | }
107 |
108 | /**
109 | * @param $endpoint
110 | * @param $requestData
111 | * @return mixed
112 | * @throws Exception
113 | */
114 | public static function sendToAPI($endpoint, $requestData)
115 | {
116 | $requestData['merchant_id'] = self::getMerchantID();
117 | $requestData['signature'] = self::getSignature($requestData, self::getSecretKey());
118 |
119 | $response = wp_safe_remote_post(
120 | self::$ApiUrl . $endpoint,
121 | [
122 | 'headers' => ["Content-type" => "application/json;charset=UTF-8"],
123 | 'body' => json_encode(['request' => $requestData]),
124 | 'timeout' => 70,
125 | ]
126 | );
127 |
128 | if (is_wp_error($response))
129 | throw new Exception($response->get_error_message());
130 |
131 | $response_code = wp_remote_retrieve_response_code($response);
132 | if ($response_code != 200)
133 | throw new Exception("Fondy API Return code is $response_code. Please try again later.");
134 |
135 | $result = json_decode($response['body']);
136 |
137 | if (empty($result->response) && empty($result->response->response_status))
138 | throw new Exception('Unknown Fondy API answer.');
139 |
140 | if ($result->response->response_status != 'success')
141 | throw new Exception($result->response->error_message);
142 |
143 | return $result->response;
144 | }
145 |
146 | /**
147 | * @param $data
148 | * @param $password
149 | * @param bool $encoded
150 | * @return mixed|string
151 | */
152 | public static function getSignature($data, $password, $encoded = true)
153 | {
154 | $data = array_filter($data, function ($var) {
155 | return $var !== '' && $var !== null;
156 | });
157 | ksort($data);
158 |
159 | $str = $password;
160 | foreach ($data as $k => $v) {
161 | $str .= '|' . $v;
162 | }
163 |
164 | return $encoded ? sha1($str) : $str;
165 | }
166 |
167 | /**
168 | * Callback validation process
169 | *
170 | * @param $requestBody
171 | * @throws Exception
172 | */
173 | public static function validateRequest($requestBody)
174 | {
175 | if (empty($requestBody))
176 | throw new Exception('Empty request body.');
177 |
178 | if (self::$merchantID != $requestBody['merchant_id'])
179 | throw new Exception ('Merchant data is incorrect.');
180 |
181 | $requestSignature = $requestBody['signature'];
182 | unset($requestBody['response_signature_string']);
183 | unset($requestBody['signature']);
184 | if ($requestSignature !== self::getSignature($requestBody, self::$secretKey))
185 | throw new Exception ('Signature is not valid');
186 | }
187 | }
188 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/includes/compat/class-wc-fondy-pre-orders-compat.php:
--------------------------------------------------------------------------------
1 | paymentGateway = $gateway;
18 | add_action('wc_pre_orders_process_pre_order_completion_payment_' . $this->paymentGateway->id, [$this, 'process_pre_order_payments']);
19 | add_action('wc_gateway_fondy_admin_options', [$this, 'getPreOrdersNotice']);
20 | add_filter('wc_gateway_fondy_payment_params', [$this, 'getPreOrdersPaymentParams'], 10, 2);
21 | }
22 |
23 | /**
24 | * Process a pre-order payment when the pre-order is released.
25 | *
26 | * @param WC_Order $order
27 | *
28 | * @return void
29 | */
30 | public function process_pre_order_payments($order)
31 | {
32 | try {
33 | $capture = WC_Fondy_API::capture([
34 | 'order_id' => $order->get_meta(WC_Fondy_Payment_Gateway::META_NAME_FONDY_ORDER_ID),
35 | 'currency' => esc_attr(get_woocommerce_currency()),
36 | 'amount' => (int)round($order->get_total() * 100),
37 | ]);
38 |
39 | if ($capture->capture_status === 'captured') {
40 | $order->add_order_note(__('Fondy capture successful.', 'fondy-woocommerce-payment-gateway'));
41 | $order->payment_complete();
42 | } else {
43 | throw new Exception('Transaction: ' . $capture->response_status . '
' . $capture->error_message . '
Request_id: ' . $capture->request_id);
44 | }
45 | } catch (Exception $e) {
46 | /* translators: error message */
47 | $order->update_status('failed', sprintf(__('Pre-order payment for order failed. Reason: %s', 'fondy-woocommerce-payment-gateway'), $e->getMessage()));
48 | }
49 | }
50 |
51 | public function getPreOrdersPaymentParams($params, $order)
52 | {
53 | if (WC_Pre_Orders_Order::order_contains_pre_order($order))
54 | $params['preauth'] = 'Y';
55 |
56 | return $params;
57 | }
58 |
59 | public function getPreOrdersNotice()
60 | {
61 | $message = __('Note: transactions by using Pre-Orders must be finished in 7 days term or it will be auto-captured.', 'fondy-woocommerce-payment-gateway');
62 | echo '';
63 | }
64 | }
65 |
66 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/includes/compat/class-wc-fondy-subscriptions-compat.php:
--------------------------------------------------------------------------------
1 | paymentGateway = $paymentGateway;
21 | add_filter('wc_gateway_fondy_payment_params', [$this, 'subscriptionsPaymentParams'], 10, 2);
22 | add_filter('wc_gateway_fondy_process_payment_complete', [$this, 'subscriptionsProcessPaymentComplete'], 10, 2);
23 | add_action('woocommerce_scheduled_subscription_payment_' . $this->paymentGateway->id, [$this, 'scheduled_subscription_payment'], 10, 2);
24 | add_action('wc_gateway_fondy_receive_valid_callback', [$this, 'saveToken'], 10, 2);
25 | }
26 |
27 | public function subscriptionsPaymentParams($params, $order)
28 | {
29 | if ($this->has_subscription($order)) {
30 | $params['required_rectoken'] = 'Y';
31 | if ((int)$order->get_total() === 0) {
32 | $order->add_order_note(__('Payment free trial verification', 'fondy-woocommerce-payment-gateway'));
33 | $params['verification'] = 'Y';
34 | $params['amount'] = 1;
35 | }
36 | }
37 |
38 | return $params;
39 | }
40 |
41 | public function subscriptionsProcessPaymentComplete($resultData, $order)
42 | {
43 | global $woocommerce;
44 |
45 | if ($this->has_subscription($order)) {
46 | if (get_current_user_id() === 0) {
47 | wc_add_notice(__('You must be logged in.', 'fondy-woocommerce-payment-gateway'), 'error');
48 | return [
49 | 'result' => 'fail',
50 | 'redirect' => $woocommerce->cart->get_checkout_url()
51 | ];
52 | }
53 | }
54 |
55 | return $resultData;
56 | }
57 |
58 | /**
59 | * Is $order a subscription?
60 | * @param WC_Order $order
61 | * @return boolean
62 | */
63 | public function has_subscription($order)
64 | {
65 | return (function_exists('wcs_order_contains_subscription') && (wcs_order_contains_subscription($order) || wcs_is_subscription($order) || wcs_order_contains_renewal($order)));
66 | }
67 |
68 | /**
69 | * @param $requestBody
70 | * @param $order
71 | */
72 | public function saveToken($requestBody, $order)
73 | {
74 | if (!empty($requestBody['rectoken']) && $this->has_subscription($order)) {
75 | $userID = $order->get_user_id();
76 |
77 | $metaValue = [
78 | 'token' => $requestBody['rectoken'],
79 | 'payment_id' => $this->paymentGateway->id
80 | ];
81 |
82 | if ($this->isTokenAlreadySaved($requestBody['rectoken'], $userID)) {
83 | update_user_meta($userID, self::META_NAME_FONDY_RECTOKEN, $metaValue);
84 | } else add_user_meta($userID, self::META_NAME_FONDY_RECTOKEN, $metaValue);
85 | }
86 | }
87 |
88 | /**
89 | * @param $token
90 | * @param $userID
91 | * @return bool
92 | */
93 | private function isTokenAlreadySaved($token, $userID)
94 | {
95 | $userTokens = get_user_meta($userID, self::META_NAME_FONDY_RECTOKEN);
96 |
97 | return array_search($token, array_column($userTokens, 'token'), true);
98 | }
99 |
100 |
101 | /**
102 | * scheduled_subscription_payment function.
103 | *
104 | * @param $amount_to_charge float The amount to charge.
105 | * @param $renewal_order WC_Order A WC_Order object created to record the renewal payment.
106 | */
107 | public function scheduled_subscription_payment($amount_to_charge, $renewal_order)
108 | {
109 | if ($amount_to_charge === 0) {
110 | $renewal_order->payment_complete();
111 | }
112 |
113 | try {
114 | $amount = (int)round($amount_to_charge * 100);
115 | $customerId = $renewal_order->get_customer_id();
116 |
117 | if (!$customerId)
118 | throw new Exception(__('Customer not found.', 'woocommerce'));
119 |
120 | $token = get_user_meta($customerId, self::META_NAME_FONDY_RECTOKEN);
121 |
122 | if (is_null($token))
123 | throw new Exception("Token not found.");
124 |
125 | if ($token[0]['payment_id'] !== $this->paymentGateway->id) //checkToken
126 | throw new Exception("Token expired, or token not found.");
127 |
128 | // $renewal_order->add_order_note('Order amount is: ' . $amount_to_charge);
129 | $subscriptionPayment = WC_Fondy_API::recurring([
130 | 'order_id' => $this->paymentGateway->createFondyOrderID($renewal_order),
131 | 'amount' => $amount,
132 | 'rectoken' => $token[0]['token'],
133 | 'sender_email' => $renewal_order->get_billing_email(),
134 | 'currency' => get_woocommerce_currency(),
135 | 'order_desc' => sprintf(
136 | __('Recurring payment for: %s', 'fondy-woocommerce-payment-gateway'),
137 | $renewal_order->get_order_number()
138 | ),
139 | ]);
140 |
141 | if ($subscriptionPayment->order_status === 'approved') {
142 | $renewal_order->update_status('completed');
143 | $renewal_order->payment_complete($subscriptionPayment->payment_id);
144 | $renewal_order->add_order_note("Fondy subscription payment successful.
Fondy ID: $subscriptionPayment->payment_id");
145 | } else {
146 | throw new Exception("Transaction ERROR: order $subscriptionPayment->order_status
Fondy ID: $subscriptionPayment->payment_id");
147 | }
148 | } catch (Exception $e) {
149 | /* translators: error message */
150 | $renewal_order->update_status('failed', sprintf(
151 | __('Subscription payment failed. Reason: %s', 'fondy-woocommerce-payment-gateway'),
152 | $e->getMessage()
153 | ));
154 | }
155 | }
156 | }
157 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/includes/integration-types/Fondy_Embedded.php:
--------------------------------------------------------------------------------
1 | enabled || (!is_cart() && !is_checkout_pay_page())) {
12 | return;
13 | }
14 |
15 | wp_enqueue_style('fondy-vue-css', 'https://pay.fondy.eu/latest/checkout-vue/checkout.css', null, WC_FONDY_VERSION);
16 | wp_enqueue_script('fondy-vue-js', 'https://pay.fondy.eu/latest/checkout-vue/checkout.js', null, WC_FONDY_VERSION);
17 |
18 | wp_register_script('fondy-init', plugins_url('assets/js/fondy_embedded.js', WC_FONDY_BASE_FILE), ['fondy-vue-js'], WC_FONDY_VERSION);
19 | wp_enqueue_style('fondy-embedded', plugins_url('assets/css/fondy_embedded.css', WC_FONDY_BASE_FILE), ['storefront-woocommerce-style', 'fondy-vue-css'], WC_FONDY_VERSION);
20 | }
21 |
22 | public function receipt_page($order_id)
23 | {
24 | $order = wc_get_order($order_id);
25 |
26 | try {
27 | $paymentArguments = [
28 | 'options' => $this->getPaymentOptions(),
29 | 'params' => ['token' => $this->getCheckoutToken($order)],
30 | ];
31 | } catch (Exception $e) {
32 | // wc_add_notice( $e->getMessage(), 'error' ); wc_print_notices();
33 | wp_die($e->getMessage());
34 | }
35 |
36 | wp_enqueue_script('fondy-init');
37 | wp_localize_script('fondy-init', 'FondyPaymentArguments', $paymentArguments);
38 |
39 | echo '';
40 | }
41 | }
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/includes/integration-types/Fondy_Hosted.php:
--------------------------------------------------------------------------------
1 | enabled || (!is_cart() && !is_checkout())) {
12 | return;
13 | }
14 |
15 | wp_enqueue_style('fondy-checkout', plugins_url('assets/css/fondy_seamless_old.css', WC_FONDY_BASE_FILE));
16 | wp_enqueue_script('fondy_pay_v2', 'https://unpkg.com/ipsp-js-sdk@latest/dist/checkout.min.js', ['jquery'], WC_FONDY_VERSION, true);
17 | wp_enqueue_script('fondy_pay_v2_woocom', plugins_url('assets/js/fondy_seamless.js', WC_FONDY_BASE_FILE), ['fondy_pay_v2'], WC_FONDY_VERSION, true);
18 | wp_enqueue_script('fondy_pay_v2_card', plugins_url('assets/js/payform.min.js', WC_FONDY_BASE_FILE), ['fondy_pay_v2_woocom'], WC_FONDY_VERSION, true);
19 |
20 | wp_localize_script('fondy_pay_v2_woocom', 'fondy_info',
21 | [
22 | 'url' => WC_AJAX::get_endpoint('checkout'),
23 | 'nonce' => wp_create_nonce('fondy-submit-nonce')
24 | ]
25 | );
26 | }
27 |
28 | public function payment_fields()
29 | {
30 | if ($this->integration_type === 'seamless') {
31 | ?>
32 |
80 | ' . esc_attr($order_button_text) . '';
94 |
95 | return $button;
96 | }
97 |
98 | /**
99 | * Process checkout func
100 | */
101 | public function generate_ajax_order_fondy_info()
102 | {
103 | check_ajax_referer('fondy-submit-nonce', 'nonce_code');
104 | wc_maybe_define_constant('WOOCOMMERCE_CHECKOUT', true);
105 | WC()->checkout()->process_checkout();
106 | wp_die(0);
107 | }
108 | }
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/includes/payment-methods/class-wc-gateway-fondy-bank.php:
--------------------------------------------------------------------------------
1 | id = 'fondy_bank'; // payment gateway plugin ID
11 | $this->icon = ''; // URL of the icon that will be displayed on checkout page near your gateway name
12 | $this->has_fields = false; // in case you need a custom credit card form
13 | $this->method_title = 'Fondy Bank';
14 | $this->method_description = sprintf( //translators: link
15 | __('All other general Fondy settings can be adjusted here.', 'fondy-woocommerce-payment-gateway'),
16 | admin_url('admin.php?page=wc-settings&tab=checkout§ion=fondy')
17 | );
18 |
19 | $this->init_form_fields();
20 |
21 | // Load the settings.
22 | $this->init_settings();
23 | $main_settings = get_option('woocommerce_fondy_settings');
24 | $this->title = $this->get_option('title');
25 | $this->description = $this->get_option('description');
26 | $this->enabled = $this->get_option('enabled');
27 | $this->integration_type = $this->get_option('integration_type') ? $this->get_option('integration_type') : false;
28 | $this->merchant_id = !empty($main_settings['merchant_id']) ? $main_settings['merchant_id'] : '';
29 | $this->secret_key = !empty($main_settings['secret_key']) ? $main_settings['secret_key'] : '';
30 | $this->test_mode = !empty($main_settings['test_mode']) && 'yes' === $main_settings['test_mode'];
31 | $this->redirect_page_id = !empty($main_settings['redirect_page_id']) ? $main_settings['redirect_page_id'] : false;
32 | $this->completed_order_status = !empty($main_settings['completed_order_status']) ? $main_settings['completed_order_status'] : false;
33 | $this->expired_order_status = !empty($main_settings['expired_order_status']) ? $main_settings['expired_order_status'] : false;
34 | $this->declined_order_status = !empty($main_settings['declined_order_status']) ? $main_settings['declined_order_status'] : false;
35 |
36 | parent::__construct();
37 | }
38 |
39 | public function init_form_fields()
40 | {
41 | $this->form_fields = [
42 | 'enabled' => [
43 | 'title' => __('Enable/Disable', 'fondy-woocommerce-payment-gateway'),
44 | 'type' => 'checkbox',
45 | 'label' => __('Enable Fondy Bank Gateway', 'fondy-woocommerce-payment-gateway'),
46 | 'default' => 'no',
47 | 'description' => __('Show in the Payment List as a payment option', 'fondy-woocommerce-payment-gateway'),
48 | 'desc_tip' => true
49 | ],
50 | 'title' => [
51 | 'title' => __('Title', 'fondy-woocommerce-payment-gateway'),
52 | 'type' => 'text',
53 | 'description' => __('This controls the title which the user sees during checkout', 'fondy-woocommerce-payment-gateway'),
54 | 'default' => __('Fondy Online Banking', 'fondy-woocommerce-payment-gateway'),
55 | 'desc_tip' => true,
56 | ],
57 | 'description' => [
58 | 'title' => 'Description',
59 | 'type' => 'textarea',
60 | 'default' => __('Payments with online banking.', 'fondy-woocommerce-payment-gateway'),
61 | 'description' => __('This controls the description which the user sees during checkout', 'fondy-woocommerce-payment-gateway'),
62 | 'desc_tip' => true,
63 | ],
64 | 'integration_type' => [
65 | 'title' => __('Payment integration type', 'fondy-woocommerce-payment-gateway'),
66 | 'type' => 'select',
67 | 'options' => $this->getIntegrationTypes(),
68 | 'description' => __('How the payment form will be displayed', 'fondy-woocommerce-payment-gateway'),
69 | 'desc_tip' => true
70 | ],
71 | ];
72 | }
73 |
74 | public function getPaymentOptions()
75 | {
76 | $paymentOptions = parent::getPaymentOptions();
77 |
78 | $paymentOptions['methods'] = ['banklinks_eu'];
79 | $paymentOptions['methods_disabled'] = ['wallets', 'card', 'local_methods'];
80 | $paymentOptions['active_tab'] = 'banklinks_eu';
81 |
82 | return $paymentOptions;
83 | }
84 |
85 | public function getPaymentParams($order)
86 | {
87 | $params = parent::getPaymentParams($order);
88 |
89 | if ($this->integration_type === 'hosted') {
90 | $params['payment_systems'] = 'banklinks_eu';
91 | }
92 |
93 | return $params;
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/includes/payment-methods/class-wc-gateway-fondy-card.php:
--------------------------------------------------------------------------------
1 | id = 'fondy'; // payment gateway plugin ID
21 | $this->icon = plugins_url('assets/img/fondy_logo_cards.svg', WC_FONDY_BASE_FILE); // URL of the icon that will be displayed on checkout page near your gateway name
22 | $this->has_fields = false; // in case you need a custom credit card form
23 | $this->method_title = 'Fondy';
24 | $this->method_description = __('Card payments, Apple/Google Pay', 'fondy-woocommerce-payment-gateway');
25 |
26 | $this->supports = [
27 | 'products',
28 | 'refunds',
29 | 'pre-orders',
30 | 'subscriptions',
31 | 'subscription_reactivation',
32 | 'subscription_cancellation',
33 | 'subscription_amount_changes',
34 | 'subscription_date_changes',
35 | 'subscription_suspension'
36 | ];
37 |
38 | // Method with all the options fields
39 | $this->init_form_fields();
40 |
41 | // Load the settings.
42 | $this->init_settings();
43 | $this->title = $this->get_option('title');
44 | $this->description = $this->get_option('description');
45 | $this->enabled = $this->get_option('enabled');
46 | $this->test_mode = 'yes' === $this->get_option('test_mode');
47 | $this->merchant_id = (int)$this->get_option('merchant_id');
48 | $this->secret_key = $this->get_option('secret_key');
49 | $this->integration_type = $this->get_option('integration_type') ? $this->get_option('integration_type') : false;
50 | $this->redirect_page_id = $this->get_option('redirect_page_id');
51 | $this->completed_order_status = $this->get_option('completed_order_status') ? $this->get_option('completed_order_status') : false;
52 | $this->expired_order_status = $this->get_option('expired_order_status') ? $this->get_option('expired_order_status') : false;
53 | $this->declined_order_status = $this->get_option('declined_order_status') ? $this->get_option('declined_order_status') : false;
54 |
55 | parent::__construct();
56 |
57 | if (class_exists('WC_Pre_Orders_Order')) {
58 | $this->pre_orders = new WC_Fondy_Pre_Orders_Compat($this);
59 | }
60 |
61 | if (class_exists('WC_Subscriptions_Order')) {
62 | $this->subscriptions = new WC_Fondy_Subscriptions_Compat($this);
63 | }
64 | }
65 |
66 | /**
67 | * action hook to add setting payment page Pre-Orders notice
68 | */
69 | public function admin_options()
70 | {
71 | do_action('wc_gateway_fondy_admin_options');
72 | parent::admin_options();
73 | }
74 |
75 | public function init_form_fields()
76 | {
77 | $this->form_fields = [
78 | 'enabled' => [
79 | 'title' => __('Enable/Disable', 'fondy-woocommerce-payment-gateway'),
80 | 'type' => 'checkbox',
81 | 'label' => __('Enable Fondy Gateway', 'fondy-woocommerce-payment-gateway'),
82 | 'default' => 'no',
83 | 'description' => __('Show in the Payment List as a payment option', 'fondy-woocommerce-payment-gateway'),
84 | 'desc_tip' => true
85 | ],
86 | 'test_mode' => [
87 | 'title' => __('Test mode', 'fondy-woocommerce-payment-gateway'),
88 | 'type' => 'checkbox',
89 | 'label' => __('Enable Test Mode', 'fondy-woocommerce-payment-gateway'),
90 | 'default' => 'no',
91 | 'description' => __('Place the payment gateway in test mode using test Merchant ID', 'fondy-woocommerce-payment-gateway'),
92 | 'desc_tip' => true
93 | ],
94 | 'title' => [
95 | 'title' => __('Title', 'fondy-woocommerce-payment-gateway'),
96 | 'type' => 'text',
97 | 'description' => __('This controls the title which the user sees during checkout', 'fondy-woocommerce-payment-gateway'),
98 | 'default' => __('Fondy Cards, Apple/Google Pay', 'fondy-woocommerce-payment-gateway'),
99 | 'desc_tip' => true,
100 | ],
101 | 'description' => [
102 | 'title' => __('Description:', 'fondy-woocommerce-payment-gateway'),
103 | 'type' => 'textarea',
104 | 'default' => __('Pay securely by Credit/Debit Card or by Apple/Google Pay with Fondy.', 'fondy-woocommerce-payment-gateway'),
105 | 'description' => __('This controls the description which the user sees during checkout', 'fondy-woocommerce-payment-gateway'),
106 | 'desc_tip' => true
107 | ],
108 | 'merchant_id' => [
109 | 'title' => __('Merchant ID', 'fondy-woocommerce-payment-gateway'),
110 | 'type' => 'text',
111 | 'description' => __('Given to Merchant by Fondy', 'fondy-woocommerce-payment-gateway'),
112 | 'desc_tip' => true
113 | ],
114 | 'secret_key' => [
115 | 'title' => __('Secret Key', 'fondy-woocommerce-payment-gateway'),
116 | 'type' => 'text',
117 | 'description' => __('Given to Merchant by Fondy', 'fondy-woocommerce-payment-gateway'),
118 | 'desc_tip' => true
119 | ],
120 | 'integration_type' => [
121 | 'title' => __('Payment integration type', 'fondy-woocommerce-payment-gateway'),
122 | 'type' => 'select',
123 | 'options' => $this->getIntegrationTypes(),
124 | 'description' => __('How the payment form will be displayed', 'fondy-woocommerce-payment-gateway'),
125 | 'desc_tip' => true
126 | ],
127 | 'redirect_page_id' => [
128 | 'title' => __('Return Page', 'fondy-woocommerce-payment-gateway'),
129 | 'type' => 'select',
130 | 'options' => $this->fondy_get_pages(__('Default order page', 'fondy-woocommerce-payment-gateway')),
131 | 'description' => __('URL of success page', 'fondy-woocommerce-payment-gateway'),
132 | 'desc_tip' => true
133 | ],
134 | 'completed_order_status' => [
135 | 'title' => __('Payment completed order status', 'fondy-woocommerce-payment-gateway'),
136 | 'type' => 'select',
137 | 'options' => $this->getPaymentOrderStatuses(),
138 | 'default' => 'none',
139 | 'description' => __('The completed order status after successful payment', 'fondy-woocommerce-payment-gateway'),
140 | 'desc_tip' => true
141 | ],
142 | 'expired_order_status' => [
143 | 'title' => __('Payment expired order status', 'fondy-woocommerce-payment-gateway'),
144 | 'type' => 'select',
145 | 'options' => $this->getPaymentOrderStatuses(),
146 | 'default' => 'none',
147 | 'description' => __('Order status when payment was expired', 'fondy-woocommerce-payment-gateway'),
148 | 'desc_tip' => true
149 | ],
150 | 'declined_order_status' => [
151 | 'title' => __('Payment declined order status', 'fondy-woocommerce-payment-gateway'),
152 | 'type' => 'select',
153 | 'options' => $this->getPaymentOrderStatuses(),
154 | 'default' => 'none',
155 | 'description' => __('Order status when payment was declined', 'fondy-woocommerce-payment-gateway'),
156 | 'desc_tip' => true
157 | ],
158 | ];
159 | }
160 |
161 | public function fondyPaymentComplete($order, $transactionID)
162 | {
163 | if ($this->pre_orders && WC_Pre_Orders_Order::order_contains_pre_order($order)) {
164 | $order->set_transaction_id($transactionID);
165 | WC_Pre_Orders_Order::mark_order_as_pre_ordered($order);
166 | } else parent::fondyPaymentComplete($order, $transactionID);
167 | }
168 |
169 | public function process_refund($order_id, $amount = null, $reason = '')
170 | {
171 | $order = wc_get_order($order_id);
172 |
173 | if (empty($order))
174 | return false;
175 |
176 | try {
177 | $reverse = WC_Fondy_API::reverse([
178 | 'order_id' => $this->getFondyOrderID($order),
179 | 'amount' => (int)round($amount * 100),
180 | 'currency' => $order->get_currency(),
181 | 'comment' => substr($reason, 0, 1024)
182 | ]);
183 |
184 | switch ($reverse->reverse_status) {
185 | case 'approved':
186 | return true;
187 | case 'processing':
188 | /* translators: 1) reverse status */
189 | $order->add_order_note(sprintf(__('Refund Fondy status: %1$s', 'fondy-woocommerce-payment-gateway'), $reverse->reverse_status));
190 | return true;
191 | case 'declined':
192 | $noteText = sprintf(__('Refund Fondy status: %1$s', 'fondy-woocommerce-payment-gateway'), $reverse->reverse_status);
193 | $order->add_order_note($noteText);
194 | throw new Exception($noteText);
195 | default:
196 | $noteText = sprintf(__('Refund Fondy status: %1$s', 'fondy-woocommerce-payment-gateway'), 'Unknown');
197 | $order->add_order_note($noteText);
198 | throw new Exception($noteText);
199 | }
200 | } catch (Exception $e) {
201 | return new WP_Error('error', $e->getMessage());
202 | }
203 | }
204 |
205 | public function getPaymentOptions()
206 | {
207 | $paymentOptions = parent::getPaymentOptions();
208 |
209 | $paymentOptions['methods'] = ['card', 'wallets'];
210 | $paymentOptions['methods_disabled'] = ['banklinks_eu', 'local_methods'];
211 | $paymentOptions['active_tab'] = 'card';
212 |
213 | return $paymentOptions;
214 | }
215 |
216 | /**
217 | * what can be seen on the Checkout page in the choice of payment method.
218 | * mb use later in seamless integration
219 | */
220 | // public function payment_fields()
221 | // {
222 | // echo wpautop(wptexturize($this->description));
223 | // }
224 |
225 | }
226 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/includes/payment-methods/class-wc-gateway-fondy-localmethods.php:
--------------------------------------------------------------------------------
1 | id = 'fondy_local_methods'; // payment gateway plugin ID
11 | $this->icon = ''; // URL of the icon that will be displayed on checkout page near your gateway name
12 | $this->has_fields = false; // in case you need a custom credit card form
13 | $this->method_title = 'Fondy Local Methods';
14 | $this->method_description = sprintf(
15 | __('All other general Fondy settings can be adjusted here.', 'fondy-woocommerce-payment-gateway'),
16 | admin_url('admin.php?page=wc-settings&tab=checkout§ion=fondy')
17 | );
18 |
19 | $this->init_form_fields();
20 |
21 | // Load the settings.
22 | $this->init_settings();
23 | $main_settings = get_option('woocommerce_fondy_settings');
24 | $this->title = $this->get_option('title');
25 | $this->description = $this->get_option('description');
26 | $this->enabled = $this->get_option('enabled');
27 | $this->integration_type = $this->get_option('integration_type') ? $this->get_option('integration_type') : false;
28 | $this->merchant_id = !empty($main_settings['merchant_id']) ? $main_settings['merchant_id'] : '';
29 | $this->secret_key = !empty($main_settings['secret_key']) ? $main_settings['secret_key'] : '';
30 | $this->test_mode = !empty($main_settings['test_mode']) && 'yes' === $main_settings['test_mode'];
31 | $this->redirect_page_id = !empty($main_settings['redirect_page_id']) ? $main_settings['redirect_page_id'] : false;
32 | $this->completed_order_status = !empty($main_settings['completed_order_status']) ? $main_settings['completed_order_status'] : false;
33 | $this->expired_order_status = !empty($main_settings['expired_order_status']) ? $main_settings['expired_order_status'] : false;
34 | $this->declined_order_status = !empty($main_settings['declined_order_status']) ? $main_settings['declined_order_status'] : false;
35 |
36 | parent::__construct();
37 | }
38 |
39 | public function init_form_fields()
40 | {
41 | $this->form_fields = [
42 | 'enabled' => [
43 | 'title' => 'Enable/Disable',
44 | 'label' => 'Enable Fondy Local Methods Gateway',
45 | 'type' => 'checkbox',
46 | 'description' => '',
47 | 'default' => 'no'
48 | ],
49 | 'title' => [
50 | 'title' => __('Title', 'fondy-woocommerce-payment-gateway'),
51 | 'type' => 'text',
52 | 'description' => __('This controls the title which the user sees during checkout', 'fondy-woocommerce-payment-gateway'),
53 | 'default' => __('Fondy Local Methods', 'fondy-woocommerce-payment-gateway'),
54 | 'desc_tip' => true,
55 | ],
56 | 'description' => [
57 | 'title' => 'Description',
58 | 'type' => 'textarea',
59 | 'description' => __('This controls the description which the user sees during checkout', 'fondy-woocommerce-payment-gateway'),
60 | 'default' => __('Pay with your local bank with Fondy online payments.', 'fondy-woocommerce-payment-gateway'),
61 | ],
62 | 'integration_type' => [
63 | 'title' => __('Payment integration type', 'fondy-woocommerce-payment-gateway'),
64 | 'type' => 'select',
65 | 'options' => $this->getIntegrationTypes(),
66 | 'description' => __('How the payment form will be displayed', 'fondy-woocommerce-payment-gateway'),
67 | 'desc_tip' => true
68 | ],
69 | ];
70 | }
71 |
72 | public function getPaymentOptions()
73 | {
74 | $paymentOptions = parent::getPaymentOptions();
75 |
76 | $paymentOptions['methods'] = ['local_methods'];
77 | $paymentOptions['methods_disabled'] = ['wallets', 'card', 'banklinks_eu'];
78 | $paymentOptions['active_tab'] = 'local_methods';
79 |
80 | return $paymentOptions;
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/languages/fondy-woocommerce-payment-gateway-ru_RU.mo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/cloudipsp/wordpress/1fc23d2b1489c9ce74d07888dd01c78923a3c2f7/woocommerce/fondy-woocommerce-payment-gateway/languages/fondy-woocommerce-payment-gateway-ru_RU.mo
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/languages/fondy-woocommerce-payment-gateway-ru_RU.po:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2021 Fondy - Unified Payment Platform
2 | # This file is distributed under the same license as the WooCommerce - Fondy payment gateway plugin.
3 | msgid ""
4 | msgstr ""
5 | "Project-Id-Version: WooCommerce - Fondy payment gateway 3.0.0\n"
6 | "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/fondy-woocommerce-payment-gateway\n"
7 | "Last-Translator: Dmytro Barybin \n"
8 | "Language-Team: Русский\n"
9 | "Language: ru_RU\n"
10 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && "
11 | "n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2);\n"
12 | "MIME-Version: 1.0\n"
13 | "Content-Type: text/plain; charset=UTF-8\n"
14 | "Content-Transfer-Encoding: 8bit\n"
15 | "POT-Creation-Date: 2021-08-25T16:52:55+03:00\n"
16 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
17 | "X-Generator: WP-CLI 2.4.0\n"
18 | "X-Domain: fondy-woocommerce-payment-gateway\n"
19 |
20 | #. Plugin Name of the plugin
21 | msgid "WooCommerce - Fondy payment gateway"
22 | msgstr "WooCommerce - платежный шлюз Fondy"
23 |
24 | #. Plugin URI of the plugin
25 | msgid "https://fondy.io/en/cms/wordpress/woocommerce/"
26 | msgstr "https://fondy.ru/cms/wordpress/woocommerce/"
27 |
28 | #. Description of the plugin
29 | msgid "Fondy Payment Gateway for WooCommerce."
30 | msgstr "Платежный шлюз Fondy для WooCommerce."
31 |
32 | #. Author of the plugin
33 | msgid "Fondy - Unified Payment Platform"
34 | msgstr "Fondy - Unified Payment Platform"
35 |
36 | #. Author URI of the plugin
37 | msgid "https://fondy.io"
38 | msgstr "https://fondy.ru"
39 |
40 | #: fondy-woocommerce-payment-gateway.php:100
41 | msgid "Settings"
42 | msgstr "Настройки"
43 |
44 | #. translators: 1) required WC version 2) current WC version
45 | #: fondy-woocommerce-payment-gateway.php:173
46 | msgid "Payment Gateway Fondy requires WooCommerce %1$s or greater to be installed and active. WooCommerce %2$s is no longer supported."
47 | msgstr "Для корректной работы платежного шлюза Fondy необходимо использовать WooCommerce %1$s и выше. WooCommerce %2$s больше не поддерживается."
48 |
49 | #. translators: 1) required PHP version 2) current PHP version
50 | #: fondy-woocommerce-payment-gateway.php:180
51 | msgid "The minimum PHP version required for Fondy Payment Gateway is %1$s. You are running %2$s."
52 | msgstr "Для корректной работы платежного шлюза Fondy требуется PHP версии %1$s и выше. Вы используете %2$s."
53 |
54 | #: includes/abstract-wc-fondy-payment-gateway.php:99
55 | msgid "Order №: "
56 | msgstr "Заказ №: "
57 |
58 | #: includes/abstract-wc-fondy-payment-gateway.php:319
59 | msgid "Embedded"
60 | msgstr "Форма на отдельной странице"
61 |
62 | #: includes/abstract-wc-fondy-payment-gateway.php:323
63 | msgid "Hosted"
64 | msgstr "Перенаправление"
65 |
66 | #: includes/abstract-wc-fondy-payment-gateway.php:327
67 | msgid "Seamless"
68 | msgstr "Встроенная форма"
69 |
70 | #: includes/abstract-wc-fondy-payment-gateway.php:372
71 | msgid "Default status"
72 | msgstr "Стандартный статус"
73 |
74 | #. translators: 1) fondy order status 2) fondy order id
75 | #: includes/abstract-wc-fondy-payment-gateway.php:415
76 | #: includes/abstract-wc-fondy-payment-gateway.php:420
77 | msgid "Transaction ERROR: order %1$s
Fondy ID: %2$s"
78 | msgstr "ОШИБКА транзакции: заказ %1$s
Fondy ID: %2$s"
79 |
80 | #: includes/abstract-wc-fondy-payment-gateway.php:424
81 | msgid "Unhandled fondy order status"
82 | msgstr "Unhandled fondy order status"
83 |
84 | #. translators: fondy order id
85 | #: includes/abstract-wc-fondy-payment-gateway.php:448
86 | msgid "Fondy payment successful.
Fondy ID: %1$s
"
87 | msgstr "Платеж успешен.
Fondy ID: %1$s
"
88 |
89 | #: includes/compat/class-wc-fondy-pre-orders-compat.php:40
90 | msgid "Fondy capture successful."
91 | msgstr "Fondy capture successful."
92 |
93 | #. translators: error message
94 | #: includes/compat/class-wc-fondy-pre-orders-compat.php:47
95 | msgid "Pre-order payment for order failed. Reason: %s"
96 | msgstr "Предварительная оплата заказа не удалась. Причина: %s"
97 |
98 | #: includes/compat/class-wc-fondy-pre-orders-compat.php:61
99 | msgid "Note: transactions by using Pre-Orders must be finished in 7 days term or it will be auto-captured."
100 | msgstr "Примечание: транзакции с использованием Pre-Orders должны быть завершены в течение 7 дней, иначе средства будут автоматически списаны."
101 |
102 | #: includes/compat/class-wc-fondy-subscriptions-compat.php:32
103 | msgid "Payment free trial verification"
104 | msgstr "Оплата пробной бесплатной версии"
105 |
106 | #: includes/compat/class-wc-fondy-subscriptions-compat.php:47
107 | msgid "You must be logged in."
108 | msgstr "Вы должны быть авторизованы."
109 |
110 | #. translators: error message
111 | #: includes/compat/class-wc-fondy-subscriptions-compat.php:146
112 | msgid "Subscription payment failed. Reason: %s"
113 | msgstr "Оплата подписки не прошла. Причина: %s"
114 |
115 | #: includes/integration-types/Fondy_Seamless.php:37
116 | msgid "Card Number:"
117 | msgstr "Номер карты:"
118 |
119 | #: includes/integration-types/Fondy_Seamless.php:43
120 | msgid "XXXXXXXXXXXXXXXX"
121 | msgstr "XXXXXXXXXXXXXXXX"
122 |
123 | #: includes/integration-types/Fondy_Seamless.php:49
124 | msgid "Expiry Date:"
125 | msgstr "Срок Действия: "
126 |
127 | #: includes/integration-types/Fondy_Seamless.php:52
128 | msgid "CVV2:"
129 | msgstr "CVV2:"
130 |
131 | #: includes/integration-types/Fondy_Seamless.php:68
132 | msgid "XXX"
133 | msgstr "XXX"
134 |
135 | #: includes/integration-types/Fondy_Seamless.php:74
136 | msgid "Pay"
137 | msgstr "Оплатить"
138 |
139 | #: includes/integration-types/Fondy_Seamless.php:91
140 | msgid "Place order"
141 | msgstr "Заказать"
142 |
143 | #. translators: link
144 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:15
145 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:16
146 | msgid "All other general Fondy settings can be adjusted here."
147 | msgstr "Все остальные общие настройки Fondy можно изменить тут. "
148 |
149 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:43
150 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:79
151 | msgid "Enable/Disable"
152 | msgstr "Включить/Выключить"
153 |
154 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:45
155 | msgid "Enable Fondy Bank Gateway"
156 | msgstr "Включить Fondy Bank Gateway"
157 |
158 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:47
159 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:83
160 | msgid "Show in the Payment List as a payment option"
161 | msgstr "Показать в списке платежей как способ оплаты"
162 |
163 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:51
164 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:95
165 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:51
166 | msgid "Title"
167 | msgstr "Заголовок"
168 |
169 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:53
170 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:97
171 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:53
172 | msgid "This controls the title which the user sees during checkout"
173 | msgstr "Заголовок который, видит пользователь в процессе оформления заказа"
174 |
175 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:54
176 | msgid "Fondy Online Banking"
177 | msgstr "Fondy Online Banking"
178 |
179 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:60
180 | msgid "Payments with online banking."
181 | msgstr "Платежи через онлайн банкинг."
182 |
183 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:61
184 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:105
185 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:60
186 | msgid "This controls the description which the user sees during checkout"
187 | msgstr "Описание которое видит пользователь в процессе оформления заказа"
188 |
189 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:65
190 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:121
191 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:64
192 | msgid "Payment integration type"
193 | msgstr "Тип интеграции"
194 |
195 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:68
196 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:124
197 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:67
198 | msgid "How the payment form will be displayed"
199 | msgstr "Каким образом будет отображаться форма оплаты"
200 |
201 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:24
202 | msgid "Card payments, Apple/Google Pay"
203 | msgstr "Оплата банковскими картами, Apple/Google Pay"
204 |
205 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:81
206 | msgid "Enable Fondy Gateway"
207 | msgstr "Включить Fondy Gateway"
208 |
209 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:87
210 | msgid "Test mode"
211 | msgstr "Тестовый режим"
212 |
213 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:89
214 | msgid "Enable Test Mode"
215 | msgstr "Включить тестовый режим"
216 |
217 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:91
218 | msgid "Place the payment gateway in test mode using test Merchant ID"
219 | msgstr "Перевести платежный шлюз в тестовый режим, используя тестовый Merchant ID"
220 |
221 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:98
222 | msgid "Fondy Cards, Apple/Google Pay"
223 | msgstr "Fondy Cards, Apple/Google Pay"
224 |
225 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:102
226 | msgid "Description:"
227 | msgstr "Описание:"
228 |
229 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:104
230 | msgid "Pay securely by Credit/Debit Card or by Apple/Google Pay with Fondy."
231 | msgstr "Безопасная оплата кредитной/дебетовой картой или Apple/Google Pay с помощью Fondy."
232 |
233 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:109
234 | msgid "Merchant ID"
235 | msgstr "Merchant ID"
236 |
237 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:111
238 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:117
239 | msgid "Given to Merchant by Fondy"
240 | msgstr "Выдается мерчанту Fondy"
241 |
242 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:115
243 | msgid "Secret Key"
244 | msgstr "Secret Key"
245 |
246 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:128
247 | msgid "Return Page"
248 | msgstr "Страница ответа"
249 |
250 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:130
251 | msgid "Default order page"
252 | msgstr "Стандартная страница возврата"
253 |
254 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:131
255 | msgid "URL of success page"
256 | msgstr "Страница куда будет направлен пользователь после оплаты"
257 |
258 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:135
259 | msgid "Payment completed order status"
260 | msgstr "Статус заказа при успешной оплате"
261 |
262 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:139
263 | msgid "The completed order status after successful payment"
264 | msgstr "Статус заказа после успешной оплаты"
265 |
266 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:143
267 | msgid "Payment expired order status"
268 | msgstr "Статус заказа платежа с истёкшим сроком"
269 |
270 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:147
271 | msgid "Order status when payment was expired"
272 | msgstr "Статус заказа при истечении срока платежа"
273 |
274 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:151
275 | msgid "Payment declined order status"
276 | msgstr "Статус заказа отклонённого платежа"
277 |
278 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:155
279 | msgid "Order status when payment was declined"
280 | msgstr "Статус заказа при отклонении платежа"
281 |
282 | #. translators: 1) reverse status
283 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:188
284 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:191
285 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:195
286 | msgid "Refund Fondy status: %1$s"
287 | msgstr "Статус возврата Fondy: %1$s"
288 |
289 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:54
290 | msgid "Fondy Local Methods"
291 | msgstr "Fondy Local Methods"
292 |
293 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:61
294 | msgid "Pay with your local bank with Fondy online payments."
295 | msgstr "Pay with your local bank with Fondy online payments."
296 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/languages/fondy-woocommerce-payment-gateway.pot:
--------------------------------------------------------------------------------
1 | # Copyright (C) 2021 Fondy - Unified Payment Platform
2 | # This file is distributed under the same license as the WooCommerce - Fondy payment gateway plugin.
3 | msgid ""
4 | msgstr ""
5 | "Project-Id-Version: WooCommerce - Fondy payment gateway 3.0.0\n"
6 | "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/fondy-woocommerce-payment-gateway\n"
7 | "Last-Translator: Dmytro Barybin \n"
8 | "Language-Team: LANGUAGE \n"
9 | "MIME-Version: 1.0\n"
10 | "Content-Type: text/plain; charset=UTF-8\n"
11 | "Content-Transfer-Encoding: 8bit\n"
12 | "POT-Creation-Date: 2021-08-25T16:52:55+03:00\n"
13 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14 | "X-Generator: WP-CLI 2.4.0\n"
15 | "X-Domain: fondy-woocommerce-payment-gateway\n"
16 |
17 | #. Plugin Name of the plugin
18 | msgid "WooCommerce - Fondy payment gateway"
19 | msgstr ""
20 |
21 | #. Plugin URI of the plugin
22 | msgid "https://fondy.io/en/cms/wordpress/woocommerce/"
23 | msgstr ""
24 |
25 | #. Description of the plugin
26 | msgid "Fondy Payment Gateway for WooCommerce."
27 | msgstr ""
28 |
29 | #. Author of the plugin
30 | msgid "Fondy - Unified Payment Platform"
31 | msgstr ""
32 |
33 | #. Author URI of the plugin
34 | msgid "https://fondy.io"
35 | msgstr ""
36 |
37 | #: fondy-woocommerce-payment-gateway.php:100
38 | msgid "Settings"
39 | msgstr ""
40 |
41 | #. translators: 1) required WC version 2) current WC version
42 | #: fondy-woocommerce-payment-gateway.php:173
43 | msgid "Payment Gateway Fondy requires WooCommerce %1$s or greater to be installed and active. WooCommerce %2$s is no longer supported."
44 | msgstr ""
45 |
46 | #. translators: 1) required PHP version 2) current PHP version
47 | #: fondy-woocommerce-payment-gateway.php:180
48 | msgid "The minimum PHP version required for Fondy Payment Gateway is %1$s. You are running %2$s."
49 | msgstr ""
50 |
51 | #: includes/abstract-wc-fondy-payment-gateway.php:99
52 | msgid "Order №: "
53 | msgstr ""
54 |
55 | #: includes/abstract-wc-fondy-payment-gateway.php:319
56 | msgid "Embedded"
57 | msgstr ""
58 |
59 | #: includes/abstract-wc-fondy-payment-gateway.php:323
60 | msgid "Hosted"
61 | msgstr ""
62 |
63 | #: includes/abstract-wc-fondy-payment-gateway.php:327
64 | msgid "Seamless"
65 | msgstr ""
66 |
67 | #: includes/abstract-wc-fondy-payment-gateway.php:372
68 | msgid "Default status"
69 | msgstr ""
70 |
71 | #. translators: 1) fondy order status 2) fondy order id
72 | #: includes/abstract-wc-fondy-payment-gateway.php:415
73 | #: includes/abstract-wc-fondy-payment-gateway.php:420
74 | msgid "Transaction ERROR: order %1$s
Fondy ID: %2$s"
75 | msgstr ""
76 |
77 | #: includes/abstract-wc-fondy-payment-gateway.php:424
78 | msgid "Unhandled fondy order status"
79 | msgstr ""
80 |
81 | #. translators: fondy order id
82 | #: includes/abstract-wc-fondy-payment-gateway.php:448
83 | msgid "Fondy payment successful.
Fondy ID: %1$s
"
84 | msgstr ""
85 |
86 | #: includes/compat/class-wc-fondy-pre-orders-compat.php:40
87 | msgid "Fondy capture successful."
88 | msgstr ""
89 |
90 | #. translators: error message
91 | #: includes/compat/class-wc-fondy-pre-orders-compat.php:47
92 | msgid "Pre-order payment for order failed. Reason: %s"
93 | msgstr ""
94 |
95 | #: includes/compat/class-wc-fondy-pre-orders-compat.php:61
96 | msgid "Note: transactions by using Pre-Orders must be finished in 7 days term or it will be auto-captured."
97 | msgstr ""
98 |
99 | #: includes/compat/class-wc-fondy-subscriptions-compat.php:32
100 | msgid "Payment free trial verification"
101 | msgstr ""
102 |
103 | #: includes/compat/class-wc-fondy-subscriptions-compat.php:47
104 | msgid "You must be logged in."
105 | msgstr ""
106 |
107 | #. translators: error message
108 | #: includes/compat/class-wc-fondy-subscriptions-compat.php:146
109 | msgid "Subscription payment failed. Reason: %s"
110 | msgstr ""
111 |
112 | #: includes/integration-types/Fondy_Seamless.php:37
113 | msgid "Card Number:"
114 | msgstr ""
115 |
116 | #: includes/integration-types/Fondy_Seamless.php:43
117 | msgid "XXXXXXXXXXXXXXXX"
118 | msgstr ""
119 |
120 | #: includes/integration-types/Fondy_Seamless.php:49
121 | msgid "Expiry Date:"
122 | msgstr ""
123 |
124 | #: includes/integration-types/Fondy_Seamless.php:52
125 | msgid "CVV2:"
126 | msgstr ""
127 |
128 | #: includes/integration-types/Fondy_Seamless.php:68
129 | msgid "XXX"
130 | msgstr ""
131 |
132 | #: includes/integration-types/Fondy_Seamless.php:74
133 | msgid "Pay"
134 | msgstr ""
135 |
136 | #: includes/integration-types/Fondy_Seamless.php:91
137 | msgid "Place order"
138 | msgstr ""
139 |
140 | #. translators: link
141 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:15
142 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:16
143 | msgid "All other general Fondy settings can be adjusted here."
144 | msgstr ""
145 |
146 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:43
147 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:79
148 | msgid "Enable/Disable"
149 | msgstr ""
150 |
151 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:45
152 | msgid "Enable Fondy Bank Gateway"
153 | msgstr ""
154 |
155 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:47
156 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:83
157 | msgid "Show in the Payment List as a payment option"
158 | msgstr ""
159 |
160 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:51
161 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:95
162 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:51
163 | msgid "Title"
164 | msgstr ""
165 |
166 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:53
167 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:97
168 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:53
169 | msgid "This controls the title which the user sees during checkout"
170 | msgstr ""
171 |
172 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:54
173 | msgid "Fondy Online Banking"
174 | msgstr ""
175 |
176 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:60
177 | msgid "Payments with online banking."
178 | msgstr ""
179 |
180 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:61
181 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:105
182 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:60
183 | msgid "This controls the description which the user sees during checkout"
184 | msgstr ""
185 |
186 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:65
187 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:121
188 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:64
189 | msgid "Payment integration type"
190 | msgstr ""
191 |
192 | #: includes/payment-methods/class-wc-gateway-fondy-bank.php:68
193 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:124
194 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:67
195 | msgid "How the payment form will be displayed"
196 | msgstr ""
197 |
198 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:24
199 | msgid "Card payments, Apple/Google Pay"
200 | msgstr ""
201 |
202 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:81
203 | msgid "Enable Fondy Gateway"
204 | msgstr ""
205 |
206 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:87
207 | msgid "Test mode"
208 | msgstr ""
209 |
210 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:89
211 | msgid "Enable Test Mode"
212 | msgstr ""
213 |
214 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:91
215 | msgid "Place the payment gateway in test mode using test Merchant ID"
216 | msgstr ""
217 |
218 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:98
219 | msgid "Fondy Cards, Apple/Google Pay"
220 | msgstr ""
221 |
222 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:102
223 | msgid "Description:"
224 | msgstr ""
225 |
226 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:104
227 | msgid "Pay securely by Credit/Debit Card or by Apple/Google Pay with Fondy."
228 | msgstr ""
229 |
230 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:109
231 | msgid "Merchant ID"
232 | msgstr ""
233 |
234 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:111
235 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:117
236 | msgid "Given to Merchant by Fondy"
237 | msgstr ""
238 |
239 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:115
240 | msgid "Secret Key"
241 | msgstr ""
242 |
243 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:128
244 | msgid "Return Page"
245 | msgstr ""
246 |
247 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:130
248 | msgid "Default order page"
249 | msgstr ""
250 |
251 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:131
252 | msgid "URL of success page"
253 | msgstr ""
254 |
255 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:135
256 | msgid "Payment completed order status"
257 | msgstr ""
258 |
259 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:139
260 | msgid "The completed order status after successful payment"
261 | msgstr ""
262 |
263 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:143
264 | msgid "Payment expired order status"
265 | msgstr ""
266 |
267 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:147
268 | msgid "Order status when payment was expired"
269 | msgstr ""
270 |
271 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:151
272 | msgid "Payment declined order status"
273 | msgstr ""
274 |
275 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:155
276 | msgid "Order status when payment was declined"
277 | msgstr ""
278 |
279 | #. translators: 1) reverse status
280 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:188
281 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:191
282 | #: includes/payment-methods/class-wc-gateway-fondy-card.php:195
283 | msgid "Refund Fondy status: %1$s"
284 | msgstr ""
285 |
286 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:54
287 | msgid "Fondy Local Methods"
288 | msgstr ""
289 |
290 | #: includes/payment-methods/class-wc-gateway-fondy-localmethods.php:61
291 | msgid "Pay with your local bank with Fondy online payments."
292 | msgstr ""
293 |
294 | #. translators: order id
295 | #: includes/compat/class-wc-fondy-subscriptions-compat.php:136
296 | msgid "Recurring payment for: %s"
297 | msgstr ""
298 |
--------------------------------------------------------------------------------
/woocommerce/fondy-woocommerce-payment-gateway/uninstall.php:
--------------------------------------------------------------------------------
1 |