Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Owo Sugiana
/
pyramid-snap
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 2b03025d
authored
Mar 20, 2025
by
Owo Sugiana
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
Penjelasan yang lebih rinci
1 parent
5248d374
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
96 additions
and
11 deletions
.gitignore
README.rst
example/client/private.pem
example/server/public.pem
example/server/pyproject.toml
example/server/tests/test_request.py
pyramid_snap/view.py
.gitignore
View file @
2b03025
*.pem
*.egg-info
*.vscode
build
...
...
README.rst
View file @
2b03025
...
...
@@ -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.
example/client/private.pem
0 → 100644
View file @
2b03025
-----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-----
example/server/public.pem
0 → 100644
View file @
2b03025
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9wxVDMSL0gtjF2GtuKgp
m6VgxcwIb+Bpy723KLgA/lANaUW6AM1O9yRdQZdF9NV9GyVlfJOkvwyk8yrcAudQ
Zy2xA4B8MRx0fzvt8oXJkWn96y/afDl0qL3dZ5l0SjFj1n7kTiaZHR1iu5C8jdtY
IPL6EYEo1lLlQ50hmjEZGtOR+ecBU7HtddsoDXqvKhKmaDwsSoYWeshFmGjua5ej
hXmuLuXQwu6CAt7pJzkwb4zcqj1pHgjEVO43al3IiGqRJdbKm90sp3jhhjmTsj8T
5Z0DO7AF6vNPrfENWLWfa+E44MyniPPQq0LkeOaIVRdBDf6EkqZ/BrDXKcp+HdCt
zQIDAQAB
-----END PUBLIC KEY-----
example/server/pyproject.toml
View file @
2b03025
...
...
@@ -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'
example/server/tests/test_request.py
View file @
2b03025
...
...
@@ -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
,
)
...
...
pyramid_snap/view.py
View file @
2b03025
...
...
@@ -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
)
...
...
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