Запрос, отправленный клиентом, был синтаксически некорректным, когда я использую запросы, имитирующие запрос почтальона - PullRequest
0 голосов
/ 30 ноября 2018

Как я могу использовать Запросы, имитирующие http-запрос Почтальона?

Заголовки: введите описание изображения здесь

Тело: введите описание изображения здесь

Коды:

Заголовки:

Authorization: Bearer 123456
Content-Type: application/json

Тело:

{
    "amount":"12",
    "currency":"USD",
    "reference":"20174647312238437828",
    "ipn_url":"http://website.com/ipn"
}

Я использую запрос верхнего почтальона успешно.Но когда я использую Requests для имитации запроса почтальона, я получаю ошибку:

    $url = QRCODE_URL;

    $data = array(
        'amount'=> 12,
        'currency'=>'USD',
        'reference'=>'123456765432',
        'ipn_url'=>'http://website.com/ipn'
    );
    // $token
    $headers = array("Authorization"=>"Bearer 123456", "Content-Type"=>"application/json");
    $options = $data;

    $request = Requests::post($url, $headers, $data);

    echo '<pre>';
    print_r($request);

Я получаю ошибку, подобную этой:

HTTP Status 400 - 
type Status report

message 

description The request sent by the client was syntactically incorrect.

1 Ответ

0 голосов
/ 02 декабря 2018

Я вижу, вы не закодировали данные в JSON, поэтому я попробовал ниже:

$url = "https://api.hantepay.com/v1.3/transactions/qrcode";

$data = array(
    'amount'=> 12,
    'currency'=>'USD',
    'reference'=>'123456765432',
    'ipn_url'=>'http://website.com/ipn'
);

$headers = array("Authorization"=>"Bearer 123456", "Content-Type"=>"application/json");
$options = $data;

$request = Requests::post($url, $headers, json_encode($data));

echo '<pre>';
print_r($request);

работает нормально:

Requests_Response Object
(
    [body] => {"amount":"12","code_url":"https://pay.usagms.com/api/v1.0/payment/partners/XHYCRN/orders/03500201812012144392663016/retail_pay","currency":"USD","id":"201812020238444097","reference":"123456765432","time":"2018-12-02 02:44:38","timeout":120}
    [raw] => HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 242
Date: Sun, 02 Dec 2018 02:44:39 GMT
Via: 1.1 google
Alt-Svc: clear
Connection: close

{"amount":"12","code_url":"https://pay.usagms.com/api/v1.0/payment/partners/XHYCRN/orders/03500201812012144392663016/retail_pay","currency":"USD","id":"201812020238444097","reference":"123456765432","time":"2018-12-02 02:44:38","timeout":120}
    [headers] => Requests_Response_Headers Object
        (
            [data:protected] => Array
                (
                    [server] => Array
                        (
                            [0] => Apache-Coyote/1.1
                        )

                    [content-length] => Array
                        (
                            [0] => 242
                        )

                    [date] => Array
                        (
                            [0] => Sun, 02 Dec 2018 02:44:39 GMT
                        )

                    [via] => Array
                        (
                            [0] => 1.1 google
                        )

                    [alt-svc] => Array
                        (
                            [0] => clear
                        )

                )

        )

    [status_code] => 200
    [protocol_version] => 1.1
    [success] => 1
    [redirects] => 0
    [url] => https://api.hantepay.com/v1.3/transactions/qrcode
    [history] => Array
        (
        )

    [cookies] => Requests_Cookie_Jar Object
        (
            [cookies:protected] => Array
                (
                )

        )

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...