Commit f9341e4c by Owo Sugiana

Tanpa paket opensipkd-hitung

1 parent fd828877
...@@ -2,19 +2,28 @@ Winpay Client ...@@ -2,19 +2,28 @@ Winpay Client
============= =============
Ini adalah kumpulan modul untuk mengakses `Winpay <https://docs.winpay.id/>`_. Ini adalah kumpulan modul untuk mengakses `Winpay <https://docs.winpay.id/>`_.
Kita bisa langsung memasangnya tanpa clone terlebih dahulu::
$ ~/env/bin/pip install git+https://git.opensipkd.com/sugiana/winpay-client
Create Virtual Account Create Virtual Account
---------------------- ----------------------
Buatlah private key:: Buatlah *private key*::
$ openssl genrsa -out private.pem 2048 $ openssl genrsa -out private.pem 2048
Ini akan kita gunakan untuk meng-encrypt *signature*. Kemudian buat *public key*::
$ openssl rsa -in private.pem -pubout -out public.pem $ openssl rsa -in private.pem -pubout -out public.pem
Sampaikan ``public.pem`` ke Winpay. Lalu mintalah Partner ID. Kemudian jalankan:: Sampaikan file ``public.pem`` ini ke Winpay. Lalu mintalah Partner ID. Kemudian
jalankan::
$ ~/env/bin/winpay_create_va --private-file=private.pem --partner-id=WINPAY-PARTNER-ID --customer-no=08123456789 --va-name="IWAN AGRATEK" --amount=10000 --channel=BNI $ ~/env/bin/winpay_create_va --private-file=private.pem \
--partner-id=WINPAY-PARTNER-ID --customer-no=08123456789 \
--va-name="IWAN AGRATEK" --amount=10000 --channel=BNI
Hasilnya:: Hasilnya::
...@@ -30,3 +39,26 @@ Hasilnya:: ...@@ -30,3 +39,26 @@ Hasilnya::
'virtualAccountName': 'IWAN AGRATEK', 'virtualAccountName': 'IWAN AGRATEK',
'virtualAccountNo': ' 9883324410066483', 'virtualAccountNo': ' 9883324410066483',
'virtualAccountTrxType': 'c'}} 'virtualAccountTrxType': 'c'}}
Pengujian Enkripsi
------------------
Ini adalah ranah bagi yang ingin mengembangkan paket ini. Terlepas dari
spesifikasi Winpay maka ada pengujian enkripsi, baik dengan *salt* maupun
tidak. Winpay tanpa salt. Karena ini sesi development maka *clone* terlebih
dahulu::
$ git clone https://git.opensipkd.com/sugiana/winpay-client
Lalu pasang paket yang dibutuhkan::
$ cd winpay-client
$ ~/env/bin/pip install -e .[dev]
Jalankan script pengujian::
$ cd tests
$ ~/env/bin/pytest
Pastikan tidak ada yang gagal. Semoga dipahami.
...@@ -12,7 +12,6 @@ version = '0.1' ...@@ -12,7 +12,6 @@ version = '0.1'
dependencies = [ dependencies = [
'cryptography', 'cryptography',
'requests', 'requests',
'opensipkd-hitung @ git+https://git.opensipkd.com/sugiana/opensipkd-hitung',
] ]
requires-python = '>= 3.9' requires-python = '>= 3.9'
authors = [ authors = [
......
...@@ -5,7 +5,6 @@ from datetime import datetime ...@@ -5,7 +5,6 @@ from datetime import datetime
from argparse import ArgumentParser from argparse import ArgumentParser
from base64 import b64encode from base64 import b64encode
from pprint import pprint from pprint import pprint
from opensipkd.waktu import create_now
from winpay.encrypt import ( from winpay.encrypt import (
sign, sign,
sign_without_salt, sign_without_salt,
...@@ -14,6 +13,7 @@ from winpay.encrypt import ( ...@@ -14,6 +13,7 @@ from winpay.encrypt import (
) )
from winpay.signature import generator from winpay.signature import generator
from winpay.va import ( from winpay.va import (
create_now,
create, create,
HttpErr, HttpErr,
) )
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
from base64 import b64encode from base64 import b64encode
from datetime import timedelta from datetime import timedelta
from logging import getLogger from logging import getLogger
import pytz
import requests import requests
from opensipkd.waktu import create_now
from .signature import ( from .signature import (
generator, generator,
time_to_str, time_to_str,
...@@ -14,11 +14,17 @@ class HttpErr(Exception): ...@@ -14,11 +14,17 @@ class HttpErr(Exception):
pass pass
def create_now(timezone='Asia/Jakarta') -> datetime:
tz = pytz.timezone(timezone)
return datetime.now(tz)
def create( def create(
url: str, private_key: bytes, partner_id: str, customer_no: str, url: str, private_key: bytes, partner_id: str, customer_no: str,
va_name: str, amount: int, channel: str, trx_id: str, expired_days=1): va_name: str, amount: int, channel: str, trx_id: str, expired_days=1,
timezone='Asia/Jakarta'):
log = getLogger('create_va()') log = getLogger('create_va()')
timestamp = create_now() timestamp = create_now(timezone)
timestamp_str = time_to_str(timestamp) timestamp_str = time_to_str(timestamp)
expired_timestamp = timestamp + timedelta(expired_days) expired_timestamp = timestamp + timedelta(expired_days)
expired_str = time_to_str(expired_timestamp) expired_str = time_to_str(expired_timestamp)
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!