Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не работает отправка формы посредством CURL
Форумы портала PHP.SU » » Вопросы новичков » Не работает отправка формы посредством CURL

Страниц (1): [1]
 

1. rasl89 - 08 Июня, 2020 - 20:00:11 - перейти к сообщению
Отправляю форму при помощи curl на мерчант платежки, форма не уходит, возвращает на главную, не могу найти причину, помогите пожалуйста. Возможна проблема с массивом.

PHP:
скопировать код в буфер обмена
  1.  
  2. ini_set('display_errors', 1);
  3. global $current_user;
  4. $info = '';
  5. if (isset($_POST['m_amount'])) {
  6.     $domain = 'https://payeer.com/merchant/';
  7.     $fields = [
  8.         'm_shop' => '001',
  9.         'm_orderid' => $current_user->user_login.'|'.date('m.d.y|H:i:s'),
  10.         'm_amount' => number_format($_POST['m_amount'], 2, ".", ""),
  11.         'm_curr' => 'RUB',
  12.         'm_desc' => base64_encode($current_user->user_login),
  13.         'm_key' => '001',
  14.     ];
  15.     $sign = strtoupper(hash('sha256', implode(':', array_keys($fields))));
  16.     $fields['m_sign'] = $sign;
  17.  
  18.     $ch = curl_init($domain);
  19.     curl_setopt($ch, CURLOPT_POST, 1);
  20.     curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
  21.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  22.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  23.     curl_setopt($ch, CURLOPT_HEADER, false);
  24.     $html = curl_exec($ch);
  25.     if (curl_errno($ch)) {
  26.         $info = 'curl has error: '.curl_error($ch);
  27.     } else {
  28.         $info = $html;
  29.     }
  30.     curl_close($ch);
  31. }
  32.  


CODE (html):
скопировать код в буфер обмена
  1. <form name="et-form" class="et-form" method="post" action="/" >
  2.  
  3.             <div class="plateg">
  4.                 <label for="amount"><?php _e( 'Money amount', 'enginethemes' ); ?></label>
  5.                 <input type="number" name="m_amount" value="" placeholder="Минимум: 100.00Р" required></div>
  6.                 <br><button type= "submit" name="amount" class="btn-save waves-effect waves-light btn-diplomat"><?php _e('Пополнить'); ?></button>
  7.         </form>
  8.  
  9. <script>
  10.     $('form.et-form').on('submit', function() {
  11.         if (parseFloat($('form.et-form input[name=m_amount]').val()) < 100) {
  12.            alert("Минимальная сумма для пополнения 100,00 Р");
  13.            return false;
  14.        }
  15.    });
  16. </script>


При попытке вывести через echo $sign $fields ничего не показывет, дебаггер тоже молчит.
2. Albert - 09 Июня, 2020 - 01:27:13 - перейти к сообщению
Судя по вашему коду, перекидывать на главную будет даже если выполняется отправка через curl. Результат вы записываете в переменную, и дальше ничего с ней не делаете.
3. rasl89 - 09 Июня, 2020 - 09:38:33 - перейти к сообщению
Albert пишет:
Судя по вашему коду, перекидывать на главную будет даже если выполняется отправка через curl. Результат вы записываете в переменную, и дальше ничего с ней не делаете.

Спасибо за ответ.
Можно точнее пожалуйста?
4. Albert - 09 Июня, 2020 - 16:05:42 - перейти к сообщению
Для начала сделайте вывод результата, и посмотрите что возвращается после отправки curl.
5. rasl89 - 09 Июня, 2020 - 20:44:23 - перейти к сообщению
Albert пишет:
Для начала сделайте вывод результата, и посмотрите что возвращается после отправки curl.


так ничего не выводит и дебаггером ничего отследить не могу(
6. Albert - 09 Июня, 2020 - 22:10:38 - перейти к сообщению
Попробуйте перед отправкой добавить опции
PHP:
скопировать код в буфер обмена
  1. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  2. curl_setopt($ch, CURLOPT_AUTOREFERER, true);
7. rasl89 - 09 Июня, 2020 - 22:17:19 - перейти к сообщению
Albert пишет:
Попробуйте перед отправкой добавить опции
PHP:
скопировать код в буфер обмена
  1. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  2. curl_setopt($ch, CURLOPT_AUTOREFERER, true);


к сожалению эффекта нет
8. Albert - 09 Июня, 2020 - 22:18:42 - перейти к сообщению
Какой код ответа возвращает?
9. rasl89 - 09 Июня, 2020 - 22:21:29 - перейти к сообщению
Albert пишет:
Какой код ответа возвращает?

так никакого(
10. Albert - 09 Июня, 2020 - 22:25:51 - перейти к сообщению
Я имею в виду
11. rasl89 - 09 Июня, 2020 - 22:32:46 - перейти к сообщению
Albert пишет:
Я имею в виду


цифра 0
12. Albert - 09 Июня, 2020 - 22:38:15 - перейти к сообщению
А вообще у вас curl работает на сервере? Другие запросы отправляются?
13. rasl89 - 09 Июня, 2020 - 22:39:59 - перейти к сообщению
Albert пишет:
А вообще у вас curl работает на сервере? Другие запросы отправляются?


да, все работает, недавно писал парсер, все отлично отрабатывает
14. rasl89 - 10 Июня, 2020 - 21:35:19 - перейти к сообщению
Проблема решена без cURL
Может кому-то пригодится

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. if (isset($_POST['m_amount'])) {
  4.     $m_shop = '001';
  5.     $m_orderid = $user_data01;
  6.     $m_amount = number_format($_POST['m_amount'], 2, ".", "");
  7.     $m_curr = 'RUB';
  8.     $m_desc = base64_encode($user_data01);
  9.     $m_key = '001';
  10.  
  11.     $arHash = array(
  12.         $m_shop,
  13.         $m_orderid,
  14.         $m_amount,
  15.         $m_curr,
  16.         $m_desc
  17.     );
  18.  
  19.     $arHash[] = $m_key;
  20.  
  21.     $sign = strtoupper(hash('sha256', implode(':', $arHash)));
  22.  
  23.  


CODE (html):
скопировать код в буфер обмена
  1. <form method="post" action="https://payeer.com/merchant/" id="payeer" hidden>
  2. <input type="hidden" name="m_shop" value="<?= $m_shop ?>">
  3. <input type="hidden" name="m_orderid" value="<?= $m_orderid ?>">
  4. <input type="hidden" name="m_amount" value="<?= $m_amount ?>">
  5. <input type="hidden" name="m_curr" value="<?= $m_curr ?>">
  6. <input type="hidden" name="m_desc" value="<?= $m_desc ?>">
  7. <input type="hidden" name="m_sign" value="<?= $sign ?>">
  8.  
  9. <input type="submit" value="pay" />
  10. </form>
  11. <script>
  12.     document.getElementById('payeer').submit();
  13. </script>
  14. <?php
  15. }
  16. ?>


CODE (html):
скопировать код в буфер обмена
  1. <input type="number" name="m_amount" placeholder="Минимум: 100.00Р" required></div>

 

Powered by ExBB FM 1.0 RC1