Skip to content

otnansirk/laravel-dana

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel DANA Payment Package

This Laravel wrapper/library for DANA Payment API. Visit https://dana.id for more information about the product and see documentation at https://dashboard.dana.id/api-docs for more technical details.

Requirements

  • PHP 8.1 or higher
  • Laravel 9.x, 10.x, 11.x, or 12.x

Installation

1. You can install the package via composer.

composer require otnansirk/laravel-dana

2. The service provider will automatically get registered. Or you may manually add the service provider in your config/app.php file.

'providers' => [
    // ...
    Otnansirk\Dana\DanaCoreServiceProvider::class,
];

3. You should publish the config/dana.php config file with this php artisan command.

php artisan vendor:publish --provider="Otnansirk\Dana\DanaCoreServiceProvider" --tag="dana-config"

Configuration

All configuration are stored in config/dana.php. Customize everything you need.

Make sure to set the following environment variables in your .env file:

DANA_ENV=development
DANA_ACTIVE=false
DANA_API_URL=https://api-sandbox.saas.dana.id
DANA_WEB_URL=https://m.sandbox.dana.id
DANA_MARCHANT_ID=your_merchant_id
DANA_CLIENT_ID=your_client_id
DANA_CLIENT_SECRET=your_client_secret
DANA_ORDER_NOTIFY_URL=your_notify_url
DANA_PAY_RETURN_URL=your_return_url
DANA_PUB_KEY=your_public_key
DANA_PRIVATE_KEY=your_private_key

Usage

1. Create order | DANAPay::createOrder($orderData)

$orderData = [
    "order" => [
        "orderTitle" => "Dummy product",
        "orderAmount" => [
            "currency" => "IDR",
            "value" => "100"
        ],
        "merchantTransId" => "201505080001",
        "merchantTransType" => "dummy transaction type",
        "orderMemo" => "Memo",
        "goods" => [
            [
                "merchantGoodsId" => "24525635625623",
                "description" => "dummy description",
                "category" => "dummy category",
                "price" => [
                    "currency" => "IDR",
                    "value" => "100"
                ],
                "unit" => "Kg",
                "quantity" => "3.2",
                "merchantShippingId" => "564314314574327545",
                "snapshotUrl" => "[http://snap.url.com]",
                "extendInfo" => [
                    "key" => "value",
                ]
            ]
        ]
    ],
    "merchantId" => "216820000000006553000",
    "subMerchantId" => "12345678",
    "productCode" => "51051000100000000001"
];

DANAPay::createOrder($orderData);

About all possible payloads for $orderData please check the official DANA documentation.
Ref: https://dashboard.dana.id/api-docs/read/33

2. Get Transaction by acquirementId | DANAPay::queryOrder($acquirementId)

$acquirementId = "20240125111212800110166050101920928";
DANAPay::queryOrder($acquirementId);

You can get transaction detail and status transaction with this method
Ref: https://dashboard.dana.id/api-docs/read/42

3. Get oAuth URL | DANAPay::generateOauthUrl($terminalType, $redirectUrl)

$terminalType = "WEB";
$redirectUrl  = "https://your-app-url.com/oauth/callback";
DANAPay::generateOauthUrl($terminalType, $redirectUrl);

For more information please check the official DANA documentation.
Ref: https://dashboard.dana.id/api-docs/read/47

4. Get Token and Refresh Token | DANAPay::getToken($authToken)

$authToken = "your-auth-token";
DANAPay::getToken($authToken);

You can get value of $authToken from oAuth callback process.
From this function you will receive token and refresh_token.
Ref: https://dashboard.dana.id/api-docs/read/32

5. Get User Profile | DANAPay::profile($accessToken)

$accessToken = "your_user_profile_access_token";
DANAPay::profile($accessToken);

You can get value for $accessToken from DANAPay::getToken function
Ref: https://dashboard.dana.id/api-docs/read/38

6. Unbinding Access Token | DANAPay::unBindAllAccount()

DANAPay::unBindAllAccount();

This function used for revoke or unbind all access token registered from the merchant.
Ref: https://dashboard.dana.id/api-docs/read/46

7. Function for provide callback response

$status = true;
DANAPay::responseFinishNotifyCallback($status);

This function will generate valid response for DANA API.
$status is boolean data type.

8. Function for calculation MDR

$payAmount = 100000;
$payMethod = 'BALANCE';
DANACalculation::calculateMDR($payAmount, $payMethod);

This function will calculate MDR fee for DANA. You will get value $payMethod and $payAmount from callback DANA.

Testing

composer test

Laravel Version Compatibility

This package supports multiple Laravel versions:

Laravel Version PHP Version Status
Laravel 9.x PHP 8.1+ ✅ Supported
Laravel 10.x PHP 8.1+ ✅ Supported
Laravel 11.x PHP 8.2+ ✅ Supported
Laravel 12.x PHP 8.2+ ✅ Supported

Changelog

Please see CHANGELOG.md for a list of what has changed since the last version.

Contributing

This project is far from perfect. Many DANA APIs that have not been implemented. I would be very happy if any of you could contribute to this project.

License

The MIT License (MIT). Please see License File for more information.