Автоматический ответ на транзакцию подписки с использованием webhook в Authorize.Net - PullRequest
0 голосов
/ 26 сентября 2019

Я создал webhook для учетной записи в песочнице Authorize.Net и мне нужен ответ для автоматической транзакции подписки. В этом случае я получаю ответ с событием (net.authorize.payment.authcapture.created). В этом ответе я не получаю идентификатор подписки, а получаю идентификатор транзакции из ответа.Если я в дальнейшем использую идентификатор транзакции, чтобы получить идентификатор подписки, используя функцию GetTransactionDetailsController (получить API транзакции Authorize.Net), она получает транзакцию, но с нулевой подпиской.Как получить идентификатор подписки с помощью ответа на транзакцию или получить идентификатор подписки с помощью (net.authorize.payment.authcapture.create d) ответа на событие?

 public function getAutoshipResponse(Request $request)
   {
            define('AUTHNET_SIGNATURE', config('services.authorize.signature'));
            $payload = file_get_contents('php://input');
            Log::info("payload is ===   ". $payload);
            $headers = $this->getHeaders();
            $webhook = new AuthnetWebhook(AUTHNET_SIGNATURE, $payload, $headers);
            if ($webhook->isValid()) 
            {
                $eventtype = $webhook->eventType;
                $entityName = $webhook->payload->entityName;
                $this->getTransactionDetails($transactionId)
           }
    }
    public function getTransactionDetails($transactionId)
    {
            $transactionId = '60127785891';
            $merchantAuthentication = $this->setMerchantAuthentication();
            $refId = 'ref' . time();// Set the transaction's refId
            $request = new AnetAPI\GetTransactionDetailsRequest();
            $request->setMerchantAuthentication($merchantAuthentication);
            $request->setTransId($transactionId);
            $controller = new AnetController\GetTransactionDetailsController($request);
            $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
            $subscriptionId = $response->getTransaction()->getSubscription();
            $json = json_encode($response->getTransaction());
            dd($response);
    }

Ответ:

GetTransactionDetailsResponse {#720 ▼
  -transaction: TransactionDetailsType {#913 ▼
    -transId: "60127785891"
    -refTransId: null
    -splitTenderId: null
    -submitTimeUTC: DateTime @1569416668 {#917 ▶}
    -submitTimeLocal: DateTime @1569391468 {#918 ▶}
    -transactionType: "authCaptureTransaction"
    -transactionStatus: "settledSuccessfully"
    -responseCode: 1
    -responseReasonCode: 1
    -subscription: null
    -responseReasonDescription: "Approval"
}
...