Commit f9341e4c by Owo Sugiana

Tanpa paket opensipkd-hitung

1 parent fd828877
......@@ -2,19 +2,28 @@ Winpay Client
=============
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
----------------------
Buatlah private key::
Buatlah *private key*::
$ 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
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::
......@@ -30,3 +39,26 @@ Hasilnya::
'virtualAccountName': 'IWAN AGRATEK',
'virtualAccountNo': ' 9883324410066483',
'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'
dependencies = [
'cryptography',
'requests',
'opensipkd-hitung @ git+https://git.opensipkd.com/sugiana/opensipkd-hitung',
]
requires-python = '>= 3.9'
authors = [
......
......@@ -5,7 +5,6 @@ from datetime import datetime
from argparse import ArgumentParser
from base64 import b64encode
from pprint import pprint
from opensipkd.waktu import create_now
from winpay.encrypt import (
sign,
sign_without_salt,
......@@ -14,6 +13,7 @@ from winpay.encrypt import (
)
from winpay.signature import generator
from winpay.va import (
create_now,
create,
HttpErr,
)
......
......@@ -2,8 +2,8 @@
from base64 import b64encode
from datetime import timedelta
from logging import getLogger
import pytz
import requests
from opensipkd.waktu import create_now
from .signature import (
generator,
time_to_str,
......@@ -14,11 +14,17 @@ class HttpErr(Exception):
pass
def create_now(timezone='Asia/Jakarta') -> datetime:
tz = pytz.timezone(timezone)
return datetime.now(tz)
def create(
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()')
timestamp = create_now()
timestamp = create_now(timezone)
timestamp_str = time_to_str(timestamp)
expired_timestamp = timestamp + timedelta(expired_days)
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!