

Коврик

Думаю никто не подскажет, т.к.Кто нибудь может подсказать
нет конкретики.Перепробовал все настройки — не приходят письма.
Попробуйте прочитать документацию
PHP mail() — выставлял (с этим параметром в любом случае должны приходить)
SMTP — выставлял (все настройки были правильными)
Sendmail — выставлял
проблема не в хосте (приходят письма только с подтверждения перевода в Биллинге 2)
class systemWww extends billingPaymentSystem {
public function getPaymentFormFields($order, $options, $rate=1){
$summ = number_format(round($order['summ'] * $rate, 2), 2, '.', '');
$kosh = '41001180157xxxx';
$label1 = 'false';
$quickpay1 = 'donate';
$targets1 = 'Вебинар';
$sum1 = 'sum';
$comment1 = '';
$fio1 = 'false';
$email1 = 'false';
$phone1 = 'false';
$address1 = 'false';
$paymentType1 = 'MC';
return array(
'order_id' => $order['id'],
'receiver' => $kosh,
'label' => $order['id'],
'quickpay-form' => $quickpay1,
'targets' => $order['description'],
'sum' => $summ,
'comment' => $comment1,
'need-fio' => $fio1,
'need-email' => $email1,
'need-phone' => $phone1,
'need-address' => $address1,
'paymentType' => $paymentType1,
return array(
'LMI_PAYEE_PURSE' => $options['purse'],
'LMI_PAYMENT_DESC_BASE64' => base64_encode($order['description']),
);
}
public function getSuccessOrderId($request){
return $request->get('label');
}
public function processPayment($request, $model, $options, $rate=1){
$op_id = $request->get('label');
if (!$op_id) { echo LANG_BILLING_ERR_ORDER_ID; return false; }
$operation = $model->getOperation($op_id);
if (!$operation) { echo LANG_BILLING_ERR_ORDER_ID; return false; }
if ($operation['status'] != billing::STATUS_CREATED) { echo LANG_BILLING_ERR_ORDER_ID; return false; }
$summ = round($operation['summ'] * $rate, 2);
if ($request->get('LMI_PREREQUEST') == 1){ — неясно для чего
return $this->preRequest($request, $options, $summ);
}
$secret_key = $options['secret_key'];
$data = $request->getAll();
$common_string = $data['receiver'].$data['sum'].$data['label'].
$data['LMI_MODE'].$data['LMI_SYS_INVS_NO'].$data['LMI_SYS_TRANS_NO'].
$data['LMI_SYS_TRANS_DATE'].$secret_key.$data['receiver'].$data['LMI_PAYER_WM']; — тоже не ясно
$hash = strtoupper(hash('sha256', $common_string));
if($hash!=$data['LMI_HASH']) { echo LANG_BILLING_ERR_SIG; return false; }
$model->acceptPayment($op_id);
return true;
}
public function preRequest($request, $options, $summ) {
header("Content-type: text/html; charset=UTF-8");
$out_summ = $request->get('sum');
$out_purse = $request->get('receiver');
if ($summ != $out_summ) { echo LANG_BILLING_ERR_SUMM; return false; }
if ($options['purse'] != $out_purse) { echo LANG_BILLING_ERR_SHOP_ID; return false; }
}
}
В общем может элементарные вещи подскажете?
это тут вообще не нужно, яндекс работает напрямую с формой.public function preparePayment($request, $model, $options, $rate=1)
У вас естьоно создаёт или добавляет нужные данные в поля формы для отправки яндексу.
public function getPaymentFormFields($order, $options, $rate=1)
А это
Нужно для получения данных от яндекса, сверки с "реальностью" и автоматического завершения оплаты заказа успехом или провалом.
public function processPayment($request, $model, $options, $rate=1){...}
Само содержимое этих методов зависит от способа оплаты (кошельком или картой) и тем какой движок используется (Яндекс.Деньги или Яндекс.Касса). Вам лучше посмотреть на файл \system\controllers\billing\systems\wmr\wmr.php. Он более информативен чем test-овый.
Спасибо! Буду смотреть, пробовать…
Коврик, для автоматизации у вас отсутствует методон как раз принимает данные от яндекса, проверяет его и делает соответствующие выводы.
public function processPayment($request, $model, $options, $rate=1){...}
Помогите разобраться, куда, что добавлять.
я так понимаю нужно это ↑ поставит вместо этого: public function preparePayment($request, $model, $options, $rate=1)
Коврик, для автоматизации у вас отсутствует методон как раз принимает данные от яндекса, проверяет его и делает соответствующие выводы.
public function processPayment($request, $model, $options, $rate=1){...}
Помогите разобраться, куда, что добавлять.
/www/system/controllers/billing/systems/test/test.php
<?php
class systemTest extends billingPaymentSystem {
public function getPaymentFormFields($order, $options, $rate=1){
$summ = number_format(round($order['summ'] * $rate, 2), 2, '.', '');
$kosh = '41001180157xxxx';
$label1 = 'false';
$quickpay1 = 'donate';
$targets1 = 'пополнение';
$sum1 = 'sum';
$comment1 = '';
$fio1 = 'false';
$email1 = 'false';
$phone1 = 'false';
$address1 = 'false';
$paymentType1 = 'AC';
return array(
'order_id' => $order['id'],
'receiver' => $kosh,
'label' => $order['id'],
'quickpay-form' => $quickpay1,
'targets' => $order['description'],
'sum' => $summ,
'comment' => $comment1,
'need-fio' => $fio1,
'need-email' => $email1,
'need-phone' => $phone1,
'need-address' => $address1,
'paymentType' => $paymentType1,
);
}
public function preparePayment($request, $model, $options, $rate=1){
$order_id = $request->get('order_id');
$model->acceptPayment($order_id);
header('Location: '. href_to('billing', 'success', $order_id));
}
}
Что нужно добавить в файл? Ведь это будет готовое решение для всех пользователей.
Андрей, но в стартовом посте автор темы ссылается на какой то файл, я так понял имеется возможность добавлять файлы с новыми платежными системами.
Просто автор темы вывалил тут код, на-те разбирайтесь. Стоило подробнее описать что не так, пошло. Биллинг есть не у всех
Я попытался исправить систему оплаты "тест" (входит в стандартный пакет). За основу взял пополнение через форму — конструктор для физ лица. Пользователь с моим кодом оплатить может, но баллы автоматически не зачисляются (нужно искать пользователя и вручную ставить ему количество баллов)