Bagaimana cara integrasi?

API Payment MPS mudah diintegrasikan karena menggunakan arsitektur RESTful API, menerima request melalui HTTP(S) ke URL endpoint dan memberikan respons dalam bentuk JSON.

MPS menyediakan dua mode pengujian, yaitu: Sandbox (mode development) dan Production (mode live). Masing-masing memiliki MID (Merchant ID) dan Kunci Akses yang berbeda. Transaksi yang dilakukan di environment sandbox dapat menggunakan simulator berdasarkan jenis pengujian (https://my.mpstelkom.id/integrasi/sandbox/uat). Setelah dilakukan UAT dan memperoleh MID (Merchant ID) production, transaksi dapat dibayar secara riil dengan environment production. Pengujian Sandbox dapat digunakan di aplikasimu di environment Development sehingga tidak mengganggu transaksimu secara live.

API Base URL
Sandbox environment: https://merchant.mpstelkom.id/api/sandbox
Production environment: https://merchant.mpstelkom.id/api/production

Informasi yang diperlukan sebelum integrasi

Daftar dan lengkapi verifikasi data di
https://my.mpstelkom.id

Dapatkan MID (Merchant ID) & kunci akses serta lakukan konfigurasi URL call back dan payment notif di menu Integrasi: https://my.mpstelkom.id/integrasi/sandbox

MID dan Merchant key yang kamu dapat akan digunakan untuk melakukan request menggunakan API postman yang dapat kamu unduh pada tombol diatas

Integrasi Custom Interface (API)

Integrasi API di sistem merchant dengan tampilan pembayaran dari merchant sehingga terlihat lebih professional.

Tahapan Integrasi Custom Interface (API)

API Request Payment

Untuk kebutuhan informasi tambahan API, seperti cek status, list metode bayar dan biaya fee tiap metode bayar. Kamu bisa bisa langsung klik halaman API Tambahan pada panel diatas.

Headers signature didapatkan dari MID + timestamp + Order id
dimana MID didapatkan setelah kamu membuat akun dan timestamp adalah waktu kamu akan melakukan request

API tambahan (list metode bayar, biaya metode bayar)

Untuk kebutuhan informasi tambahan API, seperti cek status, list metode bayar dan biaya fee tiap metode bayar. Kamu bisa bisa langsung klik halaman API Tambahan pada panel diatas.
{   
	"orderId" : "XXX",
	"totalAmount" : "xxxx", /*wajib menggunakan integer*/
        "submerchantId": "xxx", /*wajib bagi merchant yang memiliki submerchant*/
        "callbackUrl": "https://webhook.site/", /*url mu untuk menampung log transaksi*/
        "expiredDate":"YYYY-MM-DD hh:mm:ss"
		
	"paymentInfo" : {
        "customerName" : "Xander",
        "customerPhone" : "xxxxxxxxxx", /*integer dengan awalan 08*/ 
        "customerEmail" : "Jdoe@yahoo.com"
	},
	
	"productInfo" : [
        {   
            "productName"       : "Product Test", 
            "productCode"       : "123", 
            "productCategory"   : "123", 
            "amount"            : "xxxx", 
            "quantity"          : 1, 
            "description"       : "Testing"
            }
	],
	
	"additionalInfo" : {}
}

Halaman Checkout

Kamu dapat mengatur halaman checkout sendiri dengan bantuan API ini. Merchant dapat menampilkan data data seperti Nomor transaksi, metode transaksi dan Harga Transaksi.

Integrasi Hosted Payment

Tampilan pembayaran dengan desain dari MPS untuk proses integrasi yang cepat. Dilengkapi dengan pengaturan halaman yang dapat disesuaikan dengan merk produk.

Tahapan Integrasi Hosted Payment

API Pembuatan invoice

Sebelum melakukan transaksi, perlu dilakukan generate invoice untuk mengirimkan informasi pesanan dalam format JSON. Invoice tersebut harus memiliki Merchant ID (MID) dan kunci akses yang dapat diakses di https://my.mpstelkom.id/integrasi/production/konfigurasi

Generate hosted payment

Setelah invoice berhasil dibuat, maka langkah selanjutnya adalah mengirimkan nomor invoice yang telah dibuat. Langkah ini berguna untuk menampilkan halaman metode bayar dengan tampilan dari MPS. Untuk mengakses hosted payment, masukan URL : https://my.mpstelkom.id/production/payment/method/*InvoiceID*

API tambahan (list metode bayar, biaya metode bayar)

Untuk kebutuhan informasi tambahan API, seperti cek status, list metode bayar dan biaya fee tiap metode bayar. Kamu bisa bisa langsung klik halaman API Tambahan pada panel diatas.
/* URL Endpoint Generate Invoice: /merchant/requestInvoice */
/* DataRequest: */

{
    "merchantId": "195xxxxxxx", /* (Mandatory) Didapat saat merchant telah melakukan pendaftaran */
    "merchantKey": "283912xxxxxxxxxxx", /* (Mandatory) Didapat saat merchant telah melakukan pendaftaran */
    "orderId": "TESTING-123", /* (Mandatory) OrderId di generate dari merchant dan harus unik */
    "amount": "2000", /*(Mandatory) Total transaksi yang harus dibayarkan oleh user */
    "orderInformation": 
        {
            "productName": "Nama Product yang dibeli", /*(Mandatory)*/
            "quantity": "Jumlah barang yang dibeli", /*(Mandatory)*/
            "nama": "Nama pelanggan", /*(Mandatory)*/
            "nomorHp": "Data nomor Hp pelanggan", /*(Mandatory)*/
            "email": "email pelanggan", /*(Mandatory)*/
	"amount": "Harga barang yang dibeli" /*(Mandatory)*/

        }
    "additionalInformation": {
        "emailNotif": "xxxxxx@gmail.com" /* (Optional) Email pelanggan untuk update transaksi by email */
        "subMerchantId:"xxxxxx" /*(mandatory untuk merchant dengan jenis bisnis settlement 3rd party)*/"
    },
    "vaExpired": 120 /* Buat kamu yang mau ngubah expired date VA nya. Isinya dalam satuan menit yah */
}

Halaman Checkout

Merchant disediakan tampilan penbayaran yang lengkap dengan metode bayar yang dipilih sesuai dengan brand merchant. Pada halaman tersebut ditampilkan total tagihan, informasi produk, dan tata cara pembayaran.

Create VA

Membuat nomor VA static/ VA open sesuai dengan jasa bank yang digunakan

Update VA

VA yang kamu sudah buat dapat kamu update ulang untuk di-nonaktifkan melalui API updateBilling dengan menjadikan VA tersebut menjadi expired

Inquiry VA

Kamu dapat menggunakan API inintuk mengetahui status VA yang sudah dibuat

Partial Payment

Partial payment adalah jenis pembayaran yang dibayarkan secara berangsur sampai dengan nominal yang ditentukan (lunas). Untuk menggunakan metode bayar ini, pada parameter “billingType” diisi dengan “PARTIAL_PAYMENT”
// endpoint url https://merchant.mpstelkom.id/api/sandbox/merchant/createBilling
{   
	"orderId" : "xxx",
	"subMerchantId" : "Jdoe", /*wajib bagi merchant yang memiliki submerchant*/
	"productCode": "product_code",
	"virtualAccountNumber" : "",
	"virtualAccountName" : "J doe", 
	"billingType" : "OPEN_PAYMENT",
	"customerEmail" : "J.doe@gmail.com",
	"customerPhone" : "xxxxxxx",
	"remark" : "Pembayaran 1",
	"billingAmount" : 0, /*diisi untuk tipe pembayaran partial, harus integer*/
	"callbackUrl" : "https://webhook.site/"

}
// endpoint url https://merchant.mpstelkom.id/api/sandbox/merchant/createBilling
{
   "orderId":"xxx",
   "subMerchantId":"Jdoe",
   "productCode":"product_code",
   "virtualAccountNumber":"",
   "virtualAccountName":"J doe",
   "billingType":"OPEN_PAYMENT",
   "customerEmail":"J.doe@gmail.com",
   "customerPhone":"xxxxxxx",
   "remark":"Pembayaran 1",
   "billingAmount":0,
   "callbackUrl":"https://webhook.site/"
}
//endpoint url http://merchant.mpstelkom.id/api/sandbox/merchant/inquiryBilling
{
	"billingCode" : "942386072fa64fa5a07c6e996a99cfb0",
	"virtualAccountNumber" : "8803150940192489"
}
// endpoint url https://merchant.mpstelkom.id/api/sandbox/merchant/createBilling
{   
	"orderId" : "xxx",
	"subMerchantId" : "Jdoe",
	"productCode": "product_code",
	"virtualAccountNumber" : "",
	"virtualAccountName" : "J doe", 
	"billingType" : "PARTIAL_PAYMENT",
	"customerEmail" : "J.doe@gmail.com",
	"customerPhone" : "xxxxxxx",
	"remark" : "Pembayaran 1",
	"billingAmount" : 0,
	"callbackUrl" : "https://webhook.site/"

}

Tahapan Integrasi Mobile SDK

Untuk merchant yang bisnisnya melalui mobile phone sehingga tampilan pembayarannya lebih ramah dan mudah digunakan

Setup Android SDK

Pengaturan Awal

Pastikan software Android Studio pada versi 3.0+ dan Java versi 8.0+. Download dahulu file SDK di menu download SDK, setelah itu memilih menu File > New > New Module. Setelah itu cari file SDK yang didownload barusan dan import.

Pengaturan kedua

Untuk menggunakan library ini tambahkan module pada app yang akan dibuat dengan cara memilih File > Project Structure pilh module app dan tab Dependencies klik tombol + dan pilih Module dependency. Lalu pilih module sdkpayment

Pengaturan terakhir

Untuk menyelesaikan konfigurasi SDK, tambahkan library kedalam file gradle.app
(Nama di pop-up gambar “SDK import new module”)
(Nama di pop-up gambar “SDK Import module from library”)
xxx
// untuk tampilan material design
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'

// untuk http request
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'

// untuk menampilkan gambar
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' 

Start to Payment

Membuat informasi pesanan

Ketika terjadi transaksi, merchant akan membuat informasi pesanan yang membutuhkan data seperti nama produk, kuantitas, amount per produk, nama customer, nomor hp, dan email.

Membuat Request Payment

Ketika membuat Request Payment diperlukan beberapa data seperti nama merchant, Merchant ID (MID), kunci akses, Order ID, harga produk, email dan data informasi pesanan yang telah didapatkan di tahap sebelumnya.

Menerima status invoice

Apabila integrasi pembayaran di Android SDK sudah berhasil dijalankan, langkah terakhir yang perlu dilakukan adalah membuat status Invoice. Status invoice diperlukan untuk menerima status pembayaran yang sudah terjadi.
SDKPayment.getInstance().openPaymentActivity()
MainActivity.this, // context
"Toko Sejahtera", // nama merchant
"195xxxxxxxxx", // merchant id
"9axxxxxxxxxxxxxxxxxxxxxx", // merchant key
"INV12345", // order id harus unik
"12000", // harga produk
orderInformation, // informasi order dari data di atas

"usepcakep@yopmail.com"); // email notif
SDKPayment.getInstance().openPaymentActivity()
MainActivity.this, // context
"Toko Sejahtera", // nama merchant
"195xxxxxxxxx", // merchant id
"9axxxxxxxxxxxxxxxxxxxxxx", // merchant key
"INV12345", // order id harus unik
"12000", // harga produk
orderInformation, // informasi order dari data di atas
"usepcakep@yopmail.com"); // email notif
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == SDKConstant.REQUEST_PAYMENT
            && resultCode == RESULT_OK) {
        StatusInvoice result =
                (StatusInvoice) data.getSerializableExtra("INVOICE_STATUS");

        String summary = "merchantId" + result.getMerchantId() +
                "invoiceId " + result.getInvoiceId() +
                "orderId " + result.getOrderId() +
                "amount " + result.getAmount() +
                "status " + result.getStatus();

        Log.i("invoice data", summary);
    }
}

Setup IOS SDK

Pengaturan Awal

Pastikan sudah terinstall aplikasi Xcode dan menggunakan sistem operasi MacOs. Hal pertama adalah open .xcodeproj yang sudah didownload. Setelah itu build dan pilih target build nya adalah AggregateMPSSDK. Jalankan project sampai proses selesai dan akan muncul folder MPS SDK dengan extension file .framework.

Generate MPS SDK

Import package MPSSdk.Framework ke project yang ingin kita buat. Kamu dapat melakukan drag and drop ke project anda untuk meng-import package atau dengan cara klik kanan root folder project di Xcode dan pilih add file seperti gambar.
nama : SDK import new module
nama : SDK Import module from library
xxxxx

Start to Payment

Membuat merchant data dan informasi pesanan

Ketika terjadi transaksi, dibutuhkan adanya data merchant dan data informasi pesanan. Data merchant yang diperlukan adalah Merchant ID (MID), nama merchant, kunci akses, Order ID, jumlah amount, order information dan email. Sementara untuk informasi pesanan dibutuhkan data seperti nama produk, jumlah produk, harga, nama customer, no hp, dan email.

Import SDK dan run payment

Setelah berhasil membuat merchant data dan informasi pesanan, selanjutnya adalah mengimport SDK dan pembayaran sudah dapat dijalankan.

Menerima Invoice Status

Apabila integrasi pembayaran di iOS SDK sudah berhasil dijalankan, langkah terakhir yang perlu dilakukan adalah membuat status Invoice. Status invoice diperlukan untuk menerima status pembayaran yang sudah terjadi.

// Example for create merchant Data
func setMerchantData() -> MerchantData {
     let merchant = MerchantData()
     merchant.merchantId = "111111111111111"
     merchant.merchantName = "MPS Merchant"
     merchant.merchantKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
     merchant.orderId = ”xxxxxxxxxxxxxxxxxx”
     merchant.amount = "100000"
     merchant.orderInformation = [OrderData(), OrderData()]
     merchant.additionalInformation = ["email": "mps@gmail.com" as Any]
        
     return merchant
}

// Example for create Order Data
func setOrderData() -> OrderData {
    let order = OrderData()
    order.productName = "Sabun Cuci"
    order.quantity = "2"
    order.amount = "4000"
    order.nama = "Cihut"
    order.nomorHp = "081xxxxxxxxx"
    order.email = "xxxxx@mail.com"
        
    return order
}
//import MPSSDK above class declaration

Import MPSSdk

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Optional
        MPSSdk.instance.primaryColor = "#000000" // Hexa Code Color
        MPSSdk.instance.secondaryColor = "#000000" // Hexa Code Color

        //// Require
        // Initialize merchant data
        MPSSdk.instance.merchantData = setMerchantData()
        // Initialize delegate MPS SDK
        MPSSdk.instance.delegate = self //self is UIViewController
        // Start MPS SDK
        MPSSdk.instance.start(controller: self) //self is UIViewController
    }   
}
 
//import MPSSDK above class declaration

Import MPSSdk

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Optional
        MPSSdk.instance.primaryColor = "#000000" // Hexa Code Color
        MPSSdk.instance.secondaryColor = "#000000" // Hexa Code Color

        //// Require
        // Initialize merchant data
        MPSSdk.instance.merchantData = setMerchantData()
        // Initialize delegate MPS SDK
        MPSSdk.instance.delegate = self //self is UIViewController
        // Start MPS SDK
        MPSSdk.instance.start(controller: self) //self is UIViewController
    }   
}
 

Registrasi Kartu

Pra-Registrasi

Sebelum melakukan pembayaran recurring, daftarkan kartu kredit yang akan digunakan menggunakan API ini. Response yang dihasilkan berupa link yang dapat digunakan untuk mengkonfirmasi pendaftaran

Deskripsi parameter :

 

  • recurringType: Jenis durasi pembayaran, diisi dengan MONTHLY(Bulanan) atau DAILY(harian)
  • numberOfRecurrings: Jumlah berapa kali pembayaran dilakukan
  • recurringAmount: Total nominal transaksi
  • customerName : Nama Customer
  • customerEmail : Email Customer
  • customerPhoneNumber : Nomor Telephone Customer
  • address : Alamat tinggal Customer saat ini
  • cityName : Kota tempat tinggal Customer saat ini
  • provinceName : Provinsi Customer saat ini
  • country  : Negara Customer saat ini
  • zipCode  : Kode pos daerah Customer saat ini

 

Headers signature didapatkan dari MID + timestamp + Order id
dimana MID didapatkan setelah kamu membuat akun dan timestamp adalah waktu kamu akan melakukan request

Response pra-Registrasi

Jika kamu berhasil melakukan request, maka kamu akan mendapatkan response sebagai berikut
//endpoint URL : https://merchant.mpstelkom.id/api/production/merchant/recurring/pre-registration
{
    "orderId":"ORDER001",
    "billDetail":"Test Recurring Hari Minggu",
    "productCode":"doku_recurring_credit_card",
    "recurringType":"MONTHLY",
    "numberOfRecurrings": 12
    "recurringAmount":"xxxxxxxxx",
    "customerId":"Customer-1",
    "customerName":"Jhon Doe",
    "customerEmail":"email.email@email.com",
    "customerPhoneNumber":"08xxxxxxx",
    "address":"Menara Multimedia lantai 15 
 Jl. Kebon Sirih No.12"
    "cityName":"Jakarta Pusat,",
    "provinceName":"DKI Jakarta",
    "country":"Indonesia",
    "zipCode":"10110",
    "items":[
        {
            "productName": "Tagihan Gak Jelas",
            "price": "185000",
            "quantity": "1",
            "total": "185000"
        }
    ]
}
//Reponse ketika berhasil melakukan request pra-registrasi
{
    "responseCode": "00",
    "responseMessage": "success",
    "data": {
        "orderId": "ORDER01",
        "invoiceId": "<invoiceId>",
        "customerId": "Cust01",
        "status": "CREATED",
        "recurringAmount": xxxxxxx,
        "urlRedirect": "https://merchant.mpstelkom.id/recurring/registration/doku/sandbox/<invoiceId>"
    },
    "timestamp": "yyyy-MM-dd hh:mm:ss.ms"
}

API Tambahan Recurring

Check Status

Gunakan API ini untuk mengetahui status transaksi recurring yang telah dibuat

Unsubscribe

Ketika customer ingin berhenti berlangganan layanan recurring, API ini dapat digunakan dengan mengisi orderId transaksi yang ingin dihentikan

Update Kartu

API ini dapat digunakan untuk melakukan pergantian kartu. Setelah melakukan request API, API akan memberikan response berupa sebuah link yang terdapat pada parameter “urlRedirect” untuk melakukan perubahan data kartu
/*parameter post*/
{
 "orderId"  : "xxxxx"
}

/*response request*/
{
    "responseCode": "00",
    "responseMessage": "success",
    "data": {
        "orderId": "ORDERXX",
        "invoiceId": "XXXXXXXXXXX",
        "customerId": "C01",
        "maskedCardNumber": "123456****1101",
        "status": "REGISTERED",
        "recurringAmount": XXXXXX
    },
    "timestamp": "yyyy-mm-dd hh:mm:ss.ms"
/*parameter post*/ 
{
 "orderId" : "xxxxx"
 }

/*response API*/
{
    "responseCode": "00",
    "responseMessage": "success",
    "timestamp": "yyyy-mm-dd hh:mm:ss.ms"
}
/*parameter post*/ 
{
 "orderId" : "xxxxx" 
}

/*response API */
{
    "responseCode": "00",
    "responseMessage": "Success",
    "data": {
        "orderId": "XXXX",
        "invoiceId": "xxxxxxxxxx",
        "customerId": "Custxz",
        "maskedCardNumber": "123456****1101",
        "status": "REGISTERED",
        "recurringAmount": 180000.00,
        "urlRedirect": "https://merchant.mpstelkom.id/recurring/update/doku/production/xxxxxxxxxx"
    },
    "timestamp": "yyyy-mm-dd hh:mm:ss.ms"
}

Registrasi Kartu

Jika produkmu menggunakan metode bayar Direct Debit, API ini digunakan ketika pengguna akan mendaftarkan kartu debitnya untuk pertama kali. Ketika berhasil melakukan request API, response yang akan diberikan adalah response berupa URL yang akan berfungsi untuk mendaftarkan kartu pada gateway yang sudah tersedia

Request Payment

API ini dapat digunakan untuk membuat transaksi dengan menggunakan kartu direct debit yang telah didaftarkan. API ini akan memberikan OTP ke nomor handphone yang terdaftar dengan kartu direct debit

Submit Payment

Setelah melakukan transaksi, pembayaran akan dilakukan dengan menggunakan API ini, kode OTP yang diberikan dari API Request Payment sebelumnya akan dibutuhkan pada API ini
/*endpoint URL : https://merchant.mpstelkom.id/api/production/merchant/card/

{
	"productCode":"mti_direct_debit_bni",
	"cardType":"DEBIT_CARD",
	"mobileNumber":"xxxxxxxx",
	"userId": "xxxxxxxxx",
	"redirectUrl":"http://tester.com",
	"callbackUrl" : "https://webhook.site"
}
/* response ketika berhasil*/
{
    "responseCode": "00",
    "responseMessage": "success",
    "data": {
        "registrationReference": "9839d61d-d377-4bdc-8283-0c64fd905f31",
        "registrationPage": "https://mydev.mpstelkom.id/debit/card/mti/registration/sandbox/9839d61d-d377-4bdc-8283-0c64fd905f31",
        "expiredDate": "2022-01-03 13:30:58",
        "productCode": "mti_direct_debit_bni",
        "cardType": "DEBIT_CARD",
        "additionalData": {
            "userID": "xxxxxxxxx",
            "mobileNumber": "xxxxxxxx"
        }
    },
    "timestamp": "2022-01-03 13:00:58.683"
}
{   
	"orderId" : "Order01",
	"totalAmount" : xxxxxx,
		
	"paymentInfo" : {
        "customerName" : "Jhon Doe",
        "customerPhone" : "08xxxxxxxxx", 
        "customerEmail" : "email@email.com",
        "productCode": "mti_direct_debit_bni",
        "cardToken" : "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
        "terminalId" : "xxx"
	},
	
	"productInfo" : [
        { "productName" : "Product Test", "productCode" : "123", "productCategory" : "123", "amount" : 15000, "quantity" : 1, "description" : "Testing"}
	],
	
	"additionalInfo" : {}
}
{   
    "invoiceId" : "xxxxx-xxxx-xxxx-xxxx-xxxxxxx",
    "paymentId" : "xxxxxxxxx",
    "callbackUrl" : "https://webhook.site/7385afcf-7078-4910-99c2-d090e5aaaaee",
	"paymentInfo" : {
        "productCode":"mti_direct_debit_bni",
        "otp" : "123456"
	}
}

Request

Notifikasi Generate Virtual Account

Notifikasi ini akan dikirimkan ke merchant ketika MPS berhasil melakukan generate Virtual Account.

Notifikasi Response

Format response / balikan yang harus diberikan merchant setelah menerima notifikasi dari MPS.

Notifikasi Virtual Account Kadaluarsa

Notifikasi ini akan dikirimkan ke merchant ketika Virtual Account telah kadaluarsa.

  • Jika status invoice UNPAID maka notifikasi dikirimkan dalam kondisi invoice masih dapat digunakan.
  • Jika status invoice EXPIRED maka notifikasi dikirimkan dalam kondisi invoice telah kadaluarsa.

Notifikasi Invoice Kadaluarsa

Notifikasi ini akan dikirimkan ke merchant ketika invoice telah kadaluarsa.

Notifikasi Pembayaran

Notifikasi ini akan dikirimkan ke merchant ketika MPS menerima informasi pembayaran seperti terbayar atau belum (PAID/UNPAID)

Notifikasi Recurring

Notifikasi mengenai status transaksi recurring (berlangganan) seperti, jumlah bayaran, status registrasi, dan status langganan kamu akan dikirim ke lg notifikasi anda(sesuai dengan URL yang didaftarkan saat integrasi) melalui API ini.
/* HTTP POST */
/* Request Body */
{
       "notificationType" : "VA_Created"
	"expiredDate": "Aug 19, 2021 3:59:02 PM", /* Waktu kadaluarsa invoice */
	"invoiceId": "195XXXXXXX-YYYYYY", /* Nomor Invoice yang digenerate MPS */
	"orderId": "YYYYYY", /* Order ID yang dikirimkan merchant */
	"merchantId": "195XXXXXXX", /* MID Merchant */
	"amount": 15000.00, /* Nominal Invoice */
	"fee": 3000.00, /* Jika fee dibebankan ke merchant, maka total bayar = nominal invoice */
	"totalBayar": 18000.00, /* Total yang harus dibayarkan user */
	"mitraReff": "-", /* Abaikan, khusus pembayaran berhasil */
	"status": "UNPAID", /* Status Invoice = UNPAID */
	"message": "invoice belum dibayarkan", /* Notifikasi Message */
	"isVaStatic": false, /* true jika va yang digenerate bertipe open */
	"detailVa": {
		"noVa": "7813116417721941", /* Nomor VA yang berhasil digenerate */
		"bank": "016", /* 3 digit kode bank */
		"expired": "2021-08-18 21:59:06", /* Waktu kadaluarsa VA */
		"statusVa": "UNPAID" /* Status VA = UNPAID */
	}
}
/* HTTP POST */
/* Request Body */
{
       "notificationType" : "VA_EXPIRED"
	"expiredDate": "Aug 19, 2021 3:59:02 PM", /* Waktu kadaluarsa invoice */
	"invoiceId": "195XXXXXXX-YYYYYY", /* Nomor Invoice yang digenerate MPS */
	"orderId": "YYYYYY", /* Order ID yang dikirimkan merchant */
	"merchantId": "195XXXXXXX", /* MID Merchant */
	"amount": 15000.00, /* Nominal Invoice */
	"fee": 3000.00, /* Jika fee dibebankan ke merchant, maka total bayar = nominal invoice */
	"totalBayar": 18000.00, /* Total yang harus dibayarkan user */
	"mitraReff": "-", /* Abaikan, khusus pembayaran berhasil */
	"status": "EXPIRED", /* Status Invoice = UNPAID */
	"message": "invoice belum dibayarkan", /* Notifikasi Message */
	"isVaStatic": false, /* true jika va yang digenerate bertipe open */
	"detailVa": {
		"noVa": "7813116417721941", /* Nomor VA yang berhasil digenerate */
		"bank": "016", /* 3 digit kode bank */
		"expired": "2021-08-18 21:59:06", /* Waktu kadaluarsa VA */
		"statusVa": "Expired" /* Status VA = UNPAID */
	}
}
/* HTTP POST */
/* Request Body */
{
    "notificationType" : INVOICE_EXPIRED"
    "expiredDate":"Sep 3, 2020 8:44:39 PM", /* Waktu kadaluarsa invoice */
	"invoiceId": "195XXXXXXX-YYYYYY", /* Nomor Invoice yang digenerate MPS */
	"orderId": "YYYYYY", /* Order ID yang dikirimkan merchant */
	"merchantId": "195XXXXXXX", /* MID Merchant */
	"amount": 15000.00, /* Nominal Invoice */
    "fee":0, /* Abaikan */
    "totalBayar":0, /* Abaikan */
    "status":"EXPIRED", /* Status Invoice = EXPIRED */
    "message":"invoice telah expired", /* Notifikasi Message */
    "isVaStatic":false /* Abaikan */
}
/* HTTP POST */
/* Request Body */
{
        "notificationType" : "PAYMENT_NOTIF"
        "expiredDate":"Sep 3, 2020 8:44:39 PM", /* Waktu kadaluarsa invoice */
	"invoiceId": "195XXXXXXX-YYYYYY", /* Nomor Invoice yang digenerate MPS */
	"orderId": "YYYYYY", /* Order ID yang dikirimkan merchant */
	"merchantId": "195XXXXXXX", /* MID Merchant */
	"amount": 15000.00, /* Nominal Invoice */
	"fee": 3000.00, /* Jika fee dibebankan ke merchant, maka total bayar = nominal invoice */
	"totalBayar": 18000.00, /* Total yang harus dibayarkan user */
    "merchantProductCode":"LINK_AJA_APP_LINK", /* Kode metode bayar yang dibatalkan */
    "mitraReff":"-", /* Abaikan */
    "status":"UNPAID", /* Status Invoice = UNPAID */
    "message":"invoice belum dibayarkan", /* Notifikasi Message */
    "isVaStatic":false /* Abaikan */
}
/*contoh respon yang akan dikirimkan*/

{
  "notificationType": "RECURRING_REGISTRATION",
  "orderId": "X01",
  "invoiceId": "2201041241005045",
  "customerId": "Custxz",
  "maskedCardNumber": "557338******1101",
  "status": "REGISTERED",
  "message": "Registration Success"
}

{
  "notificationType": "RECURRING_NOTIF",
  "orderId": "X01",
  "invoiceId": "2201041241005045",
  "paymentId": "220104184135150724FD68231B9AAA",
  "customerId": "Custxz",
  "maskedCardNumber": "557338******1101",
  "amount": 250000,
  "fee": 0,
  "totalAmount": 250000,
  "status": "SUCCESS",
  "paymentDate": "2022-01-04 18:41:35",
  "message": "[00] SUCCESS"
}
/*contoh respon yang akan dikirimkan*/

/* HTTP 200 */
/* Response Body */
{	
	"status":"00",
/* Status yang diberikan merchant, contoh : "00", "Success", "OK" */
	"invoiceId":"195xxxxxxxxx",
	"message":"Notifikasi telah diterima" /* Response Message */
}

API Tambahan

Berikut ada beberapa API tambahan yang dapat kamu gunakan sesuai dengan kebutuhan bisnismu.

List Metode Bayar

Sebelum melakukan request pembayaran baik melalui custom payment ataupun melakukan request VA, maka API ini perlu dijalankan untuk mengetahui gateway registry (ID payment gateway) dan product code (ID metode bayar).

Request Check Status

API Check status digunakan untuk melakukan checking status transaksi user.

Request Check Status

API Check status digunakan untuk melakukan checking status transaksi user.

Request Biaya Metode Bayar

Kamu dapat melakukan request untuk mendapatkan informasi mengenai biaya setiap metode pembayaran

Deactivate VA

Jika kamu ingin menon-aktifkan VA dari sebuah transaksi, API ini dapat membantu kamu untuk melakukan proses menon-aktifkan VA
/* URL Endpoint Request List Product : merchant/requestProduct?merchantId={merchantId} */
/* HTTP Get */
/* Body Response */
[
    {
        "gatewayRegistery": "68xxxx",
        "gatewayCode": "12xxxx",
        "productLists": [
            {
                "bankCode": "01xx",
                "productCode": "xxx",
                "productName": "xxxx VA",
                "productImage": "image/isxxxx.png",
                "productGroup": {
                    "id": "xxxx",
                    "name": "xxxxx",
                    "description": "",
                    "photo": "12sxx.png",
                    "sequence": xxxxx
                },
                "productType": "12312xs"
            }
        ]
    }
}
        
/* URL Endpoint Request Check Status : /merchant/paymentStatus */
/* HTTP POST */
{
	"invoiceId":"195xxxxxxxxx",
    "merchantId":"195xxxxxxxxx",
    "merchantKey":"afxxxxxxxxxxxx"
}
/* Body Response */
{
    "resultCode": "00",
    "resultDescription": "SUCCESS",
    "resultData": {
        "expiredDate": "2022-02-08T02:01:01.000+00:00",
        "invoiceId": "195xxxxxxx",
        "orderId": "testingcheckstatus1",
        "merchantId": "195xxxxxxx",
        "amount": 100000.00,
        "fee": 5000.00,
        "totalBayar": 105000.00,
        "merchantProductCode": "XXXXX",
        "vaNumber": "1234567890",
        "vaExpired": "2022-02-07 09:14:30",
        "status": "UNPAID",
        "isVaStatic": false
    }
}
/*endpoint URL: https://merchant.mpstelkom.id/api/production/merchant/deactive-va*/
{
"invoiceId":"195241336788bnm2",
"vaNumber":"9881249153292415"
}
//Endpoint URL : https://merchant.mpstelkom.id/api/production/merchant/requestProduct/detail?merchantId=xxxxx&productCode=xxxxx
{
    "responseCode": "00",
    "responseMessage": "Success",
    "data": {
        "channelMdr": 0.00,
        "productCode": "kode_produk",
        "chargeTo": "MERCHANT/USER/SUBMERCHANT",
        "channelFee": 3500.00,
        "productType": "XX",
        "productName": "XXXXX"
    },
    "timestamp": "XXXX-XX-XX hh:mm:ss"
}

Pendaftaran sub-Merchant

Untuk dapat mendaftarkan mitra yang bekerja dengan sama dengan kamu, gunakan api berikut.

Penggunaan parameter tmoneyPin bersifat optional, digunakan ketika nomor dan email submerchant sudah melakukan integrasi dengan tmoney.

/*endpoint url :https://mydev.mpstelkom.id/api/sandbox/merchant/sub-merchant/add */
{       
    "idSubMerchant": "SMBC08",
    "nama": "SubMerchant B 1",
    "email": "J.doe1@yopmail.com",
    "kodeBank": "022",
    "nomorRekening": "77777777",
    "namaPemilikRekening": "Jhon Doe",
    "komisi": "60",
    "skemaKomisi": "EXCLUDE_FEE",
    "deskripsi": "Test Optional",
    "urlPks":"word.com",
    "disbursementChargeTo":"MERCHANT",
    "connectTmoney": "true",
    "noIdentitas": "12345678",
    "noTelp": "08123456789",
    "tmoneyPin": "12345",/*optional*/
}

Simulasi Pembayaran

MPS juga menyiapkan beberapa API dan link untuk menyiapkan kamu dalam melakukan percobaan pembayaran terhadap gateway tertentu, berikut adalah daftarnya :

E-coll
Finpay
Xendit
Espay
Mandiri Billing

Untuk penjelasan lebih lanjut, silahkan klik link

<a href="https://www.canva.com/design/DAFIEDpKSEo/aoSZ3--OZwg1c52B4vDSOg/view?utm_content=DAFIEDpKSEo&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton">https://www.canva.com/design/DAFIEDpKSEo/aoSZ3--OZwg1c52B4vDSOg/view?utm_content=DAFIEDpKSEo&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton</a>

List Error

Ketika terjadi kesalahan ketika menggunakan API, akan ditampilkan informasi kode error HTTP (2xx, 4xx, 5xx) untuk membantu merchant mengidentifikasi kesalahan yang terjadi, anda dapat melihat daftar kode error pada link yang ditautkan pada tombol dibawah ini.

Ingin tahu lebih lanjut?

Hubungi kami dan kembangkan bisnis kamu bersama MPS.

Hubungi bagian penjualan
Demo