Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Kunto
/
backoffice
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit 9c5c9f17
authored
Mar 10, 2020
by
yasir
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
update dummy
1 parent
40a9e90a
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
428 additions
and
32 deletions
src/agratek/api/merchant/views/odeo/__init__.py
src/agratek/api/merchant/views/odeo/dummy.py
src/agratek/api/merchant/views/vendor.py
src/agratek/api/merchant/views/odeo/__init__.py
View file @
9c5c9f1
...
...
@@ -9,7 +9,7 @@ from opensipkd.pasar.models import PartnerProduk, H2hArInvoiceDet
from
..vendor
import
VendorClass
from
.dummy
import
Lolable
from
.dummy
import
Lolable
,
kirim_notify
import
logging
...
...
@@ -25,6 +25,9 @@ timeout = 30
class
Vendor
(
VendorClass
):
def
__init__
(
self
,
vendor_produk
,
invoice_det
):
VendorClass
.
__init__
(
self
,
vendor_produk
,
invoice_det
=
invoice_det
)
print
(
'masuk vendor odeo >>'
)
# id_pel, customer_id, cust_trx, row
settings
=
get_settings
()
self
.
mid
=
'odeo_mid'
in
settings
and
settings
[
'odeo_mid'
]
or
None
...
...
@@ -40,6 +43,7 @@ class Vendor(VendorClass):
return
url
and
self
.
url
+
url
or
self
.
url
def
_inquiry
(
self
):
print
(
'masuk inquiry odeo>>>'
)
if
self
.
v_produk_kd
[:
3
]
==
'PLN'
and
self
.
v_produk_kd
!=
'PLNPASCA'
:
params
=
dict
(
number
=
self
.
id_pel
,
...
...
@@ -57,12 +61,30 @@ class Vendor(VendorClass):
log
.
info
(
"Inquiry Request: url:
%
s params
%
s"
%
(
url
,
params
))
self
.
save_log
(
"inquiry"
)
try
:
resp
=
requests
.
get
(
url
,
params
=
params
,
verify
=
False
,
headers
=
self
.
get_headers
())
except
Exception
as
e
:
log
.
info
(
e
)
return
# try:
# lolable = Lolable(self.vendor_produk, self.invoice_det)
# # resp = lolable.stupeed(json.dumps(params))
# resp = lolable.inquat(json.dumps(params))
# print('resp_inquat >>')
# print(resp_dummy)
# # resp = requests.get(url, params=params, verify=False,
# # headers=self.get_headers())
# except Exception as e:
# log.info(e)
# print('error lolable >>')
# print(e)
# return
lolable
=
Lolable
(
self
.
vendor_produk
,
self
.
invoice_det
)
resp
=
lolable
.
inquat
(
json
.
dumps
(
params
))
print
(
'resp_inquat >>'
)
print
(
resp
)
return
resp
def
inquiry
(
self
):
...
...
@@ -107,7 +129,10 @@ class Vendor(VendorClass):
def
payment
(
self
):
# Jika kategory bukan e-pulsa Call Inquiry First
parsd
=
None
print
(
'masuk payment odeo >>'
)
if
self
.
vendor_produk
.
produk
.
kategori
.
kode
!=
"e-pulsa"
:
print
(
'bukan kategori odeo e-pulsa >>'
)
resp
=
self
.
_inquiry
()
if
resp
is
None
or
not
resp
.
text
:
log
.
info
(
"Resp Tidak Ada, {}"
.
format
(
resp
))
...
...
@@ -139,8 +164,9 @@ class Vendor(VendorClass):
return
self
.
set_pending
(
typ
=
"inquiry"
)
if
not
parsd
:
return
self
.
set_pending
(
typ
=
"inquir
u
"
)
return
self
.
set_pending
(
typ
=
"inquir
y
"
)
print
(
'kategori odeo e-pulsa >>'
)
params
=
dict
(
data
=
dict
(
denom
=
self
.
v_produk_kd
,
...
...
@@ -158,16 +184,10 @@ class Vendor(VendorClass):
# resp = requests.post(url, data=json.dumps(params), verify=False,
# headers=self.get_headers(), timeout=timeout)
lolable
=
Lolable
(
self
.
vendor_produk
.
produk
.
kategori
.
kode
)
lolable
=
Lolable
(
self
.
vendor_produk
,
self
.
invoice_det
)
resp
=
lolable
.
stupeed
(
json
.
dumps
(
params
))
print
(
'resp_dummy.text >>'
)
print
(
resp_dummy
.
text
)
print
(
'resp_beneran.text >>'
)
print
(
resp
.
text
)
except
:
except
Exception
as
e
:
print
(
e
)
resp
=
None
if
resp
is
None
or
not
resp
.
text
:
...
...
@@ -203,8 +223,11 @@ class Vendor(VendorClass):
elif
data
[
"rc"
]
==
"68"
:
# Pending
return
self
.
set_pending
(
parsd
,
typ
=
"payment"
)
else
:
self
.
serial_number
=
'serial_number'
in
data
and
data
[
"serial_num
n
er"
]
\
self
.
serial_number
=
'serial_number'
in
data
and
data
[
"serial_num
b
er"
]
\
or
self
.
serial_number
kirim_notify
(
self
.
invoice_det
.
h2h_ar_invoice
.
cust_inv_no
)
return
self
.
set_success
(
parsd
,
typ
=
"payment"
)
elif
resp
.
status_code
==
400
:
data
=
"data"
in
result
and
result
[
"data"
]
or
None
...
...
@@ -279,6 +302,8 @@ class Vendor(VendorClass):
def
pars_data
(
self
,
data
):
result
=
dict
()
print
(
'pars_data, data >>'
)
print
(
data
)
if
not
data
:
return
result
...
...
src/agratek/api/merchant/views/odeo/dummy.py
View file @
9c5c9f1
import
json
import
datetime
from
opensipkd.pasar.models
import
PartnerProduk
,
H2hArInvoiceDet
from
agratek.api.merchant.views.notify_vendor
import
purchase_notify
from
opensipkd.base
import
get_settings
import
hashlib
import
requests
def
kirim_notify
(
order_id
):
# try:
# {
# "order_id": 1,
# "status": "COMPLETED",
# "message": "XXX"
# "signature": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
# }
print
(
'kirim_notify >> '
)
fake_web
=
'http://DESKTOP-0KSLBA0:6555/notify/artpay'
dict_notify
=
{}
dict_notify
[
'order_id'
]
=
order_id
dict_notify
[
'status'
]
=
'COMPLETED'
dict_notify
[
'message'
]
=
'Sukses'
settings
=
get_settings
()
website
=
settings
[
'_host'
]
+
'/api/vendor/odeo/notify'
mid
=
'odeo_mid'
in
settings
and
settings
[
"odeo_mid"
]
or
None
key
=
'odeo_key'
in
settings
and
settings
[
"odeo_key"
]
or
None
signature
=
sha256
(
"{order_id}{mid}{key}{status}"
.
format
(
order_id
=
order_id
,
mid
=
mid
,
key
=
key
,
status
=
'COMPLETED'
))
dict_notify
[
'signature'
]
=
signature
requests
.
post
(
website
,
data
=
json
.
dumps
(
dict_notify
),
timeout
=
30
)
# requests.post(fake_web, data=json.dumps(dict_notify), timeout=30)
# except Exception as e:
# print('error notify >>')
# print(e)
def
sha256
(
hash_string
):
return
hashlib
.
sha256
(
hash_string
.
encode
())
.
hexdigest
()
class
Lolable
(
object
):
EPULSA_CLUB
=
[
'XL'
,
'TSEL'
,
'ISAT'
,
'TRI'
,
'AX'
,
'SF'
]
TELKOM_CLUB
=
[
'TELKOMFLEXI'
,
'TELKOMSPEEDY'
,
'TELKOMPSTN'
,
'TELKOMSELHALO'
,
'INDIHOME'
]
def
__init__
(
self
,
vendor_produk
,
invoice_det
):
print
(
'init lolable >>'
)
self
.
status_code
=
200
def
__init__
(
self
,
kategori
):
self
.
text
=
{}
self
.
kategori
=
kategori
self
.
invoice_det
=
invoice_det
self
.
vendor_produk
=
vendor_produk
# self.website = self.invoice_det.h2h_ar_invoice.customer.website
self
.
invoice_no
=
self
.
invoice_det
.
h2h_ar_invoice
.
cust_inv_no
# sg = "{order_id}{mid}{key}{status}".format(
# order_id=order_id, mid=mid, key=key, status=status)
self
.
kategori
=
vendor_produk
.
produk
.
kategori
.
kode
# self.order = H2hArInvoiceDet.query().filter(
# H2hArInvoiceDet.vendor_id == self.vendor_produk.partner_id,
# H2hArInvoiceDet.vend_inv_no == self.invoice_det.cust_inv_no
# ).first()
self
.
order
=
invoice_det
# {"data": {"denom": "TSEL5", "number": "0812121212"}}
# merch_request_dict >>
...
...
@@ -28,21 +87,24 @@ class Lolable(object):
# },
# "message": ""
# }
def
get_price_epulsa
(
denom
):
def
get_price_epulsa
(
self
,
denom
):
price_str
=
denom
for
member
in
EPULSA_CLUB
:
for
member
in
self
.
EPULSA_CLUB
:
price_str
=
price_str
.
replace
(
member
,
''
)
return
int
(
price_str
)
def
stupeed
(
merch_request
):
print
(
'dummy processing >>'
)
print
(
'merch_request >>'
)
print
(
merch_request
)
# notify_json
def
set_agratek_request
(
self
,
agratek_request
):
dict_request
=
json
.
loads
(
agratek_request
)
self
.
agratek_request
=
dict_request
self
.
agratek_request_data
=
dict_request
[
'params'
][
'data'
][
0
]
print
(
'merch_request_dict >>'
)
def
stupeed
(
self
,
merch_request
):
merch_request_dict
=
json
.
loads
(
merch_request
)
print
(
merch_request_dict
)
denom
=
merch_request_dict
[
'data'
][
'denom'
]
dumb_dict
=
{}
...
...
@@ -51,9 +113,315 @@ class Lolable(object):
dumb_data
=
{}
dumb_data
[
'order_id'
]
=
1
if
self
.
kategori
==
'e-pulsa'
:
dumb_data
[
'price'
]
=
(
get_price_epulsa
(
denom
)
*
1000
)
+
500
dumb_data
[
'message'
]
=
''
# {
# "status": "SUCCESS",
# "data": {
# "order_id": 1,
# "name": "XXX",
# "number": "XXX",
# "serial_number": "XXX",
# "status": "XXX",
# "price": 20000,
# "message": "XXX (Trx duplicate. This response only appear when you use slash (/) format when checking same trx id)"
# },
# "message": ""
# }
if
self
.
kategori
==
'e-pulsa'
:
dumb_data
[
'price'
]
=
(
self
.
get_price_epulsa
(
denom
)
*
1000
)
else
:
if
denom
[:
3
]
==
'PLN'
and
denom
!=
"PLNPASCA"
:
bayar
=
denom
.
replace
(
'PLN'
,
''
)
bayar
=
int
(
bayar
)
*
1000
dumb_data
[
'price'
]
=
bayar
else
:
dumb_data
[
'price'
]
=
150000
dumb_data
[
'name'
]
=
'Suriyah Sidkisari'
dumb_data
[
'serial_number'
]
=
'09090909'
dumb_data
[
'status'
]
=
'SUCCESS'
dumb_data
.
update
(
merch_request_dict
[
'data'
])
dumb_dict
[
'data'
]
=
dumb_data
self
.
text
=
json
.
dumps
(
dumb_dict
)
# self.kirim_notify()
return
self
# {
# "status": "SUCCESS",
# "data": {
# "subscriber_id": "XXX",
# "subscriber_name": "XXX",
# "ref_id": "XXX",
# "tariff": "R1/1300VA",
# "inquiries": [
# {
# "period": "2016-08",
# "base_price": 300000,
# "fine": 0,
# "admin_fee": 2500
# }
# ],
# "subtotal": 302500,
# "discount": 900,
# "total": 301600
# },
# "message": ""
# }
def
inquat
(
self
,
merch_request
):
merch_request_dict
=
json
.
loads
(
merch_request
)
print
(
'inquat merch_request_dict >>'
)
print
(
merch_request_dict
)
denom
=
merch_request_dict
[
'denom'
]
dumb_dict
=
{}
dumb_dict
[
'status'
]
=
'SUCCESS'
dumb_dict
[
'message'
]
=
''
dumb_data
=
{}
dumb_data
[
'subscriber_id'
]
=
self
.
invoice_det
.
id_pel
dumb_data
[
'subscriber_name'
]
=
'Suriyah Sidkisari'
dumb_data
[
'ref_id'
]
=
1
dumb_inquiries_arr
=
[]
dumb_inquiries_data
=
{}
today
=
datetime
.
datetime
.
today
()
datem
=
datetime
.
datetime
(
today
.
year
,
today
.
month
,
1
)
dumb_inquiries_data
[
'period'
]
=
str
(
today
.
year
)
+
'-'
+
str
(
today
.
month
)
print
(
'amt_sell >>'
)
print
(
self
.
invoice_det
.
amt_sell
)
# "tariff": "R1/1300VA",
dumb_inquiries_data
[
'base_price'
]
=
0
dumb_inquiries_data
[
'admin_fee'
]
=
0
if
denom
==
"PLNPASCA"
:
dumb_inquiries_data
[
'tariff'
]
=
'R1/1300VA'
dumb_inquiries_data
[
'power'
]
=
2200
dumb_inquiries_data
[
'base_price'
]
=
100000
dumb_inquiries_data
[
'fine'
]
=
0
dumb_inquiries_data
[
'admin_fee'
]
=
self
.
invoice_det
.
produk
.
harga
dumb_inquiries_arr
.
append
(
dumb_inquiries_data
)
dumb_data
[
'subtotal'
]
=
dumb_inquiries_data
[
'base_price'
]
+
dumb_inquiries_data
[
'admin_fee'
]
dumb_data
[
'discount'
]
=
0
dumb_data
[
'total'
]
=
dumb_data
[
'subtotal'
]
elif
denom
[:
3
]
==
'PLN'
and
denom
!=
"PLNPASCA"
:
# {
# "status": "SUCCESS",
# "data": {
# "number": "XXX",
# "subscriber_id": "XXX",
# "name": "XXX",
# "tariff": "XXX",
# "power": "XXX"
# },
# "message": ""
# }
bayar
=
denom
.
replace
(
'PLN'
,
''
)
bayar
=
int
(
bayar
)
*
1000
dumb_data
[
'number'
]
=
'1919191919'
dumb_data
[
'subscriber_id'
]
=
merch_request_dict
[
'number'
]
dumb_data
[
'name'
]
=
'Suriyah Sidkisari'
dumb_data
[
'tariff'
]
=
bayar
dumb_data
[
'power'
]
=
'1300VA'
dumb_data
[
'discount'
]
=
0
elif
denom
[:
2
]
==
'FN'
:
# {
# "status": "SUCCESS",
# "data": {
# "subscriber_id": "XXX",
# "subscriber_name": "XXX",
# "ref_id": "XXX",
# "inquiries": {
# "installment": "XXX",
# "due_date": "XXX",
# "platform": "XXX",
# "base_price": 300000,
# "coll_fee": 0,
# "fine": 75000,
# "admin": 2000
# },
# "subtotal": 377000,
# "discount": 900,
# "total": 376100
# },
# "message": ""
# }
dumb_data
[
'subscriber_id'
]
=
merch_request_dict
[
'number'
]
dumb_data
[
'subscriber_name'
]
=
'Suriyah Sidkisari'
dumb_data
[
'ref_id'
]
=
'0909'
del
dumb_inquiries_data
[
'period'
]
dumb_inquiries_data
[
'installment'
]
=
""
dumb_inquiries_data
[
'due_date'
]
=
""
dumb_inquiries_data
[
'platform'
]
=
""
dumb_inquiries_data
[
'base_price'
]
=
250000
dumb_inquiries_data
[
'coll_fee'
]
=
0
dumb_inquiries_data
[
'fine'
]
=
25000
dumb_inquiries_data
[
'admin'
]
=
2000
dumb_data
[
'inquiries'
]
=
dumb_inquiries_data
dumb_data
[
'subtotal'
]
=
277000
dumb_data
[
'discount'
]
=
0
dumb_data
[
'total'
]
=
277000
elif
denom
==
'PGN'
:
# {
# "status": "SUCCESS",
# "data": {
# "subscriber_id": "XXX",
# "subscriber_name": "XXX",
# "ref_id": "XXX",
# "inquiries": {
# "period": "XXX",
# "meter_changes": "XXX",
# "usages": "XXX",
# "base_price": 300000,
# "admin_fee": 2500
# },
# "subtotal": 302500,
# "discount": 900,
# "total": 301600
# },
# "message": ""
# }
dumb_data
[
'subscriber_id'
]
=
merch_request_dict
[
'number'
]
dumb_data
[
'subscriber_name'
]
=
'Suriyah Sidkisari'
dumb_data
[
'ref_id'
]
=
'0909'
dumb_inquiries_data
[
'base_price'
]
=
800000
dumb_inquiries_data
[
'admin_fee'
]
=
2500
dumb_inquiries_data
[
'usages'
]
=
"2000"
dumb_inquiries_data
[
'meter_changes'
]
=
"100"
dumb_data
[
'inquiries'
]
=
dumb_inquiries_data
# dumb_inquiries_arr.append(dumb_inquiries_data)
dumb_data
[
'subtotal'
]
=
802500
dumb_data
[
'discount'
]
=
0
dumb_data
[
'total'
]
=
802500
elif
denom
in
self
.
TELKOM_CLUB
:
# {
# "status": "SUCCESS",
# "data": {
# "subscriber_id": "XXX",
# "subscriber_name": "XXX",
# "ref_id": "XXX",
# "inquiries": {
# "period": "XXX",
# "base_price": 300000,
# "admin_fee": 1500
# },
# "subtotal": 301500,
# "discount": 900,
# "total": 300600
# },
# "message": ""
# }
dumb_data
[
'subscriber_id'
]
=
merch_request_dict
[
'number'
]
dumb_data
[
'subscriber_name'
]
=
'Suriyah Sidkisari'
dumb_data
[
'ref_id'
]
=
'0909'
dumb_inquiries_data
[
'base_price'
]
=
250000
dumb_inquiries_data
[
'admin_fee'
]
=
1500
dumb_data
[
'inquiries'
]
=
dumb_inquiries_data
dumb_data
[
'subtotal'
]
=
251500
dumb_data
[
'discount'
]
=
0
dumb_data
[
'total'
]
=
251500
elif
denom
[:
3
]
==
'PAM'
:
# {
# "status": "SUCCESS",
# "data": {
# "subscriber_id": "XXX",
# "subscriber_name": "XXX",
# "ref_id": "XXX",
# "inquiries": [
# {
# "period": "XXX",
# "base_price": 300000,
# "fine": 0,
# "admin_fee": 2500,
# "meter_changes": "XXX"
# }
# ],
# "subtotal": 302500,
# "discount": 900,
# "total": 301600
# },
# "message": ""
# }
dumb_data
[
'subscriber_id'
]
=
merch_request_dict
[
'number'
]
dumb_data
[
'subscriber_name'
]
=
'Suriyah Sidkisari'
dumb_data
[
'ref_id'
]
=
'0909'
dumb_inquiries_data
[
'base_price'
]
=
150000
dumb_inquiries_data
[
'admin_fee'
]
=
2500
dumb_inquiries_data
[
'fine'
]
=
0
dumb_inquiries_data
[
'meter_changes'
]
=
1220
dumb_inquiries_arr
.
append
(
dumb_inquiries_data
)
dumb_data
[
'subtotal'
]
=
152500
dumb_data
[
'discount'
]
=
0
dumb_data
[
'total'
]
=
152500
elif
denom
[:
7
]
==
'BPJSKES'
:
# {
# "status": "SUCCESS",
# "data": {
# "subscriber_id": "XXX",
# "subscriber_name": "XXX",
# "ref_id": "XXX",
# "inquiries": {
# "branch_code": "-",
# "branch_name": "XXX",
# "month_counts": 1,
# "participant_counts": 3,
# "base_price": 154200,
# "bill_rest": 0,
# "admin": 2500
# },
# "subtotal": 156700,
# "discount": 600,
# "total": 156100
# },
# "message": ""
# }
print
(
'masuk BPJSKES >>'
)
jml_bln
=
int
(
denom
.
replace
(
'BPJSKES'
,
''
))
dumb_data
[
'subscriber_id'
]
=
merch_request_dict
[
'number'
]
dumb_data
[
'subscriber_name'
]
=
'Suriyah Sidkisari'
dumb_data
[
'ref_id'
]
=
'0909'
dumb_inquiries_data
[
'branch_name'
]
=
'BPJS Kesehatan'
dumb_inquiries_data
[
'branch_code'
]
=
'-'
dumb_inquiries_data
[
'participant_counts'
]
=
3
dumb_inquiries_data
[
'month_counts'
]
=
jml_bln
dumb_inquiries_data
[
'bill_rest'
]
=
0
dumb_inquiries_data
[
'base_price'
]
=
150000
dumb_inquiries_data
[
'admin'
]
=
2500
dumb_inquiries_data
[
'total'
]
=
152500
dumb_data
[
'inquiries'
]
=
dumb_inquiries_data
dumb_data
[
'subtotal'
]
=
152500
dumb_data
[
'discount'
]
=
0
dumb_data
[
'total'
]
=
152500
if
len
(
dumb_inquiries_arr
)
>
0
:
dumb_data
[
'inquiries'
]
=
dumb_inquiries_arr
dumb_dict
[
'data'
]
=
dumb_data
return
json
.
dumps
(
dumb_dict
)
self
.
text
=
json
.
dumps
(
dumb_dict
)
return
self
src/agratek/api/merchant/views/vendor.py
View file @
9c5c9f1
...
...
@@ -187,7 +187,10 @@ class Result(object):
def
__init__
(
self
,
values
,
**
kwargs
):
self
.
values
=
values
if
"rincian"
in
values
:
discount
=
int
(
self
.
values
[
"discount"
])
discount
=
'discount'
in
self
.
values
and
self
.
values
[
'discount'
]
or
'0'
discount
=
int
(
discount
)
print
(
"======================>>>>>>>>>>>>"
)
print
(
values
[
"rincian"
])
subtotal
=
int
(
values
[
"rincian"
][
"total"
])
self
.
values
[
"subtotal"
]
=
subtotal
self
.
values
[
"discount"
]
=
discount
...
...
Write
Preview
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment