带有授权标头的耗时POST请求不起作用

时间:2019-06-14 06:40:28

标签: php curl guzzle guzzle6

我正在尝试调用沙箱payu测试api,如

所示
  

http://developers.payu.com/en/restapi.html#creating_new_order_api

并使用类似这样的耗时发布请求进行操作

$client = new GuzzleHttp\Client();
$result = $client->request('POST', "https://secure.snd.payu.com/api/v2_1/orders", [
    'headers' => [
        'Content-Type'  => 'application/json',
        'Authorization' => 'Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd',
    ],
    'body' => json_encode([
        "notifyUrl"     => "https://your.eshop.com/notify",
        "customerIp"    => "127.0.0.1",
        "merchantPosId" => "145227",
        "description"   => "RTV market",
        "currencyCode"  => "PLN",
        "totalAmount"   => "15000",
        "extOrderId"    => "erm742k6ycekibt6d3qr89",
        "buyer"         => [
            "email"     => "john.doe@example.com",
            "phone"     => "654111654",
            "firstName" => "John",
            "lastName"  => "Doe",
            "language"  => "en",
        ],
        "products"      => [
            [
                "name"      => "Wireless Mouse for Laptop",
                "unitPrice" => "15000",
                "quantity"  => "1",
            ],
        ],
    ]),
]);

但是我得到的响应状态为200,正文为:

{
    "error": "invalid_token",
    "error_description": "Invalid access token",
}

使用cURL这样的通话,

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://secure.payu.com/api/v2_1/orders');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, true)
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\n   \"notifyUrl\": \"https://your.eshop.com/notify\",\n   \"customerIp\": \"127.0.0.1\",\n   \"merchantPosId\": \"145227\",\n   \"description\": \"RTV market\",\n   \"currencyCode\": \"PLN\",\n   \"totalAmount\": \"15000\",\n   \"extOrderId\":\"erm742k6ycekibt6d3qr99\",\n   \"buyer\": {\n     \"email\": \"john.doe@example.com\",\n     \"phone\": \"654111654\",\n     \"firstName\": \"John\",\n     \"lastName\": \"Doe\",\n     \"language\": \"en\"\n            },\n   \"products\": [\n       {\n           \"name\": \"Wireless Mouse for Laptop\",\n           \"unitPrice\": \"15000\",\n           \"quantity\": \"1\"\n      }\n   ]\n}");
curl_setopt($ch, CURLOPT_POST, 1);
$headers = array();
$headers[] = 'Content-Type: application/json';
$headers[] = 'Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);

它以状态码200给出期望的响应:

{"orderId":"F2CJ8NSJ1Z190614GUEST000P01","extOrderId":"erm742k6ycekibt6d3qr99","status":{"statusCode":"SUCCESS"},"redirectUri":"https://secure.payu.com/pay/?orderId=F2CJ8NSJ1Z190614GUEST000P01&token=eyJhbGciOiJIUzI1NiJ9.eyJvcmRlcklkIjoiRjJDSjhOU0oxWjE5MDYxNEdVRVNUMDAwUDAxIiwicG9zSWQiOiJ6RGVubjhoTiIsImF1dGhvcml0aWVzIjpbIlJPTEVfQ0xJRU5UIl0sInBheWVyRW1haWwiOiJqb2huLmRvZUBleGFtcGxlLmNvbSIsImV4cCI6MTU2MDU3OTY0NCwiaXNzIjoiUEFZVSIsImF1ZCI6ImFwaS1nYXRld2F5Iiwic3ViIjoiUGF5VSBzdWJqZWN0IiwianRpIjoiNjc2NzQxMGQtNGJhNy00MmM4LWFjZmItMjRiMDUyNmYzY2VmIn0.s1cVhDYR4U5KN2-M-KWaG5dLjJqX8jbhTwI2NDg_3fo"}

我认为标头中的Authorization未在枪口请求中传递。我该如何解决这个问题以配合吃呢?

0 个答案:

没有答案