Задать вопрос
@Chaly95

Из за чего возникает ошибка Internal server error при попытке отправить POST через CURL для оплаты частями от Privat Bank?

Здравствуйте
При попытке сделать Post запрос возникает ошибка Internal server error.

Пост запрос отправляю при помощи curl, для получения токена для оплаты частями от Приват Банка.

Вот код создавал на основе Api https://bw.gitbooks.io/api-oc/content/pay.html

Вот пример использования https://payparts2.privatbank.ua/ipp/sandbox#!create

Вот мой код:

$curl = curl_init('https://payparts2.privatbank.ua/ipp/v2/payment/create');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS,
    json_encode(array(
        'storeId' => '4AAD1369CF734B64B70F',
        'orderId' => '12211212121',
        'amount' => 2,
        'partsCount' => 5,
        'merchantType' => 'PP',
        'scheme' => 1111,
        'products' => array(
            array(
                'name' => 'test',
                'count' => 1,
                'price' => 2
            )
        ),
        'recipientId'=> 'qwerty1234',
        'responseUrl'=> 'https://adsasd',
        'redirectUrl'=> 'https://saddsa',
    'signature' => base64_encode ( SHA1 ( '75bef16bfdce4d0e9c0ad5a19b9940df'.'4AAD1369CF734B64B70F'.'12211212121'.' 200'.' 5'.' PP'.'https://adsasd'.'https://saddsa'.' test1200'.' 75bef16bfdce4d0e9c0ad5a19b9940df' ))
    ))
);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept: application/json','Accept-Encoding: UTF-8','Content-Type: application/json; charset=UTF-8'));
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
//execute curl
$response = curl_exec($curl);

//get execute result
$curl_errno = curl_errno($curl);
$curl_error = curl_error($curl);
$aInfo = @curl_getinfo($curl);
//close curl
curl_close($curl);



$response =  json_decode($response,true);
print_r($response);


Не могу понять почему при запросе в sandbox приватбанка все работает но при отправке с моего сервера ошибка Internal server error.
Мой скрипт на сервере https://wp.pipl.ua/test.php.

Буду благодарен за любую помощь!)
  • Вопрос задан
  • 1303 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
gromdron
@gromdron
Работаю с Bitrix24
Окей.

'partsCount' => 5,

partsCount Integer notNull, min=2, max=25 Количество частей на которые делится сумма транзакции (Для заключения кредитного договора) Должно быть > 1.


'amount' => 2,
amount Да Double notNull, Min=300, Max=50 000 Окончательная сумма покупки

Минимальная сумма 300, у вас 2.
Далее, вы хотите чтобы 2 разделилось каким-то образом на 5?
Правильно ли я понимаю, что вы хотите чтобы пользователь провел 5 транзакций по 40 копеек?

Кроме того - у тебя еще и ошибка в сигнатуре:
'signature' => base64_encode ( SHA1 ( '75bef16bfdce4d0e9c0ad5a19b9940df'.'4AAD1369CF734B64B70F'.'12211212121'.' 200'.' 5'.' PP'.'https://adsasd'.'https://saddsa'.' test1200'.' 75bef16bfdce4d0e9c0ad5a19b9940df' ))

Если внимательно посмотришь - у тебя пробелы перед 200, 5 и PP стоят.
Далее: у тебя есть параметр 'recipientId', который ты передаешь, но в хеш-сумме он остутствует, а по правилам должен быть. Либо убирай, либо добавляй в формирование.

Поделаешь то что нужно и получишь другую ошибку:
Array
(
    [orderId] => 12211212121
    [signature] => +JYghcAp9oIQq3xR/Zn1PftEvQ8=
    [state] => FAIL
    [message] => bad value: Scheme not found for given store
    [storeId] => 4AAD1369CF734B64B70F
)


Но это все потому, что scheme - это Идентификатор схемы. Выделяется Банком. По умолчанию не передается.

Удаляешь его и получаешь заветное:
Array
(
    [orderId] => 12211212121
    [signature] => S4cN/oBUIIJeHlcJgTTM+gcZddQ=
    [state] => FAIL
    [message] => bad value: Payment with sent orderId already exists
    [storeId] => 4AAD1369CF734B64B70F
)


А это потому, что кто-то уже прогнал твой запрос через api или через веб-морду. Меняешь orderid и получаешь заветное:
Array
(
    [orderId] => fdsa1
    [signature] => x2m4GaLFv3ptcxZLynRzwuy/t5g=
    [token] => ADFEDB2FB0C7485CB968148D4BFD6B5A
    [state] => SUCCESS
    [storeId] => 4AAD1369CF734B64B70F
)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Randewoo
Ты крашишь их сервер.
500 Internal Server Error - это чисто серверная ошибка, он не может обработать твой запрос.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы