__init__.py
5.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
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},
}
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