Commit 2b03025d by Owo Sugiana

Penjelasan yang lebih rinci

1 parent 5248d374
*.pem
*.egg-info
*.vscode
build
......
......@@ -19,6 +19,8 @@ Lakukan uji coba::
$ cd tests
$ ~/env/bin/pytest
Pastikan tidak ada yang gagal.
Server
------
......@@ -33,24 +35,70 @@ Public key digunakan server untuk memvalidasi signature::
$ openssl rsa -in private.pem -pubout -out public.pem
Di paket ini kedua file tersebut sudah disediakan. Jalankan server uji
coba::
Di paket ini kedua file tersebut sudah disediakan. Pasang aplikasi server::
$ ~/env/bin/pip install -e pyramid-snap/example/server/
Jalankan::
$ cd pyramid-snap/example/server
$ ~/env/bin/pserve development.ini
Nanti dia listen di port 6543. Selanjutnya buka terminal lain untuk
menjalankan client::
Nanti dia listen di port 6543.
Client
------
Selanjutnya buka terminal lain untuk menjalankan client::
$ cd pyramid-snap/example/client
$ ~/env/bin/python create_va --private-file=../server/private.pem
$ ~/env/bin/python create_va.py --private-file=private.pem
Hasilnya seperti ini::
Request
URL: http://localhost:6543/v1.0/transfer-va/create-va
Headers: {
'X-TIMESTAMP': '2025-03-20T15:40:48+07:00',
'X-SIGNATURE': 'tFxzN0h1a...Tmf+iD5w==',
'X-PARTNER-ID': '1234'}
Body: {
'virtualAccountTrxType': 'C',
'customerNo': '081234567890',
'virtualAccountName': 'Jokul Doe',
'trxId': '154048',
'totalAmount': {'value': 10000, 'currency': 'IDR'},
'expiredDate': '2025-03-21T15:40:48+07:00',
'additionalInfo': {'channel': 'BRI'}}
Response
HTTP Status: 200
Headers: {
'Content-Length': '345',
'Content-Type': 'application/json',
'Date': 'Thu, 20 Mar 2025 08:40:48 GMT',
'Server': 'waitress',
'X-Timestamp': '2025-03-20T15:40:48+07:00'}
Body: {
'virtualAccountData': {
'virtualAccountTrxType': 'C',
'customerNo': '081234567890',
'virtualAccountName': 'Jokul Doe',
'trxId': '154048',
'totalAmount': {'value': 10000, 'currency': 'IDR'},
'expiredDate': '2025-03-21T15:40:48+07:00',
'additionalInfo': {'channel': 'BRI'},
'virtualAccountNo': '088993332660147'},
'responseCode': '2002700',
'responseMessage': 'Berhasil'}
Web server tadi adalah simulator Winpay server. Jadi kita juga bisa mengujinya
dengan `Winpay Client <https://git.opensipkd.com/sugiana/winpay-client/>`_::
$ ~/env/bin/winpay_create_va --private-file=../server/private.pem \
$ ~/env/bin/winpay_create_va --private-file=private.pem \
--partner-id=1234 --customer-no=08123456789 --va-name="Iwan Gunawan" \
--amount=10000 --channel=MANDIRI \
--url=http://localhost:6543/v1.0/transfer-va/create-va
Semoga dipahami.
\ No newline at end of file
Semoga dipahami.
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD3DFUMxIvSC2MX
Ya24qCmbpWDFzAhv4GnLvbcouAD+UA1pRboAzU73JF1Bl0X01X0bJWV8k6S/DKTz
KtwC51BnLbEDgHwxHHR/O+3yhcmRaf3rL9p8OXSovd1nmXRKMWPWfuROJpkdHWK7
kLyN21gg8voRgSjWUuVDnSGaMRka05H55wFTse112ygNeq8qEqZoPCxKhhZ6yEWY
aO5rl6OFea4u5dDC7oIC3uknOTBvjNyqPWkeCMRU7jdqXciIapEl1sqb3SyneOGG
OZOyPxPlnQM7sAXq80+t8Q1YtZ9r4TjgzKeI89CrQuR45ohVF0EN/oSSpn8GsNcp
yn4d0K3NAgMBAAECggEAGZzPMoAsCM5Cazmmw5a3nZnjMw6Ir2SiQ0u7cf7Fp5gQ
E+J1OsEOV0QPYQ34ZD4/9rEFWQmLkn0Smt1OKwTlSpUrnXPULFlJYKmLbVHeiHNn
LltrOObSB+6LRkLcEhcVxTapn8qTpDeYNV73lXNwqxXVxDvSSooUl9JyGeTOOAAU
JATG6hc/nQj3DDHEreosQ+iYhbnV97VtQ5MlLpucnsKZ66STbLIlx71Xhst4ueOq
b0B2MZ9lIcU2y9hVStlhH4p7YWPew2HfKxPYqT+ETrHcNa5MFqGgUiwdW3MHJwzX
GAs81qTiLmhcuNT0rQAMW1nE5p9E1nWcO6B+k7vWAQKBgQD9lrP6bEvn42j0EoiV
TBjyXPJo9X8gklV4AtSXiYSuHtGmMxw6rKkA2U+sDKvD1HyDuP6aL7TtPs3iHBat
A6J73G+ZDvhtnxxsu1qMmbD5VPKFewRqXgHQ/4OOC7rAFsKOjUp8a//510Qqh52H
FUuqcrnPtXSVzMVaIj9vyd4szQKBgQD5ZbU+ODEdZHUtLGeHIALG3GdXrOCxFpt+
7rCzba1VbVEj1j3ulM8MGj0vkoSM5o4L23PqtwhJgcIK7ZejVt1yhdV6iVx6ygTC
heu3T2gpEB9tUtvhmIVmWWkpygRmpf6wxf99AnnFQmhLPRXuxSCraIflGGrrLUfx
GuHNAVyFAQKBgQDMxreLj4w0M0V7YsP8m7jBbiEqdKQ17zUpdk+qFxiXaretWDSB
hQ/saY+WxZymxJ3P2MFwTPnzYvXqkvgUuoypLLbJiHdAPm47t4dFZo6sqNY2x8In
Csa4uLzJJdumZjqx1pLBqozIefbHyT+B58Z0W7SEcGk21ma/hExpvz+0OQKBgF9r
5cu3jjszu42cJsRRoB5cKAIouBOplbccNmmAdkhwOhJfH3UQZKO5yl1QTvzmHcU1
owVUIIyXZBnwTAuH6dSulj57HfIxJ18SBF0vuae0boHSqSSIycmePhlqHQL1Uhxq
tVUsRFEQFn1rEuA3dkd/CDfEfuwaeCMs6OYaNj8BAoGAOTkRMLfEAYRxF9LKE/8b
2jBH6NWG/ZOvvsMngpULEkLo9n2yfLCecyKm8C3d0ICsIXLwfqhYEqLv+BC1A3LQ
vWPHv1+yWBZOeSlH0WW0R6IM6uQex9s7i8+Bn5RGB8NXzI+5gqoYuXTeHsfbtiv6
DNZHHOMnARnx98gJbo/35DY=
-----END PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9wxVDMSL0gtjF2GtuKgp
m6VgxcwIb+Bpy723KLgA/lANaUW6AM1O9yRdQZdF9NV9GyVlfJOkvwyk8yrcAudQ
Zy2xA4B8MRx0fzvt8oXJkWn96y/afDl0qL3dZ5l0SjFj1n7kTiaZHR1iu5C8jdtY
IPL6EYEo1lLlQ50hmjEZGtOR+ecBU7HtddsoDXqvKhKmaDwsSoYWeshFmGjua5ej
hXmuLuXQwu6CAt7pJzkwb4zcqj1pHgjEVO43al3IiGqRJdbKm90sp3jhhjmTsj8T
5Z0DO7AF6vNPrfENWLWfa+E44MyniPPQq0LkeOaIVRdBDf6EkqZ/BrDXKcp+HdCt
zQIDAQAB
-----END PUBLIC KEY-----
......@@ -4,10 +4,11 @@ version = '1.0'
dependencies = [
'pyramid',
'waitress',
'winpay-client @ git+https://git.opensipkd.com/sugiana/winpay-client',
]
[tool.setuptools.packages.find]
include = ['snap_server']
[project.entry-points."paste.app_factory"]
main = 'snap_server:main'
\ No newline at end of file
main = 'snap_server:main'
......@@ -5,12 +5,12 @@ def test_create_va():
import os
from datetime import timedelta
from base64 import b64encode
from opensipkd.waktu import create_now
from pyramid_snap.structure import (
RC_OK,
SERVICE_VA_CREATE,
)
from pyramid_snap.view import (
create_now,
time_to_str,
create_rc,
)
......
......@@ -14,7 +14,7 @@ def str_to_time(s: str) -> datetime:
return datetime.strptime(s, '%Y-%m-%dT%H:%M:%S%z')
def create_now(timezone: str) -> datetime:
def create_now(timezone='Asia/Jakarta') -> datetime:
tz = pytz.timezone(timezone)
return datetime.now(tz)
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!