Веб-хук Authorize.net. Недопустимый JSON, отправленный в уведомлении Webhook.

Я пытаюсь реализовать веб-крючок Authorize.net в проекте Laravel. В интерфейсе продавца я добавил конечную точку webhook. Но когда я пытаюсь получить события, выдается неверная ошибка JSON. Что я делаю не так в коде ниже?

namespace App\Http\Controllers\Api\Anet;

use Illuminate\Http\Request;
use net\authorize\api\contract\v1 as AnetAPI;
use net\authorize\api\controller as AnetController;
use App\Http\Controllers\Controller;
use JohnConde\Authnet\AuthnetWebhook;

class xxxController extends Controller
{
public function webhook(){
$headers = getallheaders();
$payload = file_get_contents("php://input");

$webhook = new AuthnetWebhook(hex2bin('XXXXXD4FF0A6060E23DBCD9AE507E20XXXXX'), $payload, $headers);
if ($webhook->isValid()) {
// Get the transaction ID
$transactionId = $webhook->payload->id;

// Here you can get more information about the transaction
$request  = AuthnetApiFactory::getJsonApiHandler('services.authorize.login', 'services.authorize.key');
$response = $request->getTransactionDetailsRequest(array(
'transId' => $transactionId
));

/* You can put these response values in the database or whatever your business logic dictates.
$response->transaction->transactionType
$response->transaction->transactionStatus
$response->transaction->authCode
$response->transaction->AVSResponse
*/
}
}
}

Ошибка:

"message": "Invalid JSON sent in the Webhook notification",
"exception": "JohnConde\\Authnet\\AuthnetInvalidJsonException",
"file": "/var/www/html/staging/vendor/stymiee/authnetjson/src/authnet/AuthnetWebhook.php",
"line": 67,

0

Решение

Ваша проблема в том, что вы не получаете уведомление о подключении через Интернет. Код, который вы используете, предназначен для проверки уведомлений, а не для запроса веб-крючков. Вы должны сделать запрос, чтобы получить веб-крючок.

Когда вы настраиваете свою конечную точку, вы можете использовать этот код (хотя я не думаю, что hex2bin () требуется) для проверки веб-хуков, а затем извлекать из них информацию.

Чтобы создать запрос веб-хука, вы можете использовать такой код:

$webhooksArray = array(' net.authorize.payment.authorization.created','
net.authorize.payment.authcapture.created','
net.authorize.payment.capture.created');
$webhooksUrl = 'https://{yourserver.com}/{your path}/{your endpoint}';

$webhook = new AuthnetAPIFactory();
$handler = $webhook->getWebhooksHandler($login,$transId);
$createWebhooks = $handler->createWebhooks($webhooksArray,$webhooksUrl);

Это зарегистрирует вас в событиях, которые будут автоматически отправлены на вашу конечную точку
т.е. https://{yourserver.com}/{your path}/{your endpoint},

Затем вы можете использовать приведенный выше код для проверки веб-крючков, когда они достигают вашей конечной точки. После того, как вы зарегистрированы в событиях и веб-хуки отправляются на конечную точку, вы можете получить историю, используя такой код:

   $webhook = new AuthnetAPIFactory();
$handler = $webhook->getWebhooksHandler($login,$transId);
$history = $handler->getNotificationHistory();
print_r($history);

Вы можете получить определенный веб-крючок, как это-

   $webhook = new AuthnetAPIFactory();
$handler = $webhook->getWebhooksHandler($login,$transId);
$webhook = $handler->getWebhook($webhookId);

Где $ webhookId — это идентификатор, связанный с webhook, который вы хотите получить. Вы можете выполнить поиск в пространстве имен, чтобы увидеть вызовы других методов для определенных действий веб-крючка.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector