Интеграция Razorpayx с использованием curl php - PullRequest
1 голос
/ 25 марта 2019

Код Razorpayx curl:

curl -u <YOUR_KEY>:<YOUR_SECRET> \-X POST https://api.razorpay.com/v1/contacts \-H "Content-Type: application/json" \-d '{  "name": "Gaurav Kumar",  "email": "gaurav.kumar@example.com",  "contact": "9123456789",  "type": "employee",  "reference_id": "Acme Contact ID 12345",  "notes": {    "note_key": "Beam me up Scotty"  }}'

Попытка реализовать то же самое из curl-php:

$ch = curl_init();

$curlConfig = array(
    CURLOPT_URL            => "https://api.razorpay.com/v1/contacts/",
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => array(
        'api-key' => '<KEY>:<SECRET-KEY>'

        ),
    CURLOPT_POSTFIELDS     => array(
        'name' => 'ABCD',
        'email' => "abcd@gmail.com",
        'type' => 'customer'
    )
);
curl_setopt_array($ch, $curlConfig);
$result = curl_exec($ch);
curl_close($ch);

Теперь выдается сообщение об ошибке: «Пожалуйста, предоставьте ваш ключ API для аутентификации». Я уже передал ключи через заголовок curl; но это выдает ошибку. Пожалуйста, руководство, как решить эту проблему.

1 Ответ

1 голос
/ 01 июня 2019

У меня была такая же проблема. По сути, ваш API-ключ не будет идти в заголовке, вместо этого вы должны отправить его как пароль пользователя. Код ниже работает отлично.

    $ch = curl_init();
    $fields = array();
    $fields["name"] = $name;
    $fields["email"] = $email;
    $fields["contact"] = $phone;
    $fields["reference_id"] = "customer".$phone;
    $fields["type"] = "customer";
    curl_setopt($ch, CURLOPT_URL, 'https://api.razorpay.com/v1/contacts');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_USERPWD, "api-key: key-secret");
    $headers = array();
    $headers[] = 'Accept: application/json';
    $headers[] = 'Content-Type: application/json';
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $data = curl_exec($ch);

    if (empty($data) OR (curl_getinfo($ch, CURLINFO_HTTP_CODE != 200))) {
       $data = FALSE;
    } else {
        return json_decode($data, TRUE);
    }
    curl_close($ch);
...