dummyMP0004.js 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. const http = require('http');
  2. const server = http.createServer((req, res) => {
  3. let body = '';
  4. let hasInquiry = false;
  5. let hasPayment = false
  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-ws-mp-0004' && req.method === 'POST') {
  13. const xmlInquiryResponse = `<?xml version="1.0" encoding="utf-8"?>
  14. <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">
  15. <SOAP-ENV:Body>
  16. <InquiryResponse xmlns="http://BTN-SNAP-UNDIP/">
  17. <rsp>000</rsp>
  18. <rspdesc>Success</rspdesc>
  19. <requestId>18260811134140</requestId>
  20. <reference>18</reference>
  21. <virtualAccountData>
  22. <virtualAccountNumber>9000140040625650097</virtualAccountNumber>
  23. <virtualAccountTrxType>F</virtualAccountTrxType>
  24. <virtualAccountName>Saifuddin Surya Basunjaya</virtualAccountName>
  25. <customerNumber>40040625650097</customerNumber>
  26. <totalAmount>8500000</totalAmount>
  27. </virtualAccountData>
  28. <additionalData>
  29. <semester>Ganjil 2026/2027</semester>
  30. <fakultas>SEKOLAH VOKASI</fakultas>
  31. <prodi>D4-Teknik Listrik Industri</prodi>
  32. <angkatan>2025</angkatan>
  33. </additionalData>
  34. </InquiryResponse>
  35. </SOAP-ENV:Body>
  36. </SOAP-ENV:Envelope>`;
  37. const xmlPaymentResponse = `<?xml version="1.0" encoding="utf-8"?>
  38. <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">
  39. <SOAP-ENV:Body>
  40. <PaymentResponse xmlns="http://BTN-SNAP-UNDIP/">
  41. <rsp>000</rsp>
  42. <rspdesc>Success</rspdesc>
  43. <requestId>19260811134157</requestId>
  44. <reference>19</reference>
  45. <transactionDate>2026-08-11T13:42:00+07:00</transactionDate>
  46. <virtualAccountData>
  47. <virtualAccountNumber>9000140040625650097</virtualAccountNumber>
  48. <virtualAccountName>Saifuddin Surya Basunjaya</virtualAccountName>
  49. <customerNumber>40040625650097</customerNumber>
  50. <paidAmount>8500000</paidAmount>
  51. </virtualAccountData>
  52. <additionalData>
  53. <semester>Ganjil 2026/2027</semester>
  54. <fakultas>SEKOLAH VOKASI</fakultas>
  55. <prodi>D4-Teknik Listrik Industri</prodi>
  56. <angkatan>2025</angkatan>
  57. <jalur> </jalur>
  58. </additionalData>
  59. </PaymentResponse>
  60. </SOAP-ENV:Body>
  61. </SOAP-ENV:Envelope>`;
  62. if(hasInquiry) {
  63. res.writeHead(200, { 'Content-Type': 'text/xml; charset=ISO-8859-1' });
  64. res.end(xmlInquiryResponse);
  65. } else if (hasPayment) {
  66. res.writeHead(200, { 'Content-Type': 'text/xml; charset=ISO-8859-1' });
  67. res.end(xmlPaymentResponse);
  68. } else {
  69. res.writeHead(404, { 'Content-Type': 'text/plain' });
  70. res.end('Not found');
  71. }
  72. } else {
  73. res.writeHead(404, { 'Content-Type': 'text/plain' });
  74. res.end('Not found');
  75. }
  76. });
  77. });
  78. server.listen(3201, () => {
  79. console.log('SOAP dummy running at http://localhost:3201/dummy-ws-mp-0004');
  80. });