1
0

dummyPemko4002.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. const http = require('http');
  2. const server = http.createServer((req, res) => {
  3. let body = '';
  4. let hasInquiry = false;
  5. let hasPayment = true
  6. req.on('data', (chunk) => {
  7. body += chunk;
  8. });
  9. req.on('end', () => {
  10. hasInquiry = /<(\w+:)?Inquiry\b/.test(body);
  11. hasPayment = /<(\w+:)?Payment\b/.test(body);
  12. if (req.url === '/dummy-pemko-4002' && req.method === 'POST') {
  13. const xmlInquiryResponse = `<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  14. <SOAP-ENV:Body>
  15. <InquiryResponse xmlns="http://BTN-PEMKO-TANJUNGPINANG/">
  16. <rsp>000</rsp>
  17. <resdesc>Success</resdesc>
  18. <ref>ESB544600779</ref>
  19. <sysReferenceNo>APIM20251229185135</sysReferenceNo>
  20. <dataRes>
  21. <jenisPajak>1</jenisPajak>
  22. <nop>21.74.020.004.014-0912.0</nop>
  23. <tahun>2025</tahun>
  24. <dataWajibPajak>
  25. <namaWP>HERI KUNCORO</namaWP>
  26. <provinsiWP></provinsiWP>
  27. <kotaWP></kotaWP>
  28. <kecamatanWP></kecamatanWP>
  29. <kelurahanWP></kelurahanWP>
  30. <RTRWWP></RTRWWP>
  31. <alamatWP>JL KAMPUNG SRIMULYO GG KELINCI NO 19</alamatWP>
  32. </dataWajibPajak>
  33. <dataTagihan>
  34. <jumlahTagihan>85537</jumlahTagihan>
  35. <pokok>83046</pokok>
  36. <denda>2491</denda>
  37. <biayaAdmin>0</biayaAdmin>
  38. <diskon>0</diskon>
  39. </dataTagihan>
  40. <additionalInfo>
  41. <kodeKp>0</kodeKp>
  42. <kodeRek>0</kodeRek>
  43. <idTransaksi>0</idTransaksi>
  44. <masa>0</masa>
  45. <noSk>0</noSk>
  46. <jatuhTempo>2025-09-30T00:00:00Z</jatuhTempo>
  47. </additionalInfo>
  48. </dataRes>
  49. </InquiryResponse>
  50. </SOAP-ENV:Body>
  51. </SOAP-ENV:Envelope>`;
  52. const xmlPaymentResponse = `<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  53. <SOAP-ENV:Body>
  54. <PaymentResponse xmlns="http://BTN-PEMKO-TANJUNGPINANG/">
  55. <rsp>000</rsp>
  56. <resdesc>Success</resdesc>
  57. <ref>ESB544600779</ref>
  58. <sysReferenceNo>APIM20251229185135</sysReferenceNo>
  59. <dataRes>
  60. <jenisPajak>1</jenisPajak>
  61. <nop>21.74.020.004.014-0912.0</nop>
  62. <tahun>2025</tahun>
  63. <dataWajibPajak>
  64. <namaWP>HERI KUNCORO</namaWP>
  65. <provinsiWP></provinsiWP>
  66. <kotaWP></kotaWP>
  67. <kecamatanWP></kecamatanWP>
  68. <kelurahanWP></kelurahanWP>
  69. <RTRWWP></RTRWWP>
  70. <alamatWP>JL KAMPUNG SRIMULYO GG KELINCI NO 19</alamatWP>
  71. </dataWajibPajak>
  72. <dataTagihan>
  73. <jumlahTagihan>85537</jumlahTagihan>
  74. <pokok>83046</pokok>
  75. <denda>2491</denda>
  76. <biayaAdmin>0</biayaAdmin>
  77. <diskon>0</diskon>
  78. </dataTagihan>
  79. <additionalInfo>
  80. <kodeKp>0</kodeKp>
  81. <kodeRek>0</kodeRek>
  82. <idTransaksi>0</idTransaksi>
  83. <masa>0</masa>
  84. <noSk>0</noSk>
  85. <jatuhTempo>2025-09-30T00:00:00Z</jatuhTempo>
  86. </additionalInfo>
  87. </dataRes>
  88. </PaymentResponse>
  89. </SOAP-ENV:Body>
  90. </SOAP-ENV:Envelope>`;
  91. if(hasInquiry) {
  92. res.writeHead(200, { 'Content-Type': 'text/xml; charset=ISO-8859-1' });
  93. res.end(xmlInquiryResponse);
  94. } else if (hasPayment) {
  95. res.writeHead(200, { 'Content-Type': 'text/xml; charset=ISO-8859-1' });
  96. res.end(xmlPaymentResponse);
  97. } else {
  98. res.writeHead(404, { 'Content-Type': 'text/plain' });
  99. res.end('Not found');
  100. }
  101. } else {
  102. res.writeHead(404, { 'Content-Type': 'text/plain' });
  103. res.end('Not found');
  104. }
  105. });
  106. });
  107. server.listen(3002, () => {
  108. console.log('SOAP dummy running at http://localhost:3002/dummy-pemko-4002');
  109. });