Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Модуль оплат через paymentsense


Xelen

Recommended Posts

Есть бесплатный модуль для оплаты через сервис paymentsense -  developers.paymentsense.co.uk/opencart/

саппорт там довольно тугой, потому решила тут спросить.

В модуле Стандартно задается статус успешной оплаты Complete

Если данные карты введены неверно, то задается статус Filed

Проблема в том, что при присвоении заказу статуса Filed, модуль присылает письмо пользователю с подтвержденным заказом, и в админке появляется заказ.

Там конечно написано, что заказ будет оформлен после оплаты, но никто это не читает. думают, что заказ оформлен.

Хотелось бы, чтобы, если оплата не прошла, чтобы письмо покупателю не приходило и заказ в админке не создавался.

Подскажите, в какую сторону рыть.

Есть другие модули оплат, они именно так и работают - создают заказ и отправляют письмо покупателю только при успешной оплате.

Пыталась сравнить код, но не хватает у меня компетенции

Надіслати
Поділитися на інших сайтах

28 минут назад, freelancer сказал:

наверно показать код модели

 

<?php
/*
 * Copyright (C) 2018 Paymentsense Ltd.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 3
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * @author      Paymentsense
 * @copyright   2018 Paymentsense Ltd.
 * @license     https://www.gnu.org/licenses/gpl-3.0.html
 */

/**
 * Base Front Model for Paymentsense Hosted and Direct
 */
abstract class ModelExtensionPaymentPaymentsenseBase extends Model
{
	/**
	 * Module Name
	 *
	 * @var string
	 */
	protected $moduleName;

	/**
	 * Main method
	 *
	 * @param $address Order Address
	 * @param $total   Order Total
	 *
	 * @return array
	 */
	public function getMethod($address, $total)
	{
		$method_data = array();
		if ($this->isAvailable($address, $total)) {
			$this->load->language("extension/payment/{$this->moduleName}");
			$method_data = array(
				'code'       => $this->moduleName,
				'title'      => $this->language->get('text_title'),
				'terms'      => '',
				'sort_order' => $this->getConfigValue("{$this->moduleName}_sort_order")
			);
		}
		return $method_data;
	}

	/**
	 * Gets the value of a configuration setting
	 *
	 * @param string $key Configuration key
	 * @param string|null $default Default value
	 *
	 * @return string|null
	 */
	protected function getConfigValue($key, $default = null)
	{
		if ($this->isOpenCartVersion3OrAbove()) {
			// As of OpenCart version 3 the key is 'payment_' prefixed
			$key = "payment_{$key}";
		}

		$value = $this->config->get($key);
		if (is_null($value) && !is_null($default)) {
			$value = $default;
		}
		return $value;
	}

	/**
	 * Checks whether the payment method is available for checkout
	 *
	 * @param $address Order Address
	 * @param $total   Order Total
	 *
	 * @return bool
	 */
	protected function isAvailable($address, $total)
	{
		if ($this->isSecureConnectionRequired() && !$this->isConnectionSecure()) {
			return false;
		}

		if ($total == 0) {
			return false;
		}

		if ($this->getConfigValue("{$this->moduleName}_geo_zone_id")) {
			$query = $this->db->query(
				"SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone " .
				"WHERE geo_zone_id = '" . (int)$this->getConfigValue("{$this->moduleName}_geo_zone_id") .
				"' AND country_id = '" . (int)$address['country_id'] .
				"' AND (zone_id = '" . (int)$address['zone_id'] .
				"' OR zone_id = '0')"
			);

			if (!$query->num_rows) {
				return false;
			}
		}

		return true;
	}

	/**
	 * Checks whether the current connection is secure
	 *
	 * @return bool
	 */
	public function isConnectionSecure()
	{
		$https = array_key_exists('HTTPS',$this->request->server)
			? $this->request->server['HTTPS']
			: '';
		$forwarded_proto = array_key_exists('HTTP_X_FORWARDED_PROTO',$this->request->server)
			? $this->request->server['HTTP_X_FORWARDED_PROTO']
			: '';
		switch (true) {
			case !empty($https) && strtolower($https) != 'off':
				$result = true;
				break;
			case !empty($forwarded_proto) && $forwarded_proto == 'https':
				$result = true;
				break;
			default:
				$result = false;
		}
		return $result;
	}

	/**
	 * Determines whether the OpenCart Version is 3 or above
	 *
	 * @return bool
	 */
	protected function isOpenCartVersion3OrAbove()
	{
		return defined('VERSION') && version_compare(VERSION, '3.0', '>=');
	}
}

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.