[php] intergasi duitku

Viewer

copydownloadembedprintName: intergasi duitku
  1. public function store(Request $request)
  2.     {
  3.         // dd($request->all());
  4.         $duitkuConfig = new \Duitku\Config(config('duitku.merchant_key'), config('duitku.merchant_code'));
  5.         // true for sandbox mode, false for production mode
  6.         $duitkuConfig->setSandboxMode(config('duitku.sandbox_mode'));
  7.         // set sanitizer (default : true)
  8.         $duitkuConfig->setSanitizedMode(true);
  9.         // set log parameter (default : true)
  10.         $duitkuConfig->setDuitkuLogs(false);
  11.  
  12.  
  13.         DB::transaction(function () use ($duitkuConfig, $request) {
  14.  
  15.             $tahun = date("Y");
  16.             $paymentAmount      = $request->grand_total;
  17.             $email              = $request->email;
  18.             $merchantOrderId    = 'INV-' . time();
  19.             $productDetails     = "Pembayaran untuk Invoice : " . $merchantOrderId;
  20.             $customerVaName     = $request->name;
  21.             $callbackUrl        = config('app.url') . '/callback'; // url for callback
  22.             $returnUrl          = config('app.url') . '/account/transactions/' . $merchantOrderId; // url for redirect
  23.             $expiryPeriod       = 1440; // set the expired time in minutes
  24.  
  25.             //create transaction
  26.             $transaction = Transaction::create([
  27.                 'invoice'                   => $merchantOrderId,
  28.                 'user_id'                   => auth()->user()->id,
  29.                 'province_id'               => $request->province_id,
  30.                 'city_id'                   => $request->city_id,
  31.                 'tahun'                     => $tahun,
  32.                 'weight'                    => $request->weight,
  33.                 'courier_name'              => $request->courier_name,
  34.                 'courier_service'           => $request->courier_service,
  35.                 'courier_cost'              => $request->courier_cost,
  36.                 'grand_total'               => $request->grand_total,
  37.                 'address'                   => $request->address,
  38.                 'cek_ts'                   => 1,
  39.                 'status'                    => 'UNPAID',
  40.             ]);
  41.  
  42.             //create transaction details & item details
  43.  
  44.             // Item Details
  45.             $item_details = [];
  46.  
  47.             foreach (Cart::with('product')->where('user_id', auth()->user()->id)->get() as $cart) {
  48.  
  49.                 //insert product ke table transaction_details
  50.                 $transaction->transactionDetails()->create([
  51.                     'transaction_id'    => $transaction->id,
  52.                     'product_id'        => $cart->product->id,
  53.                     'product_image'     => basename($cart->product_image),
  54.                     'size'              => $cart->size,
  55.                     'qty'               => $cart->qty,
  56.                     'price'             => $cart->price,
  57.                     'tahun'             => $cart->tahun,
  58.                 ]);
  59.  
  60.                 //assign item details
  61.                 $item_details[] = array(
  62.                     'name'      => $cart->product->title,
  63.                     'price'     => $cart->price,
  64.                     'quantity'  => $cart->qty,
  65.                 );
  66.             }
  67.  
  68.             //remove data carts
  69.             Cart::with('product')->where('user_id', auth()->user()->id)->delete();
  70.  
  71.             //push ongkir to items details
  72.             array_push($item_details);
  73.  
  74.             $customerDetail = array(
  75.                 'firstName'         => $request->name,
  76.                 'email'             => $request->email,
  77.                 'billingAddress'    => array(
  78.                     'firstName'     => $request->name,
  79.                     'address'       => $request->address,
  80.                 ),
  81.                 'shippingAddress'   => array(
  82.                     'firstName'     => $request->name,
  83.                     'address'       => $request->address,
  84.                 ),
  85.             );
  86.  
  87.             $payload = array(
  88.                 'paymentAmount'     => $paymentAmount,
  89.                 'merchantOrderId'   => $merchantOrderId,
  90.                 'productDetails'    => $productDetails,
  91.                 'customerVaName'    => $customerVaName,
  92.                 'email'             => $email,
  93.                 'itemDetails'       => $item_details,
  94.                 'customerDetail'    => $customerDetail,
  95.                 'callbackUrl'       => $callbackUrl,
  96.                 'returnUrl'         => $returnUrl,
  97.                 'expiryPeriod'      => $expiryPeriod
  98.             );
  99.  
  100.             try {
  101.                 // createInvoice Request
  102.                 $responseDuitkuPop = \Duitku\Pop::createInvoice($payload, $duitkuConfig);
  103.  
  104.                 //get reference
  105.                 $getReference = json_decode($responseDuitkuPop, true);
  106.  
  107.                 //insert reference to table transactions
  108.                 $transaction->reference = $getReference['reference'];
  109.                 $transaction->save();
  110.  
  111.                 //make response "invoice"
  112.                 $this->response['invoice'] = $transaction->invoice;
  113.             } catch (Exception $e) {
  114.                 echo $e->getMessage();
  115.             }
  116.         });
  117.  
  118.         return redirect()->route('account.transactions.show', $this->response);
  119.     }

Editor

You can edit this paste and save as new:


File Description
  • intergasi duitku
  • Paste Code
  • 19 Apr-2024
  • 5.19 Kb
You can Share it: