0.0.8 • Published 1 year ago

duitku-nodejs v0.0.8

Weekly downloads
-
License
ISC
Repository
github
Last release
1 year ago

Duitku Node JS Fixed by mimamch

Demo Project duitku

Fixing Error Error: Cannot find module './model/itemDetail.js' for some machine

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

Go To Demo Duitku-Api

Go To Duitku Docs Duitku-Api

Installation

Install duitku-php with composer by following command:

npm install duitku-nodejs

or add it manually in your package.json file.

"dependencies": {
    "duitku-nodejs": "^0.0.7"
  }

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

functionexample
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)
classmethodparameterreturn
Transactionget-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.setFirstNameString-
getCustomerDetail.getBillingAddress.setLastNameString-
getCustomerDetail.getBillingAddress.setAddressString-
getCustomerDetail.getBillingAddress.setCityString-
getCustomerDetail.getBillingAddress.setPostalCodeString-
getCustomerDetail.getBillingAddress.setPhoneString-
getCustomerDetail.getBillingAddress.setCountryCodeString-
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.setFirstNameString-
getCustomerDetail.getShippingAddress.setLastNameString-
getCustomerDetail.getShippingAddress.setAddressString-
getCustomerDetail.getShippingAddress.setCityString-
getCustomerDetail.getShippingAddress.setPostalCodeString-
getCustomerDetail.getShippingAddress.setPhoneString-
getCustomerDetail.getShippingAddress.setCountryCodeString-
getCustomerDetail.setFirstNameString-
getCustomerDetail.setLastNameString-
getCustomerDetail.setEmailString-
getCustomerDetail.setPhoneNumberString-
getCustomerDetail.setShippingAddressString, String, String, String, String, String, String-
getCustomerDetail.setBillingAddressString, String, String, String, String, String, String-
getCustomerDetail.setBillingAddressEqualShippingAddress--
getCustomerDetail.setShippingAddressEqualBillingAddress--
getCallbackUrl-String
getReturnUrl-String
getSignature-String
getExpiryPeriod-Number
getDiscount-Object
getTax-Object
setPaymentMethodString-
setPaymentAmountNumber-
setMerchantOrderIdString-
setProductDetailsString-
setAdditionalParamString-
setMerchantUserInfoString-
setCustomerVaNameString-
setEmailString-
setPhoneNumberString-
addItemDetailsObject-
createAnItemDetailString, Number, Number-
createDiscountNumber, String-
createTaxNumber, String-
removeItemDetailsindex-
removeDiscountindex-
removeTaxindex-
clearItemDetails--
clearDiscount--
clearTax--
requestfunction-
Invoiceget-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.setFirstNameString-
getCustomerDetail.getBillingAddress.setLastNameString-
getCustomerDetail.getBillingAddress.setAddressString-
getCustomerDetail.getBillingAddress.setCityString-
getCustomerDetail.getBillingAddress.setPostalCodeString-
getCustomerDetail.getBillingAddress.setPhoneString-
getCustomerDetail.getBillingAddress.setCountryCodeString-
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.setFirstNameString-
getCustomerDetail.getShippingAddress.setLastNameString-
getCustomerDetail.getShippingAddress.setAddressString-
getCustomerDetail.getShippingAddress.setCityString-
getCustomerDetail.getShippingAddress.setPostalCodeString-
getCustomerDetail.getShippingAddress.setPhoneString-
getCustomerDetail.getShippingAddress.setCountryCodeString-
getCustomerDetail.setFirstNameString-
getCustomerDetail.setLastNameString-
getCustomerDetail.setEmailString-
getCustomerDetail.setPhoneNumberString-
getCustomerDetail.setShippingAddressString, String, String, String, String, String, String-
getCustomerDetail.setBillingAddressString, String, String, String, String, String, String-
getCustomerDetail.setBillingAddressEqualShippingAddress--
getCustomerDetail.setShippingAddressEqualBillingAddress--
getReturnUrl-String
getCallbackUrl-String
getExpiryPeriod-Number
getPaymentMethod-String
setPaymentAmountNumber-
setMerchantOrderIdString-
setProductDetailsString-
setEmailString-
setAdditionalParamString-
setMerchantUserInfoString-
setCustomerVaNameString-
setPhoneNumberString-
addItemDetailsObject-
createAnItemDetailString, Number, Number-
createDiscountNumber, String-
createTaxNumber, String-
removeItemDetailsindex-
removeDiscountindex-
removeTaxindex-
clearItemDetails--
clearDiscount--
clearTax--
createfunction-
ItemDetailget-Object
getName-String
getQuantity-Number
getPrice-Number
setString, Number, Number-
setNameString-
setQuantityNumber-
setPriceNumber-