-
Notifications
You must be signed in to change notification settings - Fork 0
/
ypmn_authorize_fp_example.py
127 lines (94 loc) · 3.94 KB
/
ypmn_authorize_fp_example.py
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
from ypmn_classes_general_function import *
from ypmn_classes_authorisation import *
## Формирование Номера заказа в магазине
MERCH_ORDER_REF = str(randint(1, 10000)) # поменять на timestamp
# Определяем объект класса AuthorizationCard, собираем блок для авторизации
authorization = AuthorizationFP()
#print(AuthorizationCard.__doc__)
# Определяем 1-ый объект класса Product, собираем блок 1-ого продукта
product1 = Product()
#print(Product.__doc__)
product1.name = "Product name 1"
product1.sku = "productSKU1"
product1.unit_price = 500
product1.quantity = -1 # можно постепенно менять прямое назначение на setter-ы с проверкой
# напр. product1.setQuantity( -1 ) # ошибка!
# либьо оставить так и добавить валидацию перед отправкой
product1.additional_details = "Product additional information1"
product1.vat = 0
#print(product1.to_dict())
# Определяем 2-ой объект класса Product, собираем блок 2-ого продукта
product2 = Product()
#print(Product.__doc__)
product2.name = "Product name 2"
product2.sku = "productSKU2"
product2.unit_price = 1000
product2.quantity = 1
product2.additional_details = "Product additional information2"
product2.vat = 0
#print(product2.to_dict())
# Определяем объект класса IdentityDocument, собираем блок идентификационные данные
#identityDocument = IdentityDocument()
#print(IdentityDocument.__doc__)
#identityDocument.number = 12345
#identityDocument.type = "PERSONALID"
#print(identityDocument.to_dict())
# Определяем объект класса Billing, собираем блок клиентских данные
billing = Billing()
#print(Billing.__doc__)
# Имя
billing.first_name = "John"
billing.last_name = "Doe"
billing.email = "test@ypmn.ru"
billing.phone = "example"
billing.country_code = "RU"
#billing.compay_id_type = "example"
#billing.compay_id = 123445
#billing.city = "example"
#billing.state = "Bucharest"
#billing.company_name = "example"
#billing.tax_id = "example"
#billing.address_line1 = "example"
#billing.address_line2 = "example"
#billing.zip_code = "example"
#billing.identity_document = identityDocument.to_dict()
#print(billing.to_dict())
# Определяем объект класса Delivery, собираем блок данных доставки
#delivery = Delivery()
#print(Delivery.__doc__)
#delivery.first_name = "John"
#delivery.last_name = "Doe"
#delivery.phone = 7716346934
#delivery.address_line1 = "example"
#delivery.address_line2 = "example"
#delivery.zip_code = "example"
#delivery.city = "example"
#delivery.state = "example"
#delivery.country_code = "RU"
#delivery.email = "test@ypmn.ru"
#print(delivery.to_dict())
# Определяем объект класса Client, собираем блок клиентских данных воедино
client = Client()
#print(Client.__doc__)
client.billing = billing
#client.delivery = delivery
#client.client_ip = "example"
#client.client_time = "example"
#print(client.to_dict())
# Определяем объект класса AuthRequest, собирает тело запроса
paymentRequest = AuthRequest()
#print(AuthRequest.__doc__)
paymentRequest.merchant_payment_reference = MERCH_ORDER_REF
paymentRequest.authorization = authorization
paymentRequest.client = client
paymentRequest.products = [
product1.to_dict(),
product2.to_dict()
]
#print(paymentRequest.to_dict())
## Формирование тела запроса
body = json.dumps(paymentRequest.to_dict())
#print(body)
## Отправка запроса и получение ответа с выводом в терминал
response_dict = YPMNApi().request_authorize(body)
print(json.dumps(response_dict, indent=4))