-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcancel.py
More file actions
90 lines (74 loc) · 2.64 KB
/
cancel.py
File metadata and controls
90 lines (74 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
"""Create a Cloud POS order, wait 5 seconds, and cancel it."""
import os
import time
from dotenv import load_dotenv
from multisafepay import Sdk
from multisafepay.api.paths.orders.request import OrderRequest
from multisafepay.client import ScopedCredentialResolver
# Load environment variables from a .env file
load_dotenv()
DEFAULT_ACCOUNT_API_KEY = (os.getenv("API_KEY") or "").strip()
PARTNER_AFFILIATE_API_KEY = (os.getenv("PARTNER_API_KEY") or "").strip()
TERMINAL_GROUP_DEFAULT_API_KEY = (
os.getenv("TERMINAL_GROUP_API_KEY_GROUP_DEFAULT") or ""
).strip()
CLOUD_POS_TERMINAL_GROUP_ID = os.getenv(
"CLOUD_POS_TERMINAL_GROUP_ID",
"Default",
)
if __name__ == "__main__":
if not TERMINAL_GROUP_DEFAULT_API_KEY:
raise RuntimeError(
"TERMINAL_GROUP_API_KEY_GROUP_DEFAULT is required",
)
resolver_bootstrap_api_key = (
DEFAULT_ACCOUNT_API_KEY or TERMINAL_GROUP_DEFAULT_API_KEY
)
resolver_kwargs = {
"default_api_key": resolver_bootstrap_api_key,
"terminal_group_api_keys": {
CLOUD_POS_TERMINAL_GROUP_ID: TERMINAL_GROUP_DEFAULT_API_KEY,
},
}
if PARTNER_AFFILIATE_API_KEY:
resolver_kwargs["partner_affiliate_api_key"] = (
PARTNER_AFFILIATE_API_KEY
)
credential_resolver = ScopedCredentialResolver(**resolver_kwargs)
multisafepay_sdk = Sdk(
is_production=False,
credential_resolver=credential_resolver,
)
order_manager = multisafepay_sdk.get_order_manager()
# Temporary override for local runs; comment this line to force literal placeholder.
terminal_id = os.getenv("CLOUD_POS_TERMINAL_ID", "<terminal_id>")
order_request = (
OrderRequest()
.add_type("redirect")
.add_order_id(f"cloud-pos-cancel-{int(time.time())}")
.add_description("Cloud POS cancel order")
.add_amount(100)
.add_currency("EUR")
.add_gateway_info(
{
"terminal_id": terminal_id,
},
)
)
create_response = order_manager.create(
order_request,
terminal_group_id=CLOUD_POS_TERMINAL_GROUP_ID,
)
order = create_response.get_data()
if order is None or not order.order_id:
raise RuntimeError("Order creation did not return order_id")
order_id = order.order_id
print(f"Created Cloud POS order: {order_id}")
print("Waiting 5 seconds before cancel...")
time.sleep(5)
cancel_response = order_manager.cancel_transaction(
order_id,
terminal_group_id=CLOUD_POS_TERMINAL_GROUP_ID,
)
print(f"Canceled Cloud POS order: {order_id}")
print(cancel_response.get_data())