Neatly Positioned Magazines

    duitku

    0.0.6 • Public • Published

    Duitku Node JS

    Welcome to Duitku Node JS Example Project Implementation Page, Integrate this Duitku Node JS to start transaction using Duitku in your Web or Application.

    flow_duitku_payment

    Demo Project

    Go To Demo Duitku-Pop

    Go To Demo Duitku-Api

    Full Step Docs

    Go To Duitku Docs Duitku-Pop

    Go To Duitku Docs Duitku-Api

    Installation

    Install duitku-php with composer by following command:

    npm install duitku
    

    or add it manually in your package.json file.

    "dependencies": {
        "duitku": "^0.0.1"
      }

    then run this command below

    npm install
    

    Configuration Settings

    Duitku configuration will read on your root project config folder. It should be like project/config/duitku-configuration.js. Please create the file first.

    const duitkuConfig = {
        merchantCode : "DXXXX",
        apiKey : "XXXc6XXX31829bXXX74cd5XXXXX869XX",
        passport : true,
        callbackUrl : "https://example/route/callback",
        returnUrl : "https://example/route/return",
        expiryPeriod: 1440
    };
    
    module.exports = duitkuConfig;

    or project/config/duitku-configuration.json

    {
        "merchantCode" : "DXXXX",
        "apiKey" : "XXXc6XXX31829bXXX74cd5XXXXX869XX",
        "passport" : true,
        "callbackUrl" : "https://example/route/callback",
        "returnUrl" : "https://example/route/return",
        "expiryPeriod": 1440
    }

    Duitku POP

    Create Invoice (Duitku-Pop)

    Parameter paymentMethod is optional,

    First you need to require duitku module to use method and class for create invoice duitku.

    You can require like on below:

    const duitku = require('duitku');
    const createInvoice = duitku.createInvoice;

    Then, you need to instance class object of Invoice duitku

    let invoice = new duitku.Invoice(10000, "test_payment_01", "Test Payment");

    you need to pass 3 pass value, there is payment amount, order id and product details in order. After that you could set other parameter through your invoice object instance.

    invoice.setEmail("email@value.com");

    Here full example of Create Invoice

    const {
        createInvoice,
        Invoice,
        ItemDetail
        } = require('duitku');
    
    let invoice = new Invoice(10000, "test_payment_01", "Test Payment")
    
    // Customer Detail
    let firstName          = "John";
    let lastName           = "Doe";
    let email              = "customer@gmail.com"
    let phoneNumber        = "081234567890"
    
    // Address
    let address             = "Jl. Kembangan Raya";
    let city               = "Jakarta";
    let postalCode         = "11530";
    let countryCode        = "ID";
    
    invoice.setEmail(email); // your customer email
    invoice.setPhoneNumber(phoneNumber); // your customer phone number (optional)
    invoice.setCustomerVaName(`${firstName} ${lastName}`); // display name on bank confirmation display
    invoice.getCustomerDetail().setFirstName(firstName);
    invoice.getCustomerDetail().setLastName(lastName);
    invoice.getCustomerDetail().setEmail(email);
    invoice.getCustomerDetail().setPhoneNumber(phoneNumber);
    invoice.getCustomerDetail().setShippingAddress(
        firstName,
        lastName,
        address,
        city,
        postalCode,
        phoneNumber,
        countryCode
    )
    invoice.getCustomerDetail().setShippingAddressEqualBillingAddress();
    
    // Item Details
    let item = new ItemDetail("Test Item", 0, 10000);
    
    invoice.addItemDetails(item.get());
    
    createInvoice(invoice.get(), (resp, err) => {
                if(err){
                    console.log(err)
                }else{
                    console.log(resp)
                    }
                })

    Frontend Integration (Duitku-Pop)

    You need to import script to your main html project.

    <!-- sandbox environtment -->
    <script src="https://app-sandbox.duitku.com/lib/js/duitku.js"></script>
    <!-- passport environtment -->
    <script src="https://app-prod.duitku.com/lib/js/duitku.js"></script>
    checkout.process(result.reference, {
        successEvent: function(result){
        // Add Your Action
            console.log('success');
            console.log(result);
            alert('Payment Success');
        },
        pendingEvent: function(result){
        // Add Your Action
            console.log('pending');
            console.log(result);
            alert('Payment Pending');
        },
        errorEvent: function(result){
        // Add Your Action
            console.log('error');
            console.log(result);
            alert('Payment Error');
        },
        closeEvent: function(result){
        // Add Your Action
            console.log('customer closed the popup without finishing the payment');
            console.log(result);
            alert('customer closed the popup without finishing the payment');
        }
    });    

    Duitku API

    Request Transaction (Duitku-Api)

    First you need to require duitku module to use method and class for create invoice duitku.

    You can require like on below:

    const duitku = require('duitku');
    const requestTransaction = duitku.requestTransaction;

    Then, you need to instance class object of Transaction duitku

    let transaction = new duitku.Transaction(10000, "I1", "test_payment_01", "Test Payment");

    you need to pass 4 pass value, there is payment amount, payment method code, order id and product details in order. After that you could set other parameter through your invoice object instance.

    invoice.setEmail("email@value.com");

    Here full example of Create Invoice

    const {
        requestTransaction,
        Transaction,
        ItemDetail
        } = require('duitku');
    
    let transaction = new Transaction(10000, "I1", "test_payment_01", "Test Payment")
    
    // Customer Detail
    let firstName          = "John";
    let lastName           = "Doe";
    let email              = "customer@gmail.com"
    let phoneNumber        = "081234567890"
    
    // Address
    let address             = "Jl. Kembangan Raya";
    let city               = "Jakarta";
    let postalCode         = "11530";
    let countryCode        = "ID";
    
    transaction.setEmail(email); // your customer email
    transaction.setPhoneNumber(phoneNumber); // your customer phone number (optional)
    transaction.setCustomerVaName(`${firstName} ${lastName}`); // display name on bank confirmation display
    transaction.getCustomerDetail().setFirstName(firstName);
    transaction.getCustomerDetail().setLastName(lastName);
    transaction.getCustomerDetail().setEmail(email);
    transaction.getCustomerDetail().setPhoneNumber(phoneNumber);
    transaction.getCustomerDetail().setShippingAddress(
        firstName,
        lastName,
        address,
        city,
        postalCode,
        phoneNumber,
        countryCode
    )
    transaction.getCustomerDetail().setShippingAddressEqualBillingAddress();
    
    // Item Details
    let item = new ItemDetail("Test Item", 0, 10000);
    
    transaction.addItemDetails(item.get());
    
    requestTransaction(transaction.get(), (resp, err) => {
        if(err){
            console.log(err)
        }else{
            console.log(resp)
            }
        }
    )

    Callback (Duitku-Api)

    Callback function will receive string or object and validate the callback value.

    let dummyCallback = `{"merchantCode":"DXXXX","amount":"10000","merchantOrderId":"test_payment_01","productDetail":"Test Payment","additionalParam":"","resultCode":"00","signature":"0ad994db2be2629b71151403423c8a8b","paymentCode":"VA","merchantUserId":"John Doe","reference":"D90997SHEKFH3T08QJE1","issuer_name":"","issuer_bank":""}`;
    let callbackObj = callback(dummyCallback);
    
    console.log(callbackObj)

    Check Transaction (Duitku-Api)

    Check transaction function will need string order ID parameter and then give a response data.

    checkTransaction("test_payment_01", (resp, err) => {
        if(err){
            console.log(err)
        }else{
            console.log(resp)
            }
        }
    )

    Get Payment Method (Duitku-Api)

    Get payment method function will need number amount parameter and then give a response bank list that available.

    getPaymentMethod(10000, (resp, err) => {
        if(err){
            console.log(err)
        }else{
            console.log(resp)
            }
        }
    )

    Cheat sheet

    function example
    requestTransaction(object, function) requestTransaction(transaction, (resp, err) => {}))
    checkTransaction(string, function) checkTransaction("string", (resp, err) => {}))
    getPaymentMethod(number, function) getPaymentMethod(10000, (resp, err) => {}))
    createInvoice(object, function) createInvoice(invoice, (resp, err) => {}))
    callback(string/object) callback(req.body)
    class method parameter return
    Transaction get - Object
    getMerchantCode - String
    getPaymentAmount - Number
    getPaymentMethod - String
    getMerchantOrderId - String
    getProductDetails - String
    getAdditionalParam - String
    getMerchantUserInfo - String
    getCustomerVaName - String
    getEmail - String
    getPhoneNumber - String
    getItemDetails - Array
    getCustomerDetail - Object
    getCustomerDetail.get - Object
    getCustomerDetail.getFirstName - String
    getCustomerDetail.getLastName - String
    getCustomerDetail.getEmail - String
    getCustomerDetail.getPhoneNumber - String
    getCustomerDetail.getBillingAddress - Object
    getCustomerDetail.getBillingAddress.get - Object
    getCustomerDetail.getBillingAddress.getFirstName - String
    getCustomerDetail.getBillingAddress.getLastName - String
    getCustomerDetail.getBillingAddress.getAddress - String
    getCustomerDetail.getBillingAddress.getCity - String
    getCustomerDetail.getBillingAddress.getPostalCode - String
    getCustomerDetail.getBillingAddress.getPhone - String
    getCustomerDetail.getBillingAddress.getCountryCode - String
    getCustomerDetail.getBillingAddress.setFirstName String -
    getCustomerDetail.getBillingAddress.setLastName String -
    getCustomerDetail.getBillingAddress.setAddress String -
    getCustomerDetail.getBillingAddress.setCity String -
    getCustomerDetail.getBillingAddress.setPostalCode String -
    getCustomerDetail.getBillingAddress.setPhone String -
    getCustomerDetail.getBillingAddress.setCountryCode String -
    getCustomerDetail.getShippingAddress - Object
    getCustomerDetail.getShippingAddress.get - Object
    getCustomerDetail.getShippingAddress.getFirstName - String
    getCustomerDetail.getShippingAddress.getLastName - String
    getCustomerDetail.getShippingAddress.getAddress - String
    getCustomerDetail.getShippingAddress.getCity - String
    getCustomerDetail.getShippingAddress.getPostalCode - String
    getCustomerDetail.getShippingAddress.getPhone - String
    getCustomerDetail.getShippingAddress.getCountryCode - String
    getCustomerDetail.getShippingAddress.setFirstName String -
    getCustomerDetail.getShippingAddress.setLastName String -
    getCustomerDetail.getShippingAddress.setAddress String -
    getCustomerDetail.getShippingAddress.setCity String -
    getCustomerDetail.getShippingAddress.setPostalCode String -
    getCustomerDetail.getShippingAddress.setPhone String -
    getCustomerDetail.getShippingAddress.setCountryCode String -
    getCustomerDetail.setFirstName String -
    getCustomerDetail.setLastName String -
    getCustomerDetail.setEmail String -
    getCustomerDetail.setPhoneNumber String -
    getCustomerDetail.setShippingAddress String, String, String, String, String, String, String -
    getCustomerDetail.setBillingAddress String, String, String, String, String, String, String -
    getCustomerDetail.setBillingAddressEqualShippingAddress - -
    getCustomerDetail.setShippingAddressEqualBillingAddress - -
    getCallbackUrl - String
    getReturnUrl - String
    getSignature - String
    getExpiryPeriod - Number
    getDiscount - Object
    getTax - Object
    setPaymentMethod String -
    setPaymentAmount Number -
    setMerchantOrderId String -
    setProductDetails String -
    setAdditionalParam String -
    setMerchantUserInfo String -
    setCustomerVaName String -
    setEmail String -
    setPhoneNumber String -
    addItemDetails Object -
    createAnItemDetail String, Number, Number -
    createDiscount Number, String -
    createTax Number, String -
    removeItemDetails index -
    removeDiscount index -
    removeTax index -
    clearItemDetails - -
    clearDiscount - -
    clearTax - -
    request function -
    Invoice get - Object
    getPaymentAmount - Number
    getMerchantOrderId - String
    getProductDetails - String
    getEmail - String
    getAdditionalParam - String
    getMerchantUserInfo - String
    getCustomerVaName - String
    getPhoneNumber - String
    getItemDetails - Array
    getCustomerDetail - Object
    getCustomerDetail.getBillingAddress.get - Object
    getCustomerDetail.getBillingAddress.getFirstName - String
    getCustomerDetail.getBillingAddress.getLastName - String
    getCustomerDetail.getBillingAddress.getAddress - String
    getCustomerDetail.getBillingAddress.getCity - String
    getCustomerDetail.getBillingAddress.getPostalCode - String
    getCustomerDetail.getBillingAddress.getPhone - String
    getCustomerDetail.getBillingAddress.getCountryCode - String
    getCustomerDetail.getBillingAddress.setFirstName String -
    getCustomerDetail.getBillingAddress.setLastName String -
    getCustomerDetail.getBillingAddress.setAddress String -
    getCustomerDetail.getBillingAddress.setCity String -
    getCustomerDetail.getBillingAddress.setPostalCode String -
    getCustomerDetail.getBillingAddress.setPhone String -
    getCustomerDetail.getBillingAddress.setCountryCode String -
    getCustomerDetail.getShippingAddress - Object
    getCustomerDetail.getShippingAddress.get - Object
    getCustomerDetail.getShippingAddress.getFirstName - String
    getCustomerDetail.getShippingAddress.getLastName - String
    getCustomerDetail.getShippingAddress.getAddress - String
    getCustomerDetail.getShippingAddress.getCity - String
    getCustomerDetail.getShippingAddress.getPostalCode - String
    getCustomerDetail.getShippingAddress.getPhone - String
    getCustomerDetail.getShippingAddress.getCountryCode - String
    getCustomerDetail.getShippingAddress.setFirstName String -
    getCustomerDetail.getShippingAddress.setLastName String -
    getCustomerDetail.getShippingAddress.setAddress String -
    getCustomerDetail.getShippingAddress.setCity String -
    getCustomerDetail.getShippingAddress.setPostalCode String -
    getCustomerDetail.getShippingAddress.setPhone String -
    getCustomerDetail.getShippingAddress.setCountryCode String -
    getCustomerDetail.setFirstName String -
    getCustomerDetail.setLastName String -
    getCustomerDetail.setEmail String -
    getCustomerDetail.setPhoneNumber String -
    getCustomerDetail.setShippingAddress String, String, String, String, String, String, String -
    getCustomerDetail.setBillingAddress String, String, String, String, String, String, String -
    getCustomerDetail.setBillingAddressEqualShippingAddress - -
    getCustomerDetail.setShippingAddressEqualBillingAddress - -
    getReturnUrl - String
    getCallbackUrl - String
    getExpiryPeriod - Number
    getPaymentMethod - String
    setPaymentAmount Number -
    setMerchantOrderId String -
    setProductDetails String -
    setEmail String -
    setAdditionalParam String -
    setMerchantUserInfo String -
    setCustomerVaName String -
    setPhoneNumber String -
    addItemDetails Object -
    createAnItemDetail String, Number, Number -
    createDiscount Number, String -
    createTax Number, String -
    removeItemDetails index -
    removeDiscount index -
    removeTax index -
    clearItemDetails - -
    clearDiscount - -
    clearTax - -
    create function -
    ItemDetail get - Object
    getName - String
    getQuantity - Number
    getPrice - Number
    set String, Number, Number -
    setName String -
    setQuantity Number -
    setPrice Number -

    Install

    npm i duitku

    DownloadsWeekly Downloads

    2

    Version

    0.0.6

    License

    ISC

    Unpacked Size

    67.3 kB

    Total Files

    22

    Last publish

    Collaborators

    • kangleian
    • dhanisuhendra30