net.authorize.payment.capture.created give me a subscription id so that i can query my databse by subscription id?

38 views Asked by At

I create a arb subscription on authorize.net and put subscription id in my MySQL database. Now I want when this subscriber payment failed I can update my database from the subscription id using authorize.net webhook I am using Laravel.

I tried authorize.net webhook. I want when a subscriber payment was no done means insufficient blase or decline then I want to check my database save subscriber id when I create subscription on authorize.net I store id in my database update my database status

public function transactionCreateNotify(Request $request)
{

    $receivedSignature = $request->header('x-anet-signature');

    // Calculate your own signature using the same shared secret
    $mySignature = hash_hmac('sha512', $request->getContent(), env('ANET_PUBLIC_CLIENT_KEY'));


    $data = json_decode($request->getContent());

    if ($request->eventType == "net.authorize.payment.authcapture.created") {

        if ($data->payload->responseCode == 1) {

            if (!empty($data->payload->subscription->id)) {

                $paymentH =  PaymentHistory::where('subscription_id', $data->payload->subscription->id)->latest()->first();

                if (!empty($paymentH)) {

                    $client =  Client::find($paymentH->client_id);
                    $today = Carbon::now();

                    if ($client->payment_structure == '2' && $client->installment != Null) {
                        if ($today->greaterThanOrEqualTo($client->start_date)) {
                            $date = Carbon::parse($paymentH->payment_date);
                            $sdate = $date->addMonth();
                            $cloneData = $paymentH->replicate();
                            $cloneData->payment_date = $sdate;
                            $cloneData->transaction_id = $data->payload->id;
                            $cloneData->payment_status = 1;
                            $cloneData->save();
                        }
                    } elseif ($client->payment_structure == '1') {
                        if ($today->greaterThanOrEqualTo($client->start_date)) {
                            $date = Carbon::parse($paymentH->payment_date);
                            $sdate = $date->addMonth();
                            $cloneData = $paymentH->replicate();
                            $cloneData->payment_date = $sdate;
                            $cloneData->transaction_id = $data->payload->id;
                            $cloneData->payment_status = 1;
                            $cloneData->save();
                        }
                    }
                }
            }
        } elseif ($data->payload->responseCode == 2) {
            if (!empty($data->payload->subscription->id)) {

                $paymentH =  PaymentHistory::where('subscription_id', $data->payload->subscription->id)->latest()->first();

                $client =  Client::find($paymentH->client_id);

                if ($paymentH) {

                    if ($client->payment_structure == '2' && $client->installment != Null) {

                        $date = Carbon::parse($paymentH->payment_date);
                        $sdate = $date->addMonth();
                        $cloneData = $paymentH->replicate();
                        $cloneData->payment_date = $sdate;
                        $cloneData->transaction_id = $data->payload->id;
                        $cloneData->payment_status = 1;
                        $cloneData->save();
                    } elseif ($client->payment_structure == '1') {

                        $date = Carbon::parse($paymentH->payment_date);
                        $sdate = $date->addMonth();
                        $cloneData = $paymentH->replicate();
                        $cloneData->payment_date = $sdate;
                        $cloneData->transaction_id = $data->payload->id;
                        $cloneData->payment_status = 1;
                        $cloneData->save();
                    }
                    $client->status = 0;
                    $client->save();
                }
            }
        }
        Cache::forever('authcapture_created', json_encode($request->getContent()));
    }
}
0

There are 0 answers