__init__.py
5.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import base64
import hashlib
import json
from datetime import datetime
import requests
import xmltodict
from opensipkd.base import get_settings
from opensipkd.pasar.models import Partner, PartnerProduk, Produk
from pyramid_rpc.jsonrpc import JsonRpcError
from ..vendor import VendorClass
vsi_status = {
"11": {"message": "ERROR NEED TO SIGN ON", "status": -1},
"12": {"message": "ERROR Tidak bisa dibatalkan", "status": -1},
"13": {"message": "ERROR Nilai Transaksi tidak valid", "status": -3},
"14": {"message": "ERROR ID Tidak Terdaftar", "status": -3},
"15": {"message": "ERROR No Meter Tidak Terdaftar", "status": -3},
"16": {"message": "ERROR PRR SUBSCRIBER", "status": -3},
"17": {"message": "ERROR ID Punya Tunggakan", "status": -3},
"18": {"message": "ERROR Permintaan Sedang diproses", "status": -1},
"26": {"message": "Quota Transaksi Agen Tidak Mencukupi. Silahkan Kontak Agen.", "status": -2},
"29": {"message": "ERROR Kode Hash tidak valid", "status": -2},
"30": {"message": "ERROR Pesan tidak valid", "status": -2},
"31": {"message": "ERROR Kode Bank tidak terdaftar", "status": -2},
"32": {"message": "ERROR Sentral tidak terdaftar", "status": -2},
"33": {"message": "ERROR Produk tidak terdaftar", "status": -2},
"34": {"message": "ERROR PPID Tidak terdaftar", "status": -2},
"35": {"message": "ERROR Akun Tidak Terdaftar", "status": -2},
"41": {"message": "ERROR Nilai Transaksi dibawah Nilai Minimum", "status": -2},
"42": {"message": "ERROR Nilai Transaksi diatas Nilai Maximum", "status": -2},
"43": {"message": "ERROR Daya Baru Lebih Kecil dari Daya Sekarang", "status": -3},
"44": {"message": "ERROR Nilai Daya Tidak Valid", "status": -3},
"45": {"message": "ERROR Nilai Biaya Administrasi Tidak Valid", "status": -3},
"46": {"message": "ERROR Deposit Tidak Mencukupi", "status": -2},
"47": {"message": "ERROR Diluar Batas KWH", "status": -3},
"48": {"message": "ERROR Permintaan sudah kadaluarsa", "status": -3},
"51": {"message": "ERROR Transaksi Gagal dari Mesin Vending", "status": -3},
"52": {"message": "ERROR Transaksi dipending dari Mesin Vending", "status": -1},
"53": {"message": "ERROR Produk tidak ditemukan", "status": -1},
"54": {"message": "ERROR Jawaban dari Biller Tidak ditemukan", "status": -3},
"55": {"message": "ERROR Lainnya Mesin Vending", "status": -2},
"56": {"message": "ERROR Nomor Telpon Tidak diketahui", "status": -3},
"63": {"message": "ERROR Tidak ada Pembayaran", "status": -1},
"60": {"message": "ERROR Akun sudah didaftarkan", "status": -3},
"67": {"message": "ERROR CANNOT CONNECT", "status": -3},
"68": {"message": "ERROR Timeout", "status": -2},
"69": {"message": "ERROR Sertifikat tidak dikenal", "status": -2},
"70": {"message": "ERROR Timeout tidak refund", "status": -1},
"72": {"message": "ERROR Permintaan tidak mungkin dilayani", "status": -2},
"73": {"message": "ERROR Request dipending di Biller", "status": -1},
"77": {"message": "ERROR Id di suspend", "status": -2},
"88": {"message": "ERROR Tagihan sudah dibayar", "status": -3},
"89": {"message": "ERROR Tagihan tidak tersedia", "status": -3},
"90": {"message": "ERROR sedang proses CUT OFF", "status": -1},
"91": {"message": "ERROR Database", "status": -1},
"92": {"message": "ERROR Nomor Referensi Switching tidak ditemukan", "status": -2},
"93": {"message": "ERROR Nomor Referensi Switching tidak valid", "status": -2},
"94": {"message": "ERROR Pembatalan sudah dilakukan", "status": -3},
"95": {"message": "ERROR Kode Merchant tidak terdaftar", "status": -2},
"96": {"message": "ERROR Transaksi tidak ditemukan", "status": -3},
"97": {"message": "ERROR SW BANK Tidak identik", "status": -2},
"98": {"message": "ERROR Nomor Referensi Switching tidak valid", "status": -2},
"146": {"message": "ERROR di servis deposit", "status": -1},
"500": {"message": "ERROR Other Error", "status": -1},
"400": {"message": "ERROR Other Error", "status": -1},
"999": {"message": "ERROR Other Error", "status": -1},
}
class Vendor(VendorClass):
def __init__(self, vendor_produk, invoice_det, **kwargs):
# customer_id=None,
# cust_trx_id=None, row=None):
"""
:param produk_kd:
merupakan kode produk versi vendor
:param trx_id:
kode unik transaksi
:param cid:
merupakan customer id seperti MSN dan atu id pelanggaan
"""
VendorClass.__init__(self, vendor_produk=vendor_produk,
invoice_det=invoice_det)
# , customer_id, cust_trx_id, row)
settings = get_settings()
self.mid = 'vsi_mid' in settings and settings['vsi_mid'] or None
self.key = 'vsi_key' in settings and settings['vsi_key'] or None
self.url = 'vsi_url' in settings and settings['vsi_url'] or None
def get_hc(self, tanggal):
hash_string = "".join([self.mid, tanggal, self.key])
self.auth = hashlib.sha256(hash_string.encode()).hexdigest()
return self.auth
def get_params(self, cmd, msn=None, idpel=None, modul=None):
tanggal = datetime.now().strftime('%Y%m%d')
params = dict(
cid=self.mid,
dt=tanggal,
hc=self.get_hc(tanggal),
modul=modul,
command=cmd,
resp='XML',
trxid=self.invoice_det.id,
)
if msn:
params['msn'] = msn
if idpel:
params['idpel'] = idpel
return params