Professional Documents
Culture Documents
DocumentDate
Mei 19,2022
Revision Status
1.2 COMPOSITION
1.2.1 POS4CAT.exe
POS4CAT.exe communicate with EDC which connected to serial port using pre-
defined protocol and also generate and analysis the request/response message.
1.2.2 POS4CAT_Ctl.dll
POS4CAT_Ctl.dll is library to perform service and data request to POS4EDC. This
module can be called using general shared library form from PC based POS
application.
1.2.3 POS4CAT.ini
POS4CAT.ini file is configuration file include setting information of POS4EDC. This
file includes communication setting value to use communicate with EDC by
POS4EDC. If this file is not existed, POS4EDC will generate it automatically
1.3 SERVICES
Function Description
Regular - Purchase Request purchase to EDC
Regular - Purchase Void Request void purchase to EDC with trace number
Regular - Refund Request refund to EDC
Regular - Preauth Request preauth to EDC
Regular - Preauth Completion Request preauth completion to EDC
Regular - Manual Purchase Request manual purchase to EDC
Regular - Manual Refund Request manual refund to EDC
Regular - Manual Preauth Request manual preauth to EDC
Regular - Manual Preauth Request manual preauth completion to EDC
Completion
Regular - TIP adjust Request TIP adjust to EDC
Regular - Settlement Request settlement to EDC
Regular - Card Info Request card information to EDC
Regular - Paper Check Request paper present check
Regular - Echo Test Request echo test to EDC
Regular – Menu Reprint Request menu reprint to EDC
Regular - Last Transaction Request last transaction to EDC
Regular - Any Transaction Request Any transaction to EDC
Regular - Last Settlement Request last settlement to EDC
Regular – Menu Report Request menu report to EDC
Regular - Audit Report Request Audit Report to EDC
Regular - Summary Report Request Summary Report to EDC
Regular - Card Info Reguler Request Card Info Reguler to EDC
Regular – Menu QRIS Domestik Request menu QRIS Domestik to EDC
Regular - QRIS Generate Request QRIS Generate to EDC
Regular - QRIS Inquiry Stat Last Request QRIS Inquiry Stat Last to EDC
Regular - QRIS Inquiry Stat Any Request QRIS Inquiry Stat Any to EDC
Regular - QRIS Refund Request QRIS Refund to EDC
Regular – Menu QRIS LinkAja Request menu QRIS LinkAja to EDC
Regular - Link Aja Print QR Request Link Aja Print QR to EDC
Regular - Link Aja Last Request Link Aja Print Last Transactin to EDC
Transaction
Regular - Link Aja Any Request Link Aja Print Any Transactin to EDC
Transaction
Mandiri - Tarik Tunai Request Tarik Tunai(cash withdrawal) to EDC
2. API DESCRIPTION
API supported by POS4EDC can be divided service request, service result request and service
create/status/terminates based on the its function.
2.2.3 Refund
2.2.4 Preauth
Ex)
00000001|000000000001|
MASTERCARD|553210*********5437|SWIPE|
SALE|000001|000001|06Mar2012|10:52:28|
123456789012|123456|5,500|1IDR=CNY
0.0005521| 1% | Yuan Renminbi | CNY 5.52
2.4.8 VOID
NO Data Name Example Note
1 Terminal ID 00000001
2 Merchant ID 7100000000000001
3 CARD TYPE MASTERCARD
4 PAN 553210************5437
5 Entry Code SWIPE SWIPE/DIP/RF
6 TRANSACTION TYPE SALE
7 BATCH NUMBER 000001
8 TRACE NUMBER 000001
9 Transaction Date 06 Mar 2017
10 Transaction Time 10:52:33
11 Reference # 123456789012
12 Approval Code 123456
13 Sale Amount 20,000
14 Cashout 5,000
15 Total Amount 25,000 13+14
Ex)
00000001|000000000001|
MASTERCARD|553210*********5437|SWIPE|
VOID SALE|000001|000001|06Mar2012|10:52:28|
123456789012|123456|5,000
2.4.16 SETTLEMENT
NO Data Name Example Note
1 Status Settlement 1 Always 1
2 Host MANDIRI
3 Terminal ID 00000001
4 Merchant ID 7100000000000001
5 Batch # 000002
6 Transaction Date 06 Mar 2017
7 Transaction Time 10:52:33
8 Grand Total GRAND TOTAL
9 Total Sale Count 3
10 Total Sale Amount 50,000
11 Debit Count Transaction 1
12 Debit Amount Transaction 10,000
13 Credit Count Transaction 1
14 Credit Amount Transaction 20,000
15 NPG Count Transaction 1
16 NPG Amount Transaction 20,000
17 Transaction PREPAID
18 Prepaid Sale Count 0
19 Prepaid Sale Amount 0
20 Prepaid Topup Count 0
21 Prepaid Topup Amount 0
22 Transaction VOID
23 Total Count 2
24 Total Amount 20,000
25 Transaction REFUND
26 Total Count 2
27 Total Amount 20,000
28 Transaction PREAUTH
29 Total Count 2
30 Total Amount 20,000
Ex)
REGULAR
NO Data Name Example Note
1 Terminal ID 00000001
2 Merchant ID 7100000000000001
3 CARD TYPE MASTERCARD
4 PAN 553210************5437
‘Declaration
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_ReqEchoTest();
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_COMCreate();
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_COMStatus();
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_ServiceTerminate();
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_GetResponseData(StringBuilder ResData);
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_Purchase(StringBuilder amount, StringBuilder add_amount,
StringBuilder optcode1, StringBuilder optcode2, StringBuilder optcode3, StringBuilder
optcode4, StringBuilder optcode5, StringBuilder optcode6, StringBuilder optcode7,
StringBuilder optcode8, StringBuilder optcode9, StringBuilder optcode10);
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_GetResponseCode(StringBuilder ResCode);
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_Void(StringBuilder tracenumber);
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_Refund(StringBuilder amount);
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_Settlement();
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_ManualPurchase(StringBuilder amount, StringBuilder
addamount);
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_Preauth(StringBuilder amount);
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_ManualPreauth(StringBuilder amount);
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_PreauthCompletion(StringBuilder amount, StringBuilder
addamount);
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_ManualPreauthCompletion(StringBuilder amount,
StringBuilder addamount);
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_ManualRefund(StringBuilder amount);
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_TIPAdjust(StringBuilder trace, StringBuilder amount);
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_TarikTunai(StringBuilder amount, StringBuilder cashout);
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_ReqCardInfo();
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_ReqLastReSend();
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_CheckPaper();
[DllImport("POS4CAT_Ctl.dll")]
publicstaticexternint POS4EDC_ECASH(StringBuilder amount);
[DllImport("POS4CAT_Ctl.dll")]
‘Function Execute
privatevoid Sale_Click(object sender, EventArgs e)
{
int ret;
MSG1.Text = "";
MSG2.Text = "";
ret = POS4EDC_COMCreate();
if (ret == 0)
if (ret == 0)
{
ret = POS4EDC_COMStatus();
if (ret == 0)
{
ret = POS4EDC_GetResponseCode(strResCode);
if (ret == 0)
{
if (strResCode.ToString() == "00")
{
ret = POS4EDC_GetResponseData(strResData);
if (ret == 0)
{
//MessageBox.Show(strResData.ToString(), "Approved");
MSG1.Text = "Approved";
MSG2.Text = strResData.ToString();
}
elseif (ret == -1)
{
//MessageBox.Show("Response data is not exist");
MSG1.Text = "Failed";
MSG2.Text = "Response data is not exist";
}
elseif (ret == -2)
{
//MessageBox.Show("There is no such data in service");
MSG1.Text = "Failed";
MSG2.Text = "There is no such data in service";
}
elseif (ret == -3)
{
//MessageBox.Show("Couldnt find data in response messsage");
MSG1.Text = "Failed";
MSG2.Text = "Couldnt find data in response
messsage";
}
else
{
//MessageBox.Show("Unknown error");
MSG1.Text = "Failed";
MSG2.Text = "Unknown error";
}
POS4EDC_ServiceTerminate();
}
if (ret == 0)
{
//MessageBox.Show(strResData.ToString(), "Rejected");
//MSG1.Text = "Rejected";
MSG1.Text = "Rejected - " + strResCode.ToString();
MSG2.Text = strResData.ToString();
}
elseif (ret == -1)
{
//MessageBox.Show("Response data is not exist");
MSG1.Text = "Failed";
MSG2.Text = "Response data is not exist";
}
elseif (ret == -2)
{
//MessageBox.Show("There is no such data in service");
MSG1.Text = "Failed";
MSG2.Text = "There is no such data in service";
}
elseif (ret == -3)
{
//MessageBox.Show("Couldnt find data in response messsage");
MSG1.Text = "Failed";
MSG2.Text = "Couldnt find data in response
messsage";
}
else
{
//MessageBox.Show("Unknown error");
MSG1.Text = "Failed";
MSG2.Text = "Unknown error";
}
POS4EDC_ServiceTerminate();
}
}
elseif (ret == -1)
{
}
elseif (ret == -2)
{
//MessageBox.Show("There is no such data in service");
MSG1.Text = "Failed";
MSG2.Text = "There is no such data in service";
}
}
else
{
POS4EDC_ServiceTerminate();
//MessageBox.Show("Error on POS4CAT_COMStatus");
MSG1.Text = "Failed";
MSG2.Text = "Error on POS4CAT_COMStatus";
}
}
else
{
//MessageBox.Show("Error on POS4EDC_Purchase");
MSG1.Text = "Failed";
MSG2.Text = "Error on POS4EDC_Purchase";
}
}
else
{
//MessageBox.Show("COM create error");
MSG1.Text = "Failed";
MSG2.Text = "COM create error";
}