__init__.py
6.13 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
116
117
118
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
vsi_status = {
"11": {"message": "ERROR NEED TO SIGN ON", "status": -3, "code": 99},
"12": {"message": "ERROR Tidak bisa dibatalkan", "status": -1, "code": 68},
"13": {"message": "ERROR Nilai Transaksi tidak valid", "status": -3, "code": 99},
"17": {"message": "ERROR ID Punya Tunggakan", "status": -3, "code": 99},
"88": {"message": "ERROR Tagihan sudah dibayar", "status": -3, "code": 54},
"89": {"message": "ERROR Tagihan tidak tersedia", "status": -3, "code": 55},
"14": {"message": "ERROR ID Tidak Terdaftar", "status": -3, "code": 55},
"15": {"message": "ERROR No Meter Tidak Terdaftar", "status": -3, "code": 55},
"33": {"message": "ERROR Produk tidak terdaftar", "status": -3, "code": 55},
"31": {"message": "ERROR Kode Bank tidak terdaftar", "status": -3, "code": 55},
"32": {"message": "ERROR Sentral tidak terdaftar", "status": -3, "code": 55},
"16": {"message": "ERROR PRR SUBSCRIBER", "status": -3, "code": 55},
"34": {"message": "ERROR PPID Tidak terdaftar", "status": -3, "code": 55},
"35": {"message": "ERROR Akun Tidak Terdaftar", "status": -3, "code": 55},
"53": {"message": "ERROR Produk tidak ditemukan", "status": -3, "code": 55},
"56": {"message": "ERROR Nomor Telpon Tidak diketahui", "status": -3, "code": 55},
"18": {"message": "ERROR Permintaan Sedang diproses", "status": -1, "code": 68},
"26": {"message": "Quota Transaksi Agen Tidak Mencukupi. Silahkan Kontak Agen.", "status": 0, "code": 68},
"29": {"message": "ERROR Kode Hash tidak valid", "status": -2, "code": 68},
"30": {"message": "ERROR Pesan tidak valid", "status": -2, "code": 68},
"46": {"message": "ERROR Deposit Tidak Mencukupi", "status": -2, "code": 68},
"52": {"message": "ERROR Transaksi dipending dari Mesin Vending", "status": -1, "code": 68 },
"68": {"message": "ERROR Timeout", "status": -1, "code": 68 },
"70": {"message": "ERROR Timeout tidak refund", "status": -1, "code": 68},
"73": {"message": "ERROR Request dipending di Biller", "status": -1, "code": 68},
"51": {"message": "ERROR Transaksi Gagal dari Mesin Vending", "status": -3, "code": 99},
"41": {"message": "ERROR Nilai Transaksi dibawah Nilai Minimum", "status": -3, "code": 99},
"42": {"message": "ERROR Nilai Transaksi diatas Nilai Maximum", "status": -3, "code": 99},
"43": {"message": "ERROR Daya Baru Lebih Kecil dari Daya Sekarang", "status": -3, "code": 99},
"44": {"message": "ERROR Nilai Daya Tidak Valid", "status": -3, "code": 99},
"45": {"message": "ERROR Nilai Biaya Administrasi Tidak Valid", "status": -3, "code": 99},
"47": {"message": "ERROR Diluar Batas KWH", "status": -3, "code": 99},
"48": {"message": "ERROR Permintaan sudah kadaluarsa", "status": -3, "code": 99},
"54": {"message": "ERROR Jawaban dari Biller Tidak ditemukan", "status": -3, "code": 99},
"55": {"message": "ERROR Lainnya Mesin Vending", "status": -3, "code": 99},
"63": {"message": "ERROR Tidak ada Pembayaran", "status": -3, "code": 99},
"60": {"message": "ERROR Akun sudah didaftarkan", "status": -3, "code": 99},
"67": {"message": "ERROR CANNOT CONNECT", "status": -3, "code": 99},
"69": {"message": "ERROR Sertifikat tidak dikenal", "status": -3, "code": 99},
"72": {"message": "ERROR Permintaan tidak mungkin dilayani", "status": -3, "code": 99},
"77": {"message": "ERROR Id di suspend", "status": -2, "code": 68},
"90": {"message": "ERROR sedang proses CUT OFF", "status": -3, "code": 99},
"91": {"message": "ERROR Database", "status": -3, "code": 99},
"92": {"message": "ERROR Nomor Referensi Switching tidak ditemukan", "status": -3, "code": 99},
"93": {"message": "ERROR Nomor Referensi Switching tidak valid", "status": -3, "code": 99},
"94": {"message": "ERROR Pembatalan sudah dilakukan", "status": -3, "code": 99},
"95": {"message": "ERROR Kode Merchant tidak terdaftar", "status": -3, "code": 99},
"96": {"message": "ERROR Transaksi tidak ditemukan", "status": -3, "code": 99},
"97": {"message": "ERROR SW BANK Tidak identik", "status": -3, "code": 99},
"98": {"message": "ERROR Nomor Referensi Switching tidak valid", "status": -3, "code": 99},
"146": {"message": "ERROR di servis deposit", "status": -3, "code": 99},
"500": {"message": "ERROR Other Error", "status": -2, "code": 68},
"400": {"message": "ERROR Other Error", "status": -2, "code": 68},
"999": {"message": "ERROR Other Error", "status": -2, "code": 68},
}
from ..vendor import VendorClass
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