0% found this document useful (0 votes)
223 views7 pages

Integrasi Laravel Dengan Durianpay REST API

This document discusses integrating Laravel with the Durianpay REST API to display Durianpay checkout pages. It provides steps to install Guzzle HTTP, create a PaymentController, make a request to Durianpay to generate payment data, display the payment form, and configure a webhook endpoint to receive payment notifications.

Uploaded by

nurizkiansyah
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
223 views7 pages

Integrasi Laravel Dengan Durianpay REST API

This document discusses integrating Laravel with the Durianpay REST API to display Durianpay checkout pages. It provides steps to install Guzzle HTTP, create a PaymentController, make a request to Durianpay to generate payment data, display the payment form, and configure a webhook endpoint to receive payment notifications.

Uploaded by

nurizkiansyah
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Integrasi Laravel dengan Durianpay REST API

Menampilkan Halaman Checkout Durianpay


1. Masuk ke dalam folder laravel Anda.
2. Instal Guzzle HTTP Client

composer require guzzlehttp/guzzle

2. Buat Payment Controller

artisan make:controller PaymentController

4. Edit Payment Controller

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use GuzzleHttp\Client;

class PaymentController extends Controller

private $baseUrl = "https://api.durianpay.id";

public function index() {

$secretKey = 'secret_key_dari_durianpay_dashboard';

$client = new Client();

$orderPayload = [

"amount" => "10001.00",

"currency" => "IDR",

"order_ref_id" => 'laravel_order_001',

"customer" => [

"email" => "john.doe@mail.com",

];

$response = $client->post("{$this->baseUrl}/orders", [

'auth' => [$secretKey, ''],

'body' => json_encode($orderPayload),


]);

$orderResponse = json_decode($response->getBody());

return view('payment', [

'access_token' => $orderResponse->data->access_token,

'order_id' => $orderResponse->data->id,

]);

6. Ubah file payment.blade.php

<!DOCTYPE html>

<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">

<head>

<meta charset="utf-8">

<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Laravel</title>

<!-- Fonts -->

<link href="https://fonts.googleapis.com/css2?

family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">

<meta charset="UTF-8" />

<meta name="viewport" content="width=device-width, initial-scale=1.0" /

>

<link href="{{ asset('css/app.css') }}" rel="stylesheet">

<style>

body {

font-family: 'Nunito', sans-serif;

</style>

</head>

<body class="antialiased">

<div class="relative flex items-top justify-center min-h-screen bg-

gray-100 dark:bg-gray-900 sm:items-center py-4 sm:pt-0">

<div class="hidden fixed top-0 right-0 px-6 py-4 sm:block">


<div id="payment_btn"></div>

</div>

</div>

<script type="text/javascript" src="https://js.durianpay.id/0.1.18/

durianpay.min.js"

data-name="dpaysdk"

data-environment="production"

data-locale="id"

data-access-key="{{ $access_token }}"

data-order-id="{{ $order_id }}"

data-method="getCheckoutButton"

data-container-id="payment_btn"

data-btn-class-name="btn filled"

>

</script>

</body>

</html>

8. Tambahkan route baru di file web.php

Route::get('/payments', [PaymentController::class, 'index']);

10. Jalankan server

artisan serve

Starting Laravel development server: http://127.0.0.1:8000

[Mon Jul 12 13:30:03 2021] PHP 8.0.2 Development Server (http://127.0.0.1:8000)

started

10. Lihat halaman Pembayaran melalui browser


11. Klik tombol Pay with Durian

12. Halaman Checkout Durianpay berhasil ditampilkan

Mendapatkan Notifikasi Pembayaran melalui Durianpay Webhook


Agar Anda data menerima notifikasi pembayaran Anda bisa menggunakan webhook dari
Durianpay. Pada dasarnya merchant harus menyiapkan endpoint HTTP Khusus yang akan
Durianpay panggil ketika order dan/atau payment sudah selesai.
1. Siapkan HTTP Controller untuk mengolah webhook yang akan kita terima. Kita dapat
menggunakan PaymentController.php yang telah kita buat. Tambahkan metode berikut di
dalam PaymentController, sebagai contoh:

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Log;
class PaymentController extends Controller

/* ... */

public function payment_completed(Request $request) {

Log::info( $request->getContent());

return 'ok';

// update database berdasarkan response dari Durianpay

3. Tambahkan route baru di dalam file web.php

Route::post('/callback', [PaymentController::class, 'payment_completed']);

4. Matikan verifikasi CSRF untuk endpoint tersebut dengan mengubah file


appHttpMiddleware/VerifyCsrfToken.php

class VerifyCsrfToken extends Middleware

/**

* The URIs that should be excluded from CSRF verification.

* @var array

*/

protected $except = [

//

'callback'

];

5. Jalankan server

artisan serve

Starting Laravel development server: http://127.0.0.1:8000

[Mon Jul 12 13:30:03 2021] PHP 8.0.2 Development Server (http://127.0.0.1:8000)

started
6. Agar localhost data diakses melalui internet anda data menggunakan layanan ngrok.
Dokumentasinya dapat dilihat disini (ngrok – documentation

ngrok http 8000

ngrok by @inconshreveable

(Ctrl+C to quit)

Session Status online

Account Agus Supriyadi (Plan: Free)

Update update available (version 2.3.40, Ctrl-U to

update)

Version 2.3.35

Region United States (us)

Web Interface http://127.0.0.1:4040

Forwarding http://ce8744071c4f.ngrok.io -> http://

localhost:8000

Forwarding https://ce8744071c4f.ngrok.io -> http://

localhost:8000

Connections ttl opn rt1 rt5 p50 p90

0 0 0.00 0.00 0.00 0.00

8. Masukkan url https://ce8744071c4f.ngrok.io/callback Pada setting webhook di


dashboard.durianpay.id. Anda akan mendapatkan domain yang berbeda setup kali
menjalankan ngrok.

9. Uji coba sandbox Anda. Anda data menggunakan http://localhost:8000/payments untuk


menguji pembayaran
10. Jika pembayaran berhasil Anda akan mendapatkan log seperti ini di dalam file storage/
logs/laravel.log

[2021-07-12 08:10:39] local.INFO: {"event":"payment.completed","data":

{"amount":1000100,"amount_str":"10001.00","created_at":"2021-07-12T08:10:37.438

479Z","currency":"IDR","id":"pay_XUDqaIL4Zh1234","is_live":false,"merchant_id":

"mer_123","metadata":

{},"order_id":"ord_wEjKVtkumx1234","payment_method":"CARD","payment_ref_id":"",

"signature":"7ca29faaa50511d1120d5f8cfbcf1ec25dc43665cdff3701088ad7dd9d8ad145",

"updated_at":"2021-07-12T08:10:37.447346Z"},"retry_count":0}

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy