3namespace Sale\Handlers\PaySystem;
6use Bitrix\Main\Request;
7use Bitrix\Main\Type\DateTime;
8use Bitrix\Sale\Payment;
9use Bitrix\Sale\PaySystem;
10use Bitrix\Main\Loader;
11use Bitrix\Main\Localization\Loc;
14Loc::loadMessages(__FILE__);
20class PayMasterHandler
extends WebMoneyHandler
30 'PS_MODE' => $this->service->getField(
'PS_MODE'),
31 'URL' => $this->getUrl(
$payment,
'pay'),
32 'BX_PAYSYSTEM_CODE' => $this->service->getField(
'ID'),
33 'PAYMASTER_SUCCESS_URL' => $this->getSuccessUrl(
$payment),
34 'PAYMASTER_FAIL_URL' => $this->getFailUrl(
$payment),
46 return array(
'BX_HANDLER' =>
'PAYMASTER');
57 $serviceResult =
new PaySystem\ServiceResult();
59 if ((
int)
$request->get(
'LMI_PREREQUEST') == 1 || (
int)
$request->get(
'LMI_PREREQUEST') == 2)
63 $request->get(
'LMI_CURRENCY') != $this->getBusinessValue(
$payment,
'PAYMENT_CURRENCY') ||
64 $request->get(
'LMI_MERCHANT_ID') != $this->getBusinessValue(
$payment,
'PAYMASTER_SHOP_ACCT')
67 $serviceResult->addError(
new Error(Loc::getMessage(
'SALE_HPS_PAYMASTER_ERROR_PARAMS_VALUE')));
71 $serviceResult->setData(
array(
'CODE' =>
'YES'));
80 if (
$request->get(
"LMI_SIM_MODE") != 0)
81 $psDescription .= Loc::getMessage(
'SALE_HPS_PAYMASTER_SIM_MODE_TEST');
83 $psDescription .= str_replace(
'#MERCHANT_ID#',
$request->get(
"LMI_MERCHANT_ID"), Loc::getMessage(
'SALE_HPS_PAYMASTER_DESC_MERCHANT_ID'));
84 $psDescription .= str_replace(
'#SYS_INVS_NO#',
$request->get(
"LMI_SYS_INVS_NO"), Loc::getMessage(
'SALE_HPS_PAYMASTER_DESC_SYS_INVS_NO'));
85 $psDescription .= str_replace(
'#SYS_TRANS_NO#',
$request->get(
"LMI_SYS_TRANS_NO"), Loc::getMessage(
'SALE_HPS_PAYMASTER_DESC_SYS_TRANS_NO'));
86 $psDescription .= str_replace(
'#SYS_TRANS_DATE#',
$request->get(
"LMI_SYS_TRANS_DATE"), Loc::getMessage(
'SALE_HPS_PAYMASTER_DESC_SYS_TRANS_DATE'));
87 $psDescription .= str_replace(
'#PAY_SYSTEM#',
$request->get(
"LMI_PAY_SYSTEM"), Loc::getMessage(
'SALE_HPS_PAYMASTER_DESC_PAY_SYSTEM'));
90 if (
$request->get(
"LMI_PAYER_PURSE") !==
null)
91 $psMessage .= str_replace(
'#PAYER_PURSE#',
$request->get(
"LMI_PAYER_PURSE"), Loc::getMessage(
'SALE_HPS_PAYMASTER_DESC_PAYER_PURSE'));
93 if (
$request->get(
"LMI_PAYER_WM") !==
null)
94 $psMessage .= str_replace(
'#PAYER_WM#',
$request->get(
"LMI_PAYER_WM"), Loc::getMessage(
'SALE_HPS_PAYMASTER_DESC_PAYER_WM'));
96 if (
$request->get(
"LMI_PAYMER_NUMBER") !==
null)
97 $psMessage .= str_replace(
'#PAYMER_NUMBER#',
$request->get(
"LMI_PAYER_NUMBER"), Loc::getMessage(
'SALE_HPS_PAYMASTER_DESC_PAYER_NUMBER'));
99 if (
$request->get(
"LMI_PAYMER_EMAIL") !==
null)
100 $psMessage .= str_replace(
'#PAYMER_EMAIL#',
$request->get(
"LMI_PAYER_EMAIL"), Loc::getMessage(
'SALE_HPS_PAYMASTER_DESC_PAYER_EMAIL'));
102 if (
$request->get(
"LMI_TELEPAT_PHONENUMBER") !==
null)
103 $psMessage .= str_replace(
'#TELEPAT_PHONENUMBER#',
$request->get(
"LMI_TELEPAT_PHONENUMBER"), Loc::getMessage(
'SALE_HPS_PAYMASTER_DESC_TELEPAT_PHONENUMBER'));
105 if (
$request->get(
"LMI_TELEPAT_ORDERID") !==
null)
106 $psMessage .= str_replace(
'#TELEPAT_ORDERID#',
$request->get(
"LMI_TELEPAT_ORDERID"), Loc::getMessage(
'SALE_HPS_PAYMASTER_DESC_TELEPAT_ORDERID'));
110 "PS_STATUS_CODE" =>
"-",
112 "PS_STATUS_MESSAGE" => $psMessage,
113 "PS_SUM" =>
$request->get(
"LMI_PAYMENT_AMOUNT"),
114 "PS_CURRENCY" => $this->getBusinessValue(
$payment,
'PAYMENT_CURRENCY'),
115 "PS_RESPONSE_DATE" =>
new DateTime()
120 && $this->getBusinessValue(
$payment,
'PAYMASTER_SHOP_ACCT') ==
$request->get(
"LMI_MERCHANT_ID")
124 $serviceResult->setOperationType(PaySystem\ServiceResult::MONEY_COMING);
125 $serviceResult->setPsData($psFields);
129 $serviceResult->addError(
new Error(
'Incorrect payment sum or payment flag'));
134 $serviceResult->addError(
new Error(
'Incorrect payment hash'));
138 if (!$serviceResult->isSuccess())
140 $error =
'Paymaster: processRequest: '.join(
'\n', $serviceResult->getErrorMessages());
141 PaySystem\Logger::addError(
$error);
144 return $serviceResult;
155 self::ACTIVE_URL =>
'https://paymaster.ru/Payment/Init'
171 $hash = base64_encode(hash($algorithm, $string,
true));
173 return mb_strtoupper(
$hash) == mb_strtoupper(
$request->get(
'LMI_HASH'));
181 public function sendResponse(PaySystem\ServiceResult
$result, Request
$request)
187 if (array_key_exists(
'CODE',
$data))
198 private function getSuccessUrl(Payment
$payment)
207 private function getFailUrl(Payment
$payment)
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
showTemplate(Payment $payment=null, $template='')
setExtraParams(array $values)
getBusinessValue(Payment $payment=null, $code)
static includeHandler($actionFile)
static getIndicativeFields()
processRequest(Payment $payment, Request $request)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)