From aa561d430c00d5fdea29a1942b957557a12cd278 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <gua@adhisimon.org>
Date: Fri, 20 May 2016 15:17:30 +0700
Subject: [PATCH] sn

---
 partner-kospinjasa.js | 69 ++++++++++++++++++++++++++++++++-------------------
 1 file changed, 43 insertions(+), 26 deletions(-)

diff --git a/partner-kospinjasa.js b/partner-kospinjasa.js
index d383868..cf4e922 100644
--- a/partner-kospinjasa.js
+++ b/partner-kospinjasa.js
@@ -108,111 +108,128 @@ function topupResponseHandler(task, response) {
     var st24rc = '68';
     var st24message = response.outputParameter.resultDesc.$value;
 
-    if ( response.outputParameter.resultCode.$value == '001' ) {
+    var resultCode = parseInt(response.outputParameter.resultCode.$value);
+    var bit39 = parseInt(response.outputParameter.bit39.$value);
+
+    if ( resultCode == 1 ) {
         // product disabled
         st24rc = '13';
     }
-    else if ( response.outputParameter.resultCode.$value == '002' ) {
+    else if ( resultCode == 2 ) {
         // prodcode disable
         st24rc = '13';
     }
-    else if ( response.outputParameter.resultCode.$value == '003' ) {
+    else if ( resultCode == 3 ) {
         // duplicate reff
         st24rc = '55';
     }
-    else if ( response.outputParameter.resultCode.$value == '004' ) {
+    else if ( resultCode == 4 ) {
         // not enough balance
         st24rc = '40';
     }
-    else if ( response.outputParameter.resultCode.$value == '005' ) {
+    else if ( resultCode == 5 ) {
         // username blocked
         st24rc = '40';
     }
-    else if ( response.outputParameter.resultCode.$value == '006' ) {
+    else if ( resultCode == 6 ) {
         // not exists username
         st24rc = '40';
     }
-    else if ( response.outputParameter.resultCode.$value == '011' ) {
+    else if ( resultCode == 11 ) {
         // invalid request
         st24rc = '40'
     }
-    else if ( response.outputParameter.resultCode.$value == '012' ) {
+    else if ( resultCode == 12 ) {
         // no route to host
         st24rc = '40'
     }
-    else if ( response.outputParameter.resultCode.$value == '013' ) {
+    else if ( resultCode == 13 ) {
         // invalid signature
         st24rc = '40'
     }
-    else if ( response.outputParameter.bit39.$value == '06' ) {
+    else if ( bit39 == 6 ) {
         st24rc = '40';
         st24message = 'Error Transaksi ditolak karena terjadi error di H2H dengan response code diluar daftar ini. Silahkan hubungi H2H';
     }
-    else if ( response.outputParameter.bit39.$value == '12' ) {
+    else if ( bit39 == 12 ) {
         st24rc = '40';
         st24message = 'Invalid Transaction Transaksi ditolak karena flow transaksi tidak valid';
     }
-    else if ( response.outputParameter.bit39.$value == '13' ) {
+    else if ( bit39 == 13 ) {
         st24rc = '13';
         st24message = 'Invalid voucher nominal';
     }
-    else if ( response.outputParameter.bit39.$value == '14' ) {
+    else if ( bit39 == 14 ) {
         st24rc = '14';
         st24message = 'MSISDN tidak ditemukan';
     }
-    else if ( response.outputParameter.bit39.$value == '30' ) {
+    else if ( bit39 == 30 ) {
         st24rc = '40';
         st24message = 'Format Error';
     }
-    else if ( response.outputParameter.bit39.$value == '31' ) {
+    else if ( bit39 == 31 ) {
         st24rc = '40';
         st24message = 'Kode bank tidak terdaftar';
     }
-    else if ( response.outputParameter.bit39.$value == '63' ) {
+    else if ( bit39 == 63 ) {
         st24rc = '40';
         st24message = 'Reversal denied';
     }
-    else if ( response.outputParameter.bit39.$value == '68' ) {
+    else if ( bit39 == 68 ) {
         st24rc = '68';
         st24message = 'Transaksi sedang dalam proses';
     }
-    else if ( response.outputParameter.bit39.$value == '69' ) {
+    else if ( bit39 == 69 ) {
         st24rc = '68';
         st24message = 'Respon Ok lebih dari 24 detik';
     }
-    else if ( response.outputParameter.bit39.$value == '70' ) {
+    else if ( bit39 == 70 ) {
         st24rc = '13';
         st24message = 'Voucher out of stock';
     }
-    else if ( response.outputParameter.bit39.$value == '79' ) {
+    else if ( bit39 == 79 ) {
         st24rc = '14';
         st24message = 'Phone number is blocked by Telkomsel';
     }
-    else if ( response.outputParameter.bit39.$value == '81' ) {
+    else if ( bit39 == 81 ) {
         st24rc = '14';
         st24message = 'Phone number is expired';
     }
-    else if ( response.outputParameter.bit39.$value == '89' ) {
+    else if ( bit39 == 89 ) {
         st24rc = '40';
         st24message = 'Link to billing provider is down';
     }
-    else if ( response.outputParameter.bit39.$value == '91' ) {
+    else if ( bit39 == 91 ) {
         st24rc = '40';
         st24message = 'Database problem';
     }
-    else if ( response.outputParameter.bit39.$value == '92' ) {
+    else if ( bit39 == 92 ) {
         st24rc = '40';
         st24message = 'Unable to route transaction';
     }
-    else if ( response.outputParameter.bit39.$value == '94' ) {
+    else if ( bit39 == 94 ) {
         st24rc = '40';
         st24message = 'Duplicate reversal request';
     }
+    else if ( resultCode == 0 && bit39 == 0) {
+
+        var sn = '';
+
+        try {
+            sn = response.outputParameter.bit61.$value.substring(43);
+        }
+        except(e) {
+            sn = '';
+        }
+
+        st24message = 'SN=' + sn + '; ' + st24message;
+        st24rc = '00';
+    }
 
     var message =
         response.outputParameter.resultCode.$value
         + " " + response.outputParameter.resultDesc.$value
-        + "; " + response.outputParameter.bit39.$value
+        + "; BIT39: " + response.outputParameter.bit39.$value
         ;
 
     if (response.outputParameter.resultDesc.$value != st24message) {
-- 
1.9.0