myPOS MDB SDK Integration Guide
This guide outlines how to install and use the myPOS-MDB-SDK to enable cashless vending machine integration via Android.
1. Installation
Gradle Setup
Add the Maven Central repository in your project-level build.gradle:
Code Example
JSON
allprojects {
repositories {
mavenCentral()
}
}Add the SDK dependency in your app-level build.gradle:
Code Example
JSON
dependencies {
implementation 'com.mypos:mdbsdk:1.0.0'
}2. Initialization
Android Manifest
Add required package queries:
Code Example
JSON
<queries>
<package android:name="com.mypos" />
<package android:name="com.mypos.ipp" />
</queries>Application Class Setup
Code Example
JSON
public class SampleApplication extends Application implements MDBManager.OnBindListener {
@Override
public void onCreate() {
super.onCreate();
MDBManager.getInstance().bind(this, this);
}
@Override
public void onBindComplete() {
MDBManager.getInstance().init(paymentAppInfo, iCompletionCallback, iPaymentCallback);
}
}3. Cashless Device Configuration
Setup PaymentAppInfo
Code Example
JSON
PaymentAppInfo paymentAppInfo = new PaymentAppInfo();
paymentAppInfo.setClientId("12345678");
paymentAppInfo.setManufactureCode("XGD");
paymentAppInfo.setModel(Build.MODEL);
paymentAppInfo.setCountryCode("826");
paymentAppInfo.setDecimalPlaces((byte) 0x02);
paymentAppInfo.setScaleFactor(1);
paymentAppInfo.setResponseTime((byte) 0x3C);
paymentAppInfo.setLogLevel(LogLevel.INFO.ordinal());
paymentAppInfo.setReaderFeatureLevel((byte) 0x00);
paymentAppInfo.setRevalueApproved(false);
paymentAppInfo.setRequestRefunds(true);
paymentAppInfo.setDeviceMode(DeviceMode.CASHLESS);
paymentAppInfo.setNotifyStatus(false);
paymentAppInfo.setRespondAckFirst(false);
paymentAppInfo.setDeviceType(0);
paymentAppInfo.setSupportCashSale(false);
paymentAppInfo.setDelayTm(0);
paymentAppInfo.setWaitEndSessionTm(30);
paymentAppInfo.setSupportMultiVend(false);
paymentAppInfo.setSupportRemoteVend(false);
paymentAppInfo.setEnableAlwaysIdle(true);
paymentAppInfo.setMonetaryFormat(0);4. Payment Callback
Code Example
JSON
private final IPaymentCallback iPaymentCallback = new IPaymentCallback.Stub() {
@Override
public int onPay(int tradeType, String itemPrice, String itemNumber) {
if (tradeType == VendType.SALE.ordinal()) {
// Handle sale
}
return 0;
}
@Override
public void notifyMdbStatus(int mdbDeviceStatus) {
switch (DeviceStatus.values()[mdbDeviceStatus]) {
case INACTIVE:
case DISABLE:
case ENABLE:
case SESSION_IDLE:
case VEND:
break;
}
}
@Override
public void notifyVendResult(int result) {
switch (VendResult.values()[result]) {
case VEND_SUCCESS:
case VEND_FAILURE:
case VEND_END_SESSION:
case VEND_CANCEL:
break;
}
}
@Override
public void notifyVendParam(int type, byte[] data) {
switch (VendParam.values()[type]) {
case MIN_PRICE:
double minPrice = Long.parseLong(ByteArray.bytesToHex(data), 16) / 100.0;
break;
case MAX_PRICE:
double maxPrice = Long.parseLong(ByteArray.bytesToHex(data), 16) / 100.0;
break;
case IDLE_MODE:
long idleMode = Long.parseLong(ByteArray.bytesToHex(data), 16);
break;
}
}
@Override public void onPayResult(String result) {}
@Override public void onCallDiagnostics(byte[] bytes) {}
@Override public void onReaderCancel() {}
};5. Setup Completion Callback
Code Example
JSON
private final ICompletionCallback iCompletionCallback = new ICompletionCallback.Stub() {
@Override public void onSuccess() {}
@Override public void onFailure(int retCode) {}
@Override public void onAppUpdate() {}
@Override public void onNotifyVMCInfo(String brand, String model) {}
@Override public void onReportError(int type, boolean success, String errorMessage) {}
};6. Session Management
Start Session
Code Example
JSON
JSONObject report = new JSONObject();
report.put(ReportKey.TYPE, ReportType.BEGIN_SESSION.ordinal());
report.put(ReportKey.FUNDS, hexAmount); // in hexadecimal format
MDBManager.getInstance().reportToVMC(report.toString());Cancel Session
Code Example
JSON
JSONObject report = new JSONObject();
report.put(ReportKey.TYPE, ReportType.CANCEL_SESSION_REQUEST.ordinal());
MDBManager.getInstance().reportToVMC(report.toString());Report Vend Result
Code Example
JSON
JSONObject report = new JSONObject();
report.put(ReportKey.TYPE, ReportType.TRADE_RESULT.ordinal());
report.put(ReportKey.TRADE_RESULT, TransResult.TRADE_SUCCESS.ordinal());
report.put(ReportKey.TRANS_RESULT_AMOUNT, hexAmount);
MDBManager.getInstance().reportToVMC(report.toString());7. Age Verification
Code Example
JSON
MDBManager.getInstance().setAgeVerificationCallback(ageVerificationCallback);Implement Callback
Code Example
JSON
private final IAgeVerificationCallback ageVerificationCallback = new IAgeVerificationCallback.Stub() {
@Override
public void onCheckAgeVerification(int age) {
// Perform your age check logic
}
};Set Verification Result
Code Example
JSON
AgeVerificationManager.getInstance().setDRAVSStatus(AgeVerificationResult.VALID_CARD);