Skip to content

Instantly share code, notes, and snippets.

@Loetfi
Created July 15, 2019 10:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Loetfi/dbe42f9b707d89e5cde82af20f0cdea8 to your computer and use it in GitHub Desktop.
Save Loetfi/dbe42f9b707d89e5cde82af20f0cdea8 to your computer and use it in GitHub Desktop.
notify
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Helpers\Api;
use App\Helpers\RestCurl;
use App\Helpers\Doku;
use App\Models\DokuModel;
use App\Models\DokuLogModel as DokuLog;
use Exception;
class DokuController extends Controller
{
public function inquiry(Request $request)
{
try {
// return (1);
if(empty($request->json())) throw New \Exception('Params not found', 500);
$this->validate($request, [
'transidmerchant' => 'required',
'totalamount' => 'required',
'userid' => 'required',
'words' => 'required',
'session_id' => 'required'
]);
$transidmerchant = $request->transidmerchant ? $request->transidmerchant : 0;
$totalamount = $request->totalamount ? $request->totalamount : 0;
$userid = $request->userid ? $request->userid : 0;
$words = $request->words ? $request->words : 0;
$session_id = $request->session_id ? $request->session_id : 0;
$create = array(
'transidmerchant' => $transidmerchant,
'totalamount' => $totalamount,
'UserId' => $userid,
'words' => $words,
'statustype' => 0,
'response_code' => 0,
'approvalcode' => 0,
'trxstatus' => 'Requested',
'payment_channel' => 0,
'paymentcode' => 0,
'session_id' => $session_id,
'bank_issuer' => 0,
'creditcard' => 0,
'payment_date_time' => '1970-01-01 00:00:00',
'verifyid' => 0,
'verifyscore' => 0,
'verifystatus' => 0
);
$check = DokuModel::where('transidmerchant',$transidmerchant)->get()->first();
if (count($check)>0) {
$res = 1;
$errorMsg = 'Invoice sudah pernah dibuat';
} else {
$res = DokuModel::create($create);
$errorMsg = 'Berhasil membuat invoice';
}
if ($res) {
$httpcode = 200;
$status = 1;
$data = [];
} else {
throw new \Exception("Ada Kesalahan", 500);
}
} catch(\Exception $e) {
$status = 0;
$httpcode = 400;
$data = null;
$errorMsg = $e->getMessage();
}
return response()->json(Api::response($status,$errorMsg,$data),$httpcode);
}
// notify
public function notify(Request $request)
{
try {
$this->validate($request, [
'TRANSIDMERCHANT' => '',
// 'AMOUNT' => 'required',
// 'WORDS' => 'required',
// 'STATUSTYPE' => 'required',
// 'RESPONSECODE' => 'required',
// 'APPROVALCODE' => 'required',
// 'RESULTMSG' => 'required',
// 'PAYMENTCHANNEL' => 'required',
// 'PAYMENTCODE' => 'required',
// 'SESSIONID' => 'required',
// 'BANK' => 'required',
// 'MCN' => 'required',
// 'PAYMENTDATETIME' => 'required',
// 'VERIFYID' => 'required',
// 'VERIFYSCORE' => 'required',
// 'VERIFYSTATUS' => 'required'
]);
$status = $request->RESULTMSG ? $request->RESULTMSG :0;
$transidmerchant = $request->TRANSIDMERCHANT ? $request->TRANSIDMERCHANT : 0;
$check = DokuModel::where('transidmerchant', $transidmerchant)->where('trxstatus','Requested')->get()->first();
// dd($check);
$result = $check->transidmerchant;
$amount = $check->totalamount;
// dd($check);
// log
if (!$result) {
echo 'Stop5';
} else {
if ($request->RESPONSECODE == '0000' || $request->RESPONSECODE == 0000) {
// update
$update = array(
'trxstatus' => 'Success',
'words' => $request->WORDS ? $request->WORDS:0,
'statustype' => $request->STATUSTYPE ? $request->STATUSTYPE:0,
'response_code' => $request->STATUSTYPE ? $request->STATUSTYPE:0,
'approvalcode' => $request->APPROVALCODE ? $request->APPROVALCODE:0,
'trxstatus' => $status,
'payment_channel' => $request->PAYMENTCHANNEL ? $request->PAYMENTCHANNEL : 0,
'paymentcode' => $request->PAYMENTCODE ? $request->PAYMENTCODE : 0,
'session_id' => $request->SESSIONID ? $request->SESSIONID : 0,
'bank_issuer' => $request->BANK ? $request->BANK : 0,
'creditcard' => $request->MCN ? $request->MCN : 0,
'payment_date_time' => $request->PAYMENTDATETIME ? $request->PAYMENTDATETIME : 0,
'verifyid' => $request->VERIFYID ? $request->VERIFYID : 0,
'verifyscore' => $request->VERIFYSCORE ? $request->VERIFYSCORE : 0,
'verifystatus' => $request->VERIFYSTATUS ? $request->VERIFYSTATUS : 0
);
DokuModel::where('transidmerchant',strval($request->TRANSIDMERCHANT))->update($update);
// update status order menjadi PAID
$get = DokuModel::where('transidmerchant',$request->TRANSIDMERCHANT)->get()->first();
$update = array(
'booking_number' => $request->TRANSIDMERCHANT,
'user_id' => $get->UserId
);
$ress = RestCurl::exec('POST', env('URL_SERVICE_ORDER').'/transaction/paid-change-status', $update);
} else {
$update = array(
'trxstatus' => 'Failed'
);
DokuModel::where('transidmerchant',$request->TRANSIDMERCHANT)->update($update);
die('Stop3');
}
echo 'Continue';
}
$insert_log = array(
'ParamLog' => json_encode($request->all()),
'RequestLog' => json_encode($request->all()),
'NameLog' => 'doku-notify'
);
DokuLog::create($insert_log);
// end log
} catch(\Exception $e) {
// echo "Stop1";
return $e->getMessage();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment