Две проблемы, которые я наблюдал с Authorize.Net Webhooks и ищу решение.
- У меня есть несколько пользовательских конечных точек WordPress https://devjesse.gettveverywhere.com/wp-json/authorizenet/
Однако, если яустановить неактивный webhook на authorizenet и использовать кнопку онлайн тестового webhook, я получаю следующую ошибку:
Ошибка: сбой операции ping.Это может быть связано с проблемами подключения, неправильным URL-адресом или простоем сервера.Проверьте детали URL для webhook и попробуйте снова.
Используя скрипт php curl, я могу получить текущие webhooks:
[
{
"_links": {
"self": {
"href": "/rest/v1/webhooks/b8f7a92b-3d14-45d0-897f-95271faaf44b"
}
},
"webhookId": "b8f7a92b-3d14-45d0-897f-95271faaf44b",
"name": "dev_sub",
"status": "inactive",
"url": "https://devjesse.gettveverywhere.com/wp-json/authorizenet/subscription",
"eventTypes": [
"net.authorize.customer.subscription.updated",
"net.authorize.customer.subscription.created",
"net.authorize.customer.subscription.expiring",
"net.authorize.customer.subscription.suspended",
"net.authorize.customer.subscription.cancelled",
"net.authorize.customer.subscription.terminated"
]
}
]
и при вызове ping с моим php curlсценарий:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://apitest.authorize.net/rest/v1/webhooks/b8f7a92b-3d14-45d0-897f-95271faaf44b/pings');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Basic ' . base64_encode(API_LOGIN_ID . ':' . TRANSACTION_KEY),
'Content-Type: application/json'
));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
я получаю следующую ошибку:
{
"status": 500,
"reason": "PING_FAILED",
"message": "The ping operation failed. This could be due to connectivity issues, invalid url or server downtime. Check the url details for the webhook and try again.",
"correlationId": "5003a88f-4a1f-4c77-b374-84bdc1256082"
}
Я не уверен, почему здесь происходит сбой авторизированного webhook.Конечная точка работает, если я использую свой собственный скрипт php curl с копией информации уведомления:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://devjesse.gettveverywhere.com/wp-json/authorizenet/customer');
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: 410',
'X-Opnet-Transaction-Trace: 676a6e12-d5d2-4f72-b14f-fac44a714d87-15432-570877 Expect 100-continue',
'X-Anet-Signature: sha512=5860384727AC755D0AAFB387EB775F1436C409E2F2BF38C6ED08717399A23FB1275A2363DC16A35A89E5541DBB3CED599A515A2165AA02EFB54596BD920ECA93'
));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"notificationId":"365a8c21-088e-4303-a11a-6d3d827cc9a4","eventType":"net.authorize.customer.created","eventDate":"2019-07-02T16:27:41.5972635Z","webhookId":"5be521cb-5805-4b25-9952-1fb661c70e71","payload":{"paymentProfiles":[{"customerType":"individual","id":"1507794447"}],"merchantCustomerId":"2200","description":"Profile created by Subscription: 5869582","entityName":"customerProfile","id":"1508341513"}}');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Эквивалентный URL-адрес AWS ec2, например, "работает" для проверки связи,
http://ec2 -3-84-172-111.compute-1.amazonaws.com / wp-json / authorizenet / customer , но имеет две проблемы:
нет https
отправляет только один eventType, который является совершенно неправильным (нет.authorize.payment.authcapture.created).