Возникли проблемы с преобразованием оператора CURL в скрипт php - PullRequest
4 голосов
/ 06 марта 2019

Я пытаюсь преобразовать следующий оператор CURL в PHP-скрипт, и у меня возникают проблемы.

curl -s -S -i -v --cert /etc/ssl/certs/TestCertificate.p12:password --cert-type p12 --cacert /etc/ssl/certs/TLSRootCA.pem --tlsv1.1 --header "Content-Type: application/json" https://example1.com/api/paymentrequests --data '{ "payeePaymentReference" : "0123456789", "callbackUrl" : "https://example2.com/callback.php", "payerAlias" : "345689123", "payeeAlias" : "123456789", "amount" : "10", "currency" : "USD", "message" : "Testing callback server" }'

Вот мой php-скрипт:

    <?php
    class APIController
    {
        public static function getRoutes()
        {
            $routes = [];

            $routes[] = new Route('GET /api', function () {
                $url = "https://example1.com/api/paymentrequests";
                $ch = curl_init();

                $data =
                    [
                        'payeePaymentReference' => '0123456789',
                        'callbackUrl'           => 'https://example2.com/callback.php',
                        'payerAlias'            => '345689123',
                        'payeeAlias'            => '123456789',
                        'amount'                => '10',
                        'currency'              => 'USD',
                        'message'               => 'Testing callback server'
                    ];

                $data_string = json_encode($data);

                $options = array(
                    CURLOPT_CUSTOMREQUEST   => 'POST',
                    CURLOPT_RETURNTRANSFER  => true,
                    CURLOPT_URL             => $url ,
                    CURLOPT_VERBOSE         => true,
                    CURLOPT_CAINFO          => '/etc/ssl/certs/TLSRootCA.pem',
                    CURLOPT_SSLCERT         => '/etc/ssl/certs/TestCertificate.p12',
                    CURLOPT_SSLCERTPASSWD   => 'password',
                    CURLOPT_SSLCERTTYPE     => 'P12',
                    CURLOPT_POST            => true,
                    CURLOPT_POSTFIELDS      => $data_string,
                    CURLOPT_HTTPHEADER      => [
                    'Content-Type: application/json'
                    ]
                );

                curl_setopt_array($ch , $options);

                $output = curl_exec($ch);

                if(!$output)
                {
                    echo "Curl Error : " . curl_error($ch);
                }
                else
                {
                    echo htmlentities($output);
                }

                return false;
            });

            return $routes;

        }

    }

$testObject = new APIController();

$testObject->getRoutes();

echo htmlentities($output);

?>

Запуск оператора CURL вВ командной строке сценарий обратного вызова вызывается успешно и отображается HTTP 201 (отображается успешный ответ на вызов).Однако, когда я запускаю скрипт php, ничего не отображается и скрипт обратного вызова не вызывается.Буду признателен за любые указания относительно того, что я делаю неправильно.

1 Ответ

0 голосов
/ 06 марта 2019

Используйте curl_errno, чтобы проверить, есть ли какие-либо ошибки в запросах curl, вместо if(!$output)

if (curl_errno($ch)) {
    echo "Curl Error : " . curl_error($ch);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...