Woocommerce: ошибка 403 при отправке запроса API на конечную точку шлюзаPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Woocommerce: ошибка 403 при отправке запроса API на конечную точку шлюза

Сообщение Anonymous »

Я разрабатываю плагин специального способа оплаты WooCommerce, который перенаправляет клиентов на платежный шлюз через веб-службы RESTful. Для интеграции требуется ключ API (токен), предоставленный платформой шлюза. Согласно документации:
Запрос POST должен быть отправлен на конечную точку API (https://api.example.com/api/v1/pay-terminal/).
В запросе требуется номер телефона клиента в поле «имя пользователя» (текстовый тип).
И успешный ответ должен выглядеть так:

Код: Выделить всё

  "status": 200,
"error": "",
"message": "",
"data": {
"cash_wallt": 0,
"special_amount": 0
},
"patch": [],
"date": "2024-10-16 12:57:47"
}
Вот соответствующая функция из моего плагина:

Код: Выделить всё

public function process_payment($order_id) {
$order = wc_get_order($order_id);
$amount = $order->get_total();
$description = sprintf(__('Order #%s', 'woocommerce'), $order->get_order_number());
$customer_phone = $order->get_billing_phone();

// Step 1: Check Customer Credit
$credit_response = wp_remote_post('https://api.example.com/api/v1/payment-terminal/', [
'headers' => [
'Authorization' => 'Bearer ' . $this->apikey, // API key
'Content-Type'  => 'application/json'
],
'body' => json_encode(['username' => $customer_phone]) // Customer phone number
]);

if (is_wp_error($credit_response)) {
wc_add_notice('Authentication error', 'error');
return;
}

$credit_body = json_decode(wp_remote_retrieve_body($credit_response), true);
if ($credit_body['status'] != 200) {
wc_add_notice('Failed Authentication', 'error');
return;
}

}

На этом этапе я постоянно сталкиваюсь с ошибкой 403 Forbidden, когда заказ отправляется при оформлении заказа с выбранным этим шлюзом.
Я уже дважды проверил и подтвердил следующее:
Ключ API (токен) правильный и включен в заголовок запроса.
Номер телефона соответствует зарегистрированному учетную запись на платформе шлюза.
На сервере IP внесен в белый список.
Чтобы убедиться, что проблема не связана с плагином, я даже попробовал прямой запрос с помощью Curl:

Код: Выделить всё

curl -X POST https://api.example.com/api/v1/payment-terminal/ \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d "{\"username\": \"{phone number}\"}"

ответ был:

Код: Выделить всё

{
"status": 403,
"error": null,
"message": "permission denied",
"data": [],
"patch": [],
"date": "2024-12-09 20:13:21"
}
Я почесал голову, пытаясь выяснить причину этой неприятной проблемы, но безуспешно. Любая подсказка по поиску решения будет оценена по достоинству.

Подробнее здесь: https://stackoverflow.com/questions/792 ... y-endpoint
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»