Skip to content

Commit

Permalink
Merge pull request #53 from yoomoney/release/v2.3.1
Browse files Browse the repository at this point in the history
Release/2.3.1
  • Loading branch information
eugenelozn authored Feb 2, 2022
2 parents eca2325 + 79a73f1 commit 3fbf859
Show file tree
Hide file tree
Showing 32 changed files with 2,171 additions and 1,183 deletions.
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
### v2.3.1 от 01.02.2022
* Добавлена обработка уведомлений от юкассы: PAYMENT_CANCELED, REFUND_SUCCEEDED, DEAL_CLOSED, PAYOUT_CANCELED,
PAYOUT_SUCCEEDED.
* Обноление SDK до версии 2.2.5
* Обновление верстки форм в админке с использованием bootstrap 5
* Добавлена запись в историю заказа о сумме возврата
* Добавлена проверка и сохранение данных о полученных уведомлениях о возвратах
* Исправлена обработка уведомлений от от юкассы для модуля оплаты через сббол

### v2.3.0 от 24.12.2021
* Добавлена поддержка версий Joomla! 4.x и Joomshopping 5.x
* Обновлен SDK до версии 2.2.4
Expand Down
678 changes: 356 additions & 322 deletions src/components/com_jshopping/payments/pm_yoomoney/4x/yookassa.php

Large diffs are not rendered by default.

190 changes: 94 additions & 96 deletions src/components/com_jshopping/payments/pm_yoomoney/4x/yoomoney.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,103 +12,101 @@
echo JHtml::_('uitab.addTab', 'yamTab', 'money-tab', _JSHOP_YOO_TAB_MONEY);

?>
<style>
table.adminFormKassaTable td {
vertical-align: top !important;
}
table.adminFormKassaTable td.key {
width: 250px;
}
</style>
<table class="admintable adminFormKassaTable" width = "100%" >
<tr>
<td colspan="2">
<p><?php echo _JSHOP_YOO_MONEY_HEAD; ?></p>
</td>
</tr>
<tr>
<td class="key">
<div class="row">
<p><?php echo _JSHOP_YOO_MONEY_HEAD; ?></p>
</div>
<div class="row mb-3">
<div class="col-3">
<label class="form-check-label" for="money">
<?php echo _JSHOP_YOO_MONEY_ON; ?>
</td>
<td>
<input type = "checkbox" id="money" class="pay-mode" name = "pm_params[moneymode]" value = "1"
<?php if(isSelected($params, 'moneymode')) echo "checked"; ?> />
</td>
</tr>
<tr>
<td class="key">
<label class="">RedirectURL</label>
</td>
<td>
<div class="input-group has-success">
<input type="text" class="form-control valid form-control-success" name="jform[joomlatoken][token]" id="jform_joomlatoken_token" readonly=""
value="<?php echo escapeValue($notify_url); ?>" aria-invalid="false">
</div>
<p class="help-block"><?php echo _JSHOP_YOO_MONEY_REDIRECT_HELP; ?></p>
</td>
</tr>
<tr>
<td colspan="2">
<h4><?php echo _JSHOP_YOO_MONEY_SET_HEAD; ?></h4>
</td>
</tr>
<tr>
<td class="key">
<label for="pm_params[account]"><?php echo _JSHOP_YOO_MONEY_WALLET; ?></label>
</td>
<td>
<input name='pm_params[account]' type="text" class="form-control" id="pm_params[account]"
value="<?php echo escapeValue($params['account']); ?>">
</td>
</tr>
<tr>
<td class="key">
<label for="pm_params[password]"><?php echo _JSHOP_YOO_MONEY_PSW; ?></label>
</td>
<td>
<input name='pm_params[password]' type="text" class="form-control" id="pm_params[account]"
value="<?php echo escapeValue($params['password']); ?>">
</td>
</tr>
<tr>
<td colspan="2">
<h4><?php echo _JSHOP_YOO_MONEY_SELECT_HEAD; ?></h4>
</td>
</tr>
<tr>
<td class="key">
<?php echo _JSHOP_YOO_MONEY_SELECT_LABEL; ?>
</td>
<td>
<?php
$list_methods=array('ym2'=>'PC','cards2'=>'AC');
foreach ($list_methods as $m_long => $m_short){?>
<div class="">
<input type = "checkbox" name = "pm_params[method_<?php echo $m_long; ?>]" value = "1"
<?php if($params['method_'.$m_long]=='1') echo "checked"; ?> />
</label>
</div>
<div class="col-3">
<div class="form-check">
<input class="form-check-input pay-mode" type="checkbox" id="money" name="pm_params[moneymode]"
value="1"
<?= isSelected($params, 'moneymode') ? "checked" : ''; ?> >
</div>
</div>
</div>
<div class="row mb-3">
<div class="col-3">
<label>RedirectURL</label>
</div>
<div class="col-9">
<div class="input-group has-success">
<input type="text" class="form-control valid form-control-success" name="jform[joomlatoken][token]" id="jform_joomlatoken_token" readonly=""
value="<?php echo escapeValue($notify_url); ?>" aria-invalid="false">
</div>
<div class="form-text"><?php echo _JSHOP_YOO_MONEY_REDIRECT_HELP; ?></div>
</div>
</div>
<div class="row mb-3">
<div class="col">
<h4><?php echo _JSHOP_YOO_MONEY_SET_HEAD; ?></h4>
</div>
</div>
<div class="row mb-3">
<div class="col-3">
<label for="money-account"><?php echo _JSHOP_YOO_MONEY_WALLET; ?></label>
</div>
<div class="col-9">
<input name="pm_params[account]" type="text" class="form-control" id="money-account"
value="<?= escapeValue($params['account']); ?>"
>
</div>
</div>
<div class="row mb-3">
<div class="col-3">
<label for="money-password"><?php echo _JSHOP_YOO_MONEY_PSW; ?></label>
</div>
<div class="col-9">
<input name="pm_params[password]" type="text" class="form-control" id="money-password"
value="<?= escapeValue($params['password']); ?>"
>
</div>
</div>
<div class="row mb-3">
<div class="col">
<h4><?php echo _JSHOP_YOO_MONEY_SELECT_HEAD; ?></h4>
</div>
</div>
<div class="row mb-3">
<div class="col-3">
<label for="money-password"><?php echo _JSHOP_YOO_MONEY_SELECT_LABEL; ?></label>
</div>
<div class="col-9">
<?php
foreach (array('ym2'=>'PC','cards2'=>'AC') as $m_long => $m_short){?>
<div class="form-check">
<input class="form-check-input" type="checkbox"
name = "pm_params[method_<?php echo $m_long; ?>]" value = "1"
<?= $params['method_'.$m_long] == '1' ? "checked" : ''; ?>
id="money-payment-method_<?php echo $m_long; ?>"
>
<label class="form-check-label" for="money-payment-method_<?php echo $m_long; ?>">
<?php echo constant('_JSHOP_YOO_METHOD_'.strtoupper($m_long).'_DESCRIPTION');?>

</div>
<?php } ?>
</td>
</tr>
<tr>
<td colspan="2">
<h4><?php echo _JSHOP_YOO_COMMON_HEAD; ?></h4>
</td>
</tr>
<tr>
<td class="key">
<label for="pm_params[money_transaction_end_status]"><?php echo _JSHOP_YOO_COMMON_STATUS; ?></label>
</td>
<td>
<?php
print JHTML::_('select.genericlist', $orders->getAllOrderStatus(), 'pm_params[money_transaction_end_status]',
'class="transaction-end-status form-select form-control form-select-sm" size="1" data-type="money"',
'status_id', 'name', $params['money_transaction_end_status'] );
?>
</td>
</tr>
</table>
</label>
</div>
<?php } ?>
</div>
</div>
<div class="row mb-3">
<div class="col">
<h4><?php echo _JSHOP_YOO_COMMON_HEAD; ?></h4>
</div>
</div>
<div class="row mb-3">
<div class="col-3">
<label for="money-password"><?php echo _JSHOP_YOO_COMMON_STATUS; ?></label>
</div>
<div class="col-9">
<?php
print JHTML::_('select.genericlist', $orders->getAllOrderStatus(), 'pm_params[money_transaction_end_status]',
'class="transaction-end-status form-select form-control form-select-sm" size="1" data-type="money"',
'status_id', 'name', $params['money_transaction_end_status'] );
?>
</div>
</div>

<?php echo JHtml::_('uitab.endTab'); ?>
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,9 @@ function toggleShowSecondReceipt(isShow)
function taxes_validate_mode(paymode) {
jQuery(function($) {
if (paymode == 1) {
$(".taxesArea").show();
$(".taxesArea").slideDown();
} else {
$(".taxesArea").hide();
$(".taxesArea").slideUp();
}
});
}
Expand Down Expand Up @@ -174,7 +174,9 @@ function installWidgetHandler() {
success: function (data) {
if (data['is_success'] !== true) {
jQuery('#warning_for_verify_file_install').html(data['message']).slideDown();
return false;
}
jQuery('#success_for_verify_file_install').html(data['message']).slideDown();
}
})
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -228,4 +228,5 @@

define('_JSHOP_YOO_BTN_BACK', 'Back');
define('_JSHOP_REDIRECT_TO_PAYMENT_PAGE', 'Redirecting to the Payment page, please wait...');
define('_JSHOP_PAYMENT_NUMBER', 'Order number %s');
define('_JSHOP_PAYMENT_NUMBER', 'Order number %s');
define('_JSHOP_YOO_KASSA_REFUND_SUCCEDED_ORDER_HISTORY', 'Refund was made. Amount is %s ₽.');
25 changes: 13 additions & 12 deletions src/components/com_jshopping/payments/pm_yoomoney/lang/ru-RU.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,14 @@
define('_JSHOP_YOO_KASSA_PAYMODE_LINK', '<a href=\'https://yookassa.ru/docs/payment-solution/payment-form/basics/\' target=\'_blank\'>Подробнее о сценариях оплаты</a>');
define('_JSHOP_YOO_KASSA_SELECT_TEXT', 'Отметьте способы оплаты, которые указаны в вашем договоре с ЮMoney');
define('_JSHOP_YOO_KASSA_CREDENTIALS_ERROR', 'Проверьте shopId и Секретный ключ — где-то есть ошибка. А лучше скопируйте их прямо из <a href="https://yookassa.ru/my" target="_blank">личного кабинета ЮKassa</a>');
define('_JSHOP_YOO_KASSA_TEST_WARNING', 'Вы включили тестовый режим приема платежей. Проверьте, как проходит оплата, и напишите менеджеру ЮKassa. Он выдаст рабочие shopId и Секретный ключ. <a href="https://yookassa.ru/docs/support/payments/onboarding/integration#api__04" target="_blank">Инструкция</a>');
define('_JSHOP_YOO_KASSA_TEST_WARNING', 'Вы включили тестовый режим приёма платежей. Проверьте, как проходит оплата, и напишите менеджеру ЮKassa. Он выдаст рабочие shopId и Секретный ключ. <a href="https://yookassa.ru/docs/support/payments/onboarding/integration#api__04" target="_blank">Инструкция</a>');

define('_JSHOP_YOO_METHOD_YOO_MONEY_DESCRIPTION', 'ЮMoney');
define('_JSHOP_YOO_METHOD_CARDS_DESCRIPTION', 'Банковские карты');
define('_JSHOP_YOO_METHOD_BANK_CARD_DESCRIPTION', 'Банковские карты');
define('_JSHOP_YOO_METHOD_CASH_DESCRIPTION', 'Наличные через терминалы');
define('_JSHOP_YOO_METHOD_MOBILE_BALANCE_DESCRIPTION', 'Баланс мобильного');
define('_JSHOP_YOO_METHOD_WEBMONEY_DESCRIPTION', 'Кошелек WebMoney');
define('_JSHOP_YOO_METHOD_WEBMONEY_DESCRIPTION', 'Кошелёк WebMoney');
define('_JSHOP_YOO_METHOD_ALFABANK_DESCRIPTION', 'Альфа-Клик');
define('_JSHOP_YOO_METHOD_SBERBANK_DESCRIPTION', 'SberPay');
define('_JSHOP_YOO_METHOD_TINKOFF_BANK_DESCRIPTION', 'Интернет-банк Тинькофф');
Expand All @@ -87,7 +87,7 @@
define('_JSHOP_YOO_METHOD_BANK_CARD_DESCRIPTION_PUBLIC', 'Банковские карты');
define('_JSHOP_YOO_METHOD_CASH_DESCRIPTION_PUBLIC', 'Наличные через терминалы');
define('_JSHOP_YOO_METHOD_MOBILE_BALANCE_DESCRIPTION_PUBLIC', 'Баланс мобильного');
define('_JSHOP_YOO_METHOD_WEBMONEY_DESCRIPTION_PUBLIC', 'Кошелек WebMoney');
define('_JSHOP_YOO_METHOD_WEBMONEY_DESCRIPTION_PUBLIC', 'Кошелёк WebMoney');
define('_JSHOP_YOO_METHOD_ALFABANK_DESCRIPTION_PUBLIC', 'Альфа-Клик');
define('_JSHOP_YOO_METHOD_SBERBANK_DESCRIPTION_PUBLIC', 'SberPay');
define('_JSHOP_YOO_METHOD_TINKOFF_BANK_DESCRIPTION_PUBLIC', 'Интернет-банк Тинькофф');
Expand All @@ -103,21 +103,21 @@
define('_JSHOP_YOO_KASSA_MPOS_LABEL', 'Страница успеха для способа «Оплата картой при доставке»');
define('_JSHOP_YOO_KASSA_MPOS_HELP', 'Это страница с информацией о доставке. Укажите на ней, когда привезут товар и как его можно будет оплатить');

define('_JSHOP_YOO_MONEY_HEAD', 'Для работы с модулем нужно <a href="https://yoomoney.ru/new" target="_blank">открыть кошелек</a> на ЮMoney и
define('_JSHOP_YOO_MONEY_HEAD', 'Для работы с модулем нужно <a href="https://yoomoney.ru/new" target="_blank">открыть кошелёк</a> на ЮMoney и
<a href="https://yoomoney.ru/transfer/myservices/http-notification" target="_blank">зарегистрировать приложение</a> на сайте ЮMoney');
define('_JSHOP_YOO_MONEY_ON', 'Включить прием платежей в кошелек на ЮMoney');
define('_JSHOP_YOO_MONEY_ON', 'Включить приём платежей в кошелёк на ЮMoney');
define('_JSHOP_YOO_MONEY_REDIRECT_HELP', 'Скопируйте эту ссылку в поле Redirect URL на <a href=\'https://yoomoney.ru/transfer/myservices/http-notification\' target=\'_blank\'>странице регистрации приложения</a>.');

define('_JSHOP_YOO_MONEY_SET_HEAD', 'Настройки приема платежей');
define('_JSHOP_YOO_MONEY_SET_HEAD', 'Настройки приёма платежей');
define('_JSHOP_YOO_MONEY_WALLET', 'Номер кошелька');
define('_JSHOP_YOO_MONEY_PSW', 'Секретное слово');

define('_JSHOP_YOO_MONEY_SELECT_HEAD', 'Настройка сценария оплаты');
define('_JSHOP_YOO_MONEY_SELECT_LABEL', 'Способы оплаты');
define('_JSHOP_YOO_METHOD_YM2_DESCRIPTION', 'Кошелек ЮMoney');
define('_JSHOP_YOO_METHOD_YM2_DESCRIPTION', 'Кошелёк ЮMoney');
define('_JSHOP_YOO_METHOD_CARDS2_DESCRIPTION', 'Банковская карта');

define('_JSHOP_YOO_METHOD_YM2_DESCRIPTION_PUBLIC', 'Кошелек ЮMoney');
define('_JSHOP_YOO_METHOD_YM2_DESCRIPTION_PUBLIC', 'Кошелёк ЮMoney');
define('_JSHOP_YOO_METHOD_CARDS2_DESCRIPTION_PUBLIC', 'Банковская карта');

define('_JSHOP_YOO_COMMON_HEAD', 'Дополнительные настройки для администратора');
Expand All @@ -136,13 +136,13 @@
define('_JSHOP_YOO_LICENSE','Лицензионный договор:');
define('_JSHOP_YOO_LICENSE_TEXT2',"<p>Любое использование Вами программы означает полное и безоговорочное принятие Вами условий лицензионного договора, размещенного по адресу <a href='https://yoomoney.ru/doc.xml?id=527132' target='_blank'>https://yoomoney.ru/doc.xml?id=527132</a> (далее – «Лицензионный договор»). Если Вы не принимаете условия Лицензионного договора в полном объёме, Вы не имеете права использовать программу в каких-либо целях.</p>");
define('_JSHOP_YOO_TESTMODE_DESCRIPTION', 'Использовать в тестовом режиме?');
define('_JSHOP_YOO_MODE_DESCRIPTION', 'Способ приема платежей:');
define('_JSHOP_YOO_MODE_DESCRIPTION', 'Способ приёма платежей:');
define('_JSHOP_YOO_MODE1_DESCRIPTION', 'ЮMoneyи');
define('_JSHOP_YOO_MODE2_DESCRIPTION', 'ЮKassa (выбор оплаты на стороне сайта)');
define('_JSHOP_YOO_MODE3_DESCRIPTION', 'ЮKassa (выбор оплаты на стороне ЮKassa)');
define('_JSHOP_YOO_REG_IND', 'Если у вас нет аккаунта в ЮMoney, то следует зарегистрироваться тут - <a href="https://yoomoney.ru/" target="_blank">https://yoomoney.ru/</a><br/><b>ВАЖНО!</b> Вам нужно будет указать ссылку для приема HTTP уведомлений здесь - <a href="https://sp-yoomoney.ru/myservices/online.xml">https://sp-yoomoney.ru/myservices/online.xml</a>');
define('_JSHOP_YOO_REG_IND', 'Если у вас нет аккаунта в ЮMoney, то следует зарегистрироваться тут - <a href="https://yoomoney.ru/" target="_blank">https://yoomoney.ru/</a><br/><b>ВАЖНО!</b> Вам нужно будет указать ссылку для приёма HTTP уведомлений здесь - <a href="https://sp-yoomoney.ru/myservices/online.xml">https://sp-yoomoney.ru/myservices/online.xml</a>');

define('_JSHOP_YOO_REG_ORG', 'Для работы с модулем необходимо <a href="https://yoomoney.ru/joinups/">подключить магазин к YooMoney for business</a>. После подключения вы получите параметры для приема платежей (идентификатор магазина — shopId и номер витрины — scid).');
define('_JSHOP_YOO_REG_ORG', 'Для работы с модулем необходимо <a href="https://yoomoney.ru/joinups/">подключить магазин к YooMoney for business</a>. После подключения вы получите параметры для приёма платежей (идентификатор магазина — shopId и номер витрины — scid).');
define('_JSHOP_YOO_METHODS_DESCRIPTION', 'Укажите необходимые способы оплаты');
define('_JSHOP_YOO_PASSWORD', 'Секретное слово (shopPassword) для обмена сообщениями:');
define('_JSHOP_YOO_SHOPID', 'Идентификатор вашего магазина в ЮMoney (ShopID):');
Expand Down Expand Up @@ -242,4 +242,5 @@

define('_JSHOP_YOO_BTN_BACK', 'Назад');
define('_JSHOP_REDIRECT_TO_PAYMENT_PAGE', 'Перенаправление на страницу оплаты');
define('_JSHOP_PAYMENT_NUMBER', 'Номер заказа %s');
define('_JSHOP_PAYMENT_NUMBER', 'Номер заказа %s');
define('_JSHOP_YOO_KASSA_REFUND_SUCCEDED_ORDER_HISTORY', 'Выполнен возврат. Сумма %s руб.');
Loading

0 comments on commit 3fbf859

Please sign in to comment.