Я не могу отправлять и перенаправлять на платежный шлюз через PHP-Curl

Я создал форму, которая требует информации, включая $amount.

Предположительно, форма отправит информацию в базу данных MYSQL для хранения. <form name = "payFormCcard" action = "<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method = "post">

Для части PHP некоторая информация о платеже (например, $amount, некоторая информация будет опубликована в жестко закодированной форме) будет отправлена ​​в Платежный шлюз через Curl. И я обязательно перенаправлю на Платежный Шлюз header("Location:https://test.paydollar.com/b2cDemo/eng/payment/payForm.jsp");

Теперь данные могут успешно сохраняться в БД. Хотя они поступают в Платежный шлюз в конце, данные не могут быть отправлены на Шлюз.

One the Gateway site ,

Error Message

Parameter merchantId Incorrect

Следовательно, в методе Curl что-то не так. Все параметры не могут быть успешно переданы на платежный шлюз.

Часть PHP в create.php:

// Processing form data when form is submitted
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Validate name
    $input_CName = trim($_POST["CName"]);
    if (empty($input_CName)) {
        $CName_err = "Please enter a name.";
    } elseif (!filter_var(trim($_POST["CName"]), FILTER_VALIDATE_REGEXP, array("options" => array("regexp" => "/^[a-zA-Z'-.\s ]+$/")))) {
        $CName_err = 'Please enter a valid name.';
    } else {
        $CName = $input_CName;
    }
....Other field validation ...

....Storing to DB if every field is okay .
  if (empty($CName_err) && empty($Address_err) && empty($amount_err) && empty($Phone_err)) {
        // Prepare an insert statement
        $pdo = Database::connect();
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "INSERT INTO donation (CName, Address, Phone, Amount ,Ticket, Purpose) VALUES (?, ?, ?, ? ,?, ?)";

        $q = $pdo->prepare($sql);
        $q->execute(array($CName, $Address, $Phone, $amount ,$Ticket ,$Purpose));
        Database::disconnect();

Curl Part ......

$fields = array(
   'amount' => $amount,
      'merchantId'   => 'sth',
            'orderRef'    => 'sth',
            'currCode'   => '344',
            'mpsMode'    => 'NIL',
       'successUrl' =>'http://www.yourdomain.com/Success.html',
 'failUrl' =>'http://www.yourdomain.com/Fail.html',
'cancelUrl'=>'http://www.yourdomain.com/Cancel.html',
            'payType'    => 'N',
            'lang'       => 'E',
            'payMethod'  => 'CC',
            'secureHash'=> 'sth'
);

// build the urlencoded data
$postvars = http_build_query($fields);
    $ch = curl_init();
//
curl_setopt($ch, CURLOPT_URL,"https://test.paydollar.com/b2cDemo/eng/payment/payForm.jsp");
curl_setopt($ch, CURLOPT_POST,  count($fields));
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);
//
//// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec ($ch);

curl_close ($ch);

   header("Location:https://test.paydollar.com/b2cDemo/eng/payment/payForm.jsp"); 
}

}
?>

Вы записываете вывод сервера в переменную, но ничего не делаете с ней. Вы должны передать токен или что-то еще при перенаправлении вашего местоположения?

ivanivan 27.06.2018 03:24

@ivanivan Я записываю некоторые переменные в форму. Я отправляю переменные и некоторую жестко закодированную информацию через curl на платежный шлюз. Наконец, я обязательно открываю сайт шлюза Epayment.

evabb 27.06.2018 03:31

Ошибка очень простая. Ваш merchantID неверен. Вам следует обратиться к поставщику платежного шлюза за помощью в решении проблемы с вашим merchantID.

hungrykoala 27.06.2018 03:36

@hungryKoala Я позвонил провайдеру. Они сказали, что возникли проблемы с набором параметров. Я предполагаю, что платежный шлюз не получил данные должным образом. Это потому, что этот набор параметров работал с методом скрытой формы ввода.

evabb 27.06.2018 03:40

глядя на документы (paydollar.com/pdf/paygate_integration_guide.pdf), я вижу, где POST требует гораздо больше параметров и возвращает информацию, которая вам, вероятно, нужна, например, код подтверждения банка. вы просто дублируете то, что у вас есть / было в форме html?

ivanivan 27.06.2018 04:46

Кроме того, попробуйте установить заголовок для Content-Type application/x-www-form-urlencoded в вашей команде cURL

ivanivan 27.06.2018 04:53

@ivanivan Да, я просто упрощаю дублирующиеся параметры. Мне следовало добавить достаточно параметров. Поэтому я могу это успешно сделать в методе скрытого ввода.

evabb 27.06.2018 04:57
application/x-www-form-urlencoded Можете уточнить по каким строкам?
evabb 27.06.2018 04:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
8
297
0

Другие вопросы по теме