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()));
}
}