paymentsgate 1.5.4__py3-none-any.whl → 1.5.10__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of paymentsgate might be problematic. Click here for more details.

paymentsgate/client.py CHANGED
@@ -12,6 +12,7 @@ from .models import (
12
12
  Credentials,
13
13
  GetQuoteModel,
14
14
  GetQuoteResponseModel,
15
+ InvoiceListModelWithMeta,
15
16
  PayInModel,
16
17
  PayInResponseModel,
17
18
  PayOutModel,
@@ -143,6 +144,25 @@ class ApiAsyncClient(BaseClient):
143
144
  if not response.success:
144
145
  raise APIResponseError(response)
145
146
  return response.cast(InvoiceModel, APIResponseError)
147
+
148
+ # dateFrom: str # ISO: 2025-07-10T00:00:00.873+00:00
149
+ # dateTo?: str # ISO: 2025-07-10T00:00:00.873+00:00
150
+ async def List(self, page: int = 0, dateFrom: str = '', dateTo: str = '') -> InvoiceListModelWithMeta:
151
+ # Prepare request
152
+ request = Request(
153
+ method="get",
154
+ path=ApiPaths.invoices_list,
155
+ content_type='application/json',
156
+ noAuth=False,
157
+ signature=False,
158
+ body={"page": page, "dateFrom": dateFrom, "dateTo": dateTo},
159
+ )
160
+
161
+ # Handle response
162
+ response = await self._send_request(request)
163
+ if not response.success:
164
+ raise APIResponseError(response)
165
+ return response.cast(InvoiceListModelWithMeta, APIResponseError)
146
166
 
147
167
  async def get_token(self) -> AccessToken | None:
148
168
  # First check if valid token is cached
@@ -333,6 +353,7 @@ class ApiClient(BaseClient):
333
353
  noAuth=False,
334
354
  signature=False,
335
355
  body=params.model_dump(exclude_none=True),
356
+ # body=GetQuoteTlv(**params).model_dump(exclude_none=True),
336
357
  )
337
358
 
338
359
  # Handle response
@@ -359,6 +380,25 @@ class ApiClient(BaseClient):
359
380
 
360
381
  return response.cast(InvoiceModel, APIResponseError)
361
382
 
383
+ # dateFrom: str # ISO: 2025-07-10T00:00:00.873+00:00
384
+ # dateTo?: str # ISO: 2025-07-10T00:00:00.873+00:00
385
+ def List(self, page: int = 0, dateFrom: str = '', dateTo: str = '') -> InvoiceListModelWithMeta:
386
+ # Prepare request
387
+ request = Request(
388
+ method="get",
389
+ path=ApiPaths.invoices_list,
390
+ content_type='application/json',
391
+ noAuth=False,
392
+ signature=False,
393
+ body={"page": page, "dateFrom": dateFrom, "dateTo": dateTo},
394
+ )
395
+
396
+ # Handle response
397
+ response = self._send_request(request)
398
+ if not response.success:
399
+ raise APIResponseError(response)
400
+ return response.cast(InvoiceListModelWithMeta, APIResponseError)
401
+
362
402
  def get_token(self) -> AccessToken | None:
363
403
  # First check if valid token is cached
364
404
  token = self.cache.get_token('access')
@@ -413,7 +453,10 @@ class ApiClient(BaseClient):
413
453
  headers["Authorization"] = f"Bearer {auth.token}"
414
454
 
415
455
  if (request.method == 'get'):
416
- params = urlencode(body)
456
+ if (request.body == None):
457
+ request.body = ''
458
+
459
+ params = urlencode(request.body)
417
460
  r = httpx.request(
418
461
  method=request.method,
419
462
  url=f"{self.baseUrl}{request.path}?{params}",
@@ -425,7 +468,7 @@ class ApiClient(BaseClient):
425
468
  method=request.method,
426
469
  url=f"{self.baseUrl}{request.path}",
427
470
  headers=headers,
428
- json=body,
471
+ json=request.body,
429
472
  timeout=self.timeout
430
473
  )
431
474
 
paymentsgate/enums.py CHANGED
@@ -16,6 +16,7 @@ class ApiPaths(StrEnum):
16
16
  invoices_payout_tlv = "/deals/tlv"
17
17
  invoices_info = "/deals/:id"
18
18
  invoices_credentials = "/deals/:id/credentials"
19
+ invoices_list = "/deals/list"
19
20
  assets_list = "/wallet"
20
21
  assets_deposit = "/wallet/deposit"
21
22
  banks_list = "/banks/find"
@@ -28,9 +29,11 @@ class ApiPaths(StrEnum):
28
29
 
29
30
  class Currencies(StrEnum):
30
31
  USDT = "USDT"
32
+ RUB = "RUB"
31
33
  EUR = "EUR"
32
34
  USD = "USD"
33
35
  TRY = "TRY"
36
+ BYN = "BYN"
34
37
  CNY = "CNY"
35
38
  JPY = "JPY"
36
39
  GEL = "GEL"
@@ -45,7 +48,6 @@ class Currencies(StrEnum):
45
48
  IDR = "IDR"
46
49
  BDT = "BDT"
47
50
  GBP = "GBP"
48
- RUB = "RUB"
49
51
  THB = "THB"
50
52
  KGS = "KGS"
51
53
  PHP = "PHP"
@@ -55,7 +57,98 @@ class Currencies(StrEnum):
55
57
  KES = "KES"
56
58
  NGN = "NGN"
57
59
  AMD = "AMD"
58
-
60
+ XOF = "XOF"
61
+ CAD = "CAD"
62
+ AFN = "AFN"
63
+ ALL = "ALL"
64
+ AUD = "AUD"
65
+ BAM = "BAM"
66
+ BGN = "BGN"
67
+ BHD = "BHD"
68
+ BIF = "BIF"
69
+ BND = "BND"
70
+ BOB = "BOB"
71
+ BRL = "BRL"
72
+ BWP = "BWP"
73
+ BZD = "BZD"
74
+ CDF = "CDF"
75
+ CHF = "CHF"
76
+ CLP = "CLP"
77
+ COP = "COP"
78
+ CRC = "CRC"
79
+ CVE = "CVE"
80
+ CZK = "CZK"
81
+ DJF = "DJF"
82
+ DKK = "DKK"
83
+ DOP = "DOP"
84
+ DZD = "DZD"
85
+ EEK = "EEK"
86
+ ERN = "ERN"
87
+ ETB = "ETB"
88
+ GNF = "GNF"
89
+ GTQ = "GTQ"
90
+ HKD = "HKD"
91
+ HNL = "HNL"
92
+ HRK = "HRK"
93
+ HUF = "HUF"
94
+ ILS = "ILS"
95
+ IQD = "IQD"
96
+ IRR = "IRR"
97
+ ISK = "ISK"
98
+ JMD = "JMD"
99
+ JOD = "JOD"
100
+ KHR = "KHR"
101
+ KMF = "KMF"
102
+ KRW = "KRW"
103
+ KWD = "KWD"
104
+ LBP = "LBP"
105
+ LKR = "LKR"
106
+ LTL = "LTL"
107
+ LVL = "LVL"
108
+ LYD = "LYD"
109
+ MAD = "MAD"
110
+ MDL = "MDL"
111
+ MGA = "MGA"
112
+ MKD = "MKD"
113
+ MMK = "MMK"
114
+ MOP = "MOP"
115
+ MUR = "MUR"
116
+ MXN = "MXN"
117
+ MYR = "MYR"
118
+ MZN = "MZN"
119
+ NAD = "NAD"
120
+ NIO = "NIO"
121
+ NOK = "NOK"
122
+ NPR = "NPR"
123
+ NZD = "NZD"
124
+ OMR = "OMR"
125
+ PAB = "PAB"
126
+ PEN = "PEN"
127
+ PLN = "PLN"
128
+ PYG = "PYG"
129
+ QAR = "QAR"
130
+ RON = "RON"
131
+ RSD = "RSD"
132
+ RWF = "RWF"
133
+ SAR = "SAR"
134
+ SDG = "SDG"
135
+ SEK = "SEK"
136
+ SGD = "SGD"
137
+ SOS = "SOS"
138
+ SYP = "SYP"
139
+ TND = "TND"
140
+ TOP = "TOP"
141
+ TTD = "TTD"
142
+ TWD = "TWD"
143
+ TZS = "TZS"
144
+ UAH = "UAH"
145
+ UGX = "UGX"
146
+ UYU = "UYU"
147
+ VEF = "VEF"
148
+ VND = "VND"
149
+ YER = "YER"
150
+ ZMK = "ZMK"
151
+ MNT = "MNT"
59
152
 
60
153
  class Languages(StrEnum):
61
154
  EN = ("EN",)
@@ -87,61 +180,87 @@ class CurrencyTypes(StrEnum):
87
180
 
88
181
 
89
182
  class InvoiceTypes(StrEnum):
90
- p2p = "p2p"
91
- ecom = "ecom"
92
- c2c = "c2c"
93
- m10 = "m10"
94
- mpay = "mpay"
95
- sbp = "sbp"
96
- sbpqr = "sbpqr"
97
- iban = "iban"
98
- upi = "upi"
99
- imps = "imps"
100
- spei = "spei"
101
- pix = "pix"
102
- rps = "rps"
103
- ibps = "ibps"
104
- bizum = "bizum"
105
- rkgs = "rkgs"
106
- kgsphone = "kgsphone"
107
- krungthainext = "krungthainext"
108
- sber = "sber"
109
- kztphone = "kztphone"
110
- accountbdt = "accountbdt"
111
- alipay = "alipay"
112
- accountegp = "accountegp"
113
- accountphp = "accountphp"
114
- sberqr = "sberqr"
115
- maya = "maya"
116
- gcash = "gcash"
117
- banktransferphp = "banktransferphp"
118
- banktransferars = "banktransferars"
119
- phonepe = "phonepe"
120
- freecharge = "freecharge"
121
- instapay = "instapay"
122
- vodafonecash = "vodafonecash"
123
- razn = "razn"
124
- rtjs = "rtjs"
125
- sberpay = ("sberpay",)
126
- tpay = ("tpay",)
127
- opay = ("opay",)
128
- moniepoint = ("moniepoint",)
129
- palmpay = ("palmpay",)
130
- wave = ("wave",)
131
- orangemoney = ("orangemoney",)
132
- moovmoney = ("moovmoney",)
133
- rtjscard = ("rtjscard",)
134
- ruzs = ("ruzs",)
135
- amobile = ("amobile",)
136
- payid = ("payid",)
137
- baridi = ("baridi",)
138
- multiwidget = ("multiwidget",)
139
- attijari = ("attijari",)
140
- cih = ("cih",)
141
- cashplus = ("cashplus",)
142
- elqr = ("elqr",)
143
- odengi = "odengi"
144
-
183
+ p2p = ("p2p",)
184
+ c2c = ("c2c",)
185
+ m10 = ("m10",)
186
+ mpay = ("mpay",)
187
+ sbp = ("sbp",)
188
+ sbpqr = ("sbpqr",)
189
+ iban = ("iban",)
190
+ upi = ("upi",)
191
+ imps = ("imps",)
192
+ spei = ("spei",)
193
+ pix = ("pix",)
194
+ rps = ("rps",)
195
+ ibps = ("ibps",)
196
+ bizum = ("bizum",)
197
+ rkgs = ("rkgs",)
198
+ kgsphone = ("kgsphone",)
199
+ krungthainext = ("krungthainext",)
200
+ sber = ("sber",)
201
+ kztphone = ("kztphone",)
202
+ bkash = ("bkash",)
203
+ nagad = ("nagad",)
204
+ alipay = ("alipay",)
205
+ accountegp = ("accountegp",)
206
+ accountphp = ("accountphp",)
207
+ sberqr = ("sberqr",)
208
+ maya = ("maya",)
209
+ gcash = ("gcash",)
210
+ banktransferphp = ("banktransferphp",)
211
+ banktransferars = ("banktransferars",)
212
+ phonepe = ("phonepe",)
213
+ freecharge = ("freecharge",)
214
+ instapay = ("instapay",)
215
+ vodafonecash = ("vodafonecash",)
216
+ orangecash = ("orangecash",)
217
+ razn = ("razn",)
218
+ rtjs = ("rtjs",)
219
+ skzt = ("skzt",)
220
+ scny = ("scny",)
221
+ vtbcny = ("vtbcny",)
222
+ sgel = ("sgel",)
223
+ seur = ("seur",)
224
+ stry = ("stry",)
225
+ sthb = ("sthb",)
226
+ sberpay = ("sberpay",)
227
+ tpay = ("tpay",)
228
+ opay = ("opay",)
229
+ moniepoint = ("moniepoint",)
230
+ palmpay = ("palmpay",)
231
+ wave = ("wave",)
232
+ orangemoney = ("orangemoney",)
233
+ moovmoney = ("moovmoney",)
234
+ rtjscard = ("rtjscard",)
235
+ ruzs = ("ruzs",)
236
+ amobile = ("amobile",)
237
+ payid = ("payid",)
238
+ baridi = ("baridi",)
239
+ multiwidget = ("multiwidget",)
240
+ banktransfermad = ("banktransfermad",)
241
+ cih = ("cih",)
242
+ cashplus = ("cashplus",)
243
+ elqr = ("elqr",)
244
+ odengi = ("odengi",)
245
+ banktransferdop = ("banktransferdop",)
246
+ sinpemovil = ("sinpemovil",)
247
+ tryqr = ("tryqr",)
248
+ inrqr = ("inrqr",)
249
+ bsb = ("bsb",)
250
+ banktransfermnt = ("banktransfermnt",)
251
+ stcpay = ("stcpay",)
252
+ upiqr = ("upiqr",)
253
+ ifsc = ("ifsc",)
254
+ tjsbank = ("tjsbank",)
255
+ sortgbp = ("sortgbp",)
256
+ unionpay = ("unionpay",)
257
+ ecomazn = ("ecomazn",)
258
+ ecomrub = ("ecomrub",)
259
+ banktransferthb = ("banktransferthb",)
260
+ banktransferzar = ("banktransferzar",)
261
+ dcecomusd = ("dcecomusd",)
262
+ dcecomeur = ("dcecomeur",)
263
+ benefitpay = "benefitpay"
145
264
 
146
265
  class EELQRBankALias(StrEnum):
147
266
  bakai = ("bakai",)
@@ -150,7 +269,7 @@ class EELQRBankALias(StrEnum):
150
269
  kicb = ("kicb",)
151
270
  odengi = ("odengi",)
152
271
  demir = ("demir",)
153
- megapay = ("megapay",)
272
+ megapay = "megapay"
154
273
 
155
274
 
156
275
  class CredentialsTypes(StrEnum):
@@ -177,7 +296,11 @@ class CancellationReason(StrEnum):
177
296
  PRECHARGE_GAP_UPPER_LIMIT = ("PRECHARGE_GAP_UPPER_LIMIT",)
178
297
  CROSS_BANK_TFF_LESS_THAN_3K = ("CROSS_BANK_TFF_LESS_THAN_3K",)
179
298
  CROSS_BANK_UNSUPPORTED = ("CROSS_BANK_UNSUPPORTED",)
180
- ACCOUNT_NUMBER_BLACKLISTED = "ACCOUNT_NUMBER_BLACKLISTED"
299
+ ACCOUNT_NUMBER_BLACKLISTED = ("ACCOUNT_NUMBER_BLACKLISTED",)
300
+ ANTISPAM = ("ANTISPAM",)
301
+ BY_CLIENT = ("BY_CLIENT",)
302
+ BY_EXPIRATION = ("BY_EXPIRATION",)
303
+ PAID_CANCEL_BY_EXPIRATION = "PAID_BY_EXPIRATION"
181
304
 
182
305
 
183
306
  class FeesStrategy(StrEnum):
paymentsgate/models.py CHANGED
@@ -211,27 +211,28 @@ class InvoiceAmountModel(BaseResponseModel):
211
211
 
212
212
 
213
213
  class InvoiceMetadataModel(BaseResponseModel):
214
- invoiceId: Optional[str]
215
- clientId: Optional[str]
216
- fiatAmount: Optional[float]
214
+ invoiceId: Optional[str] | None = None
215
+ clientId: Optional[str] | None = None
216
+ fiatAmount: Optional[float] | None = None
217
217
 
218
218
 
219
219
  class InvoiceModel(BaseResponseModel):
220
220
  id: str | None = Field(..., alias='_id')
221
- orderId: str
222
- projectId: str
223
- currencyFrom: CurrencyModel
224
- currencyTo: CurrencyModel
225
- direction: InvoiceDirection
226
- amount: float
227
- status: InvoiceStatusModel
228
- amounts: InvoiceAmountModel
229
- metadata: InvoiceMetadataModel
230
- receiptUrls: List[str]
231
- isExpired: bool
221
+ orderId: str | None = None
222
+ projectId: str | None = None
223
+ currencyFrom: CurrencyModel | None = None
224
+ currencyTo: CurrencyModel | None = None
225
+ direction: InvoiceDirection | None = None
226
+ amount: float | None = None
227
+ status: InvoiceStatusModel | None = None
228
+ amounts: InvoiceAmountModel | None = None
229
+ metadata: InvoiceMetadataModel | None = None
230
+ receiptUrls: List[str] | None = None
231
+ isExpired: bool | None = None
232
232
  createdAt: datetime.datetime | None = None
233
233
  updatedAt: datetime.datetime | None = None
234
234
  expiredAt: datetime.datetime | None = None
235
+ model_config = ConfigDict(extra="ignore")
235
236
 
236
237
 
237
238
  class AssetsAccountModel(BaseResponseModel):
@@ -289,6 +290,7 @@ class QuoteTlvResponse(BaseResponseModel):
289
290
  qrVersion: int # qr code version, 1 - nspk, 2 - tlv encoded, 3 - tlv plain
290
291
  rate: float # exchange rate
291
292
  tlv: TLVExtended | None = None
293
+ isStatic: bool | None = None
292
294
  # merchant: Optional[str] = Field(default=None) # merchant title
293
295
  # logo: Optional[str] = Field(default=None) # merchant logo
294
296
 
@@ -299,3 +301,13 @@ class PayOutTlvRequest(BaseRequestModel):
299
301
  clientId: Optional[str] = Field(default=None)
300
302
  src_amount: Optional[float] = Field(default=None)
301
303
  sender_personal: Optional[PayOutSenderModel] = Field(default=None)
304
+
305
+ class ListMetadata(BaseResponseModel):
306
+ page: int
307
+ limit: int
308
+ total: int
309
+
310
+ class InvoiceListModelWithMeta(BaseResponseModel):
311
+ meta: ListMetadata
312
+ rows: List[InvoiceModel]
313
+ model_config = ConfigDict(extra="ignore")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: paymentsgate
3
- Version: 1.5.4
3
+ Version: 1.5.10
4
4
  Summary: PaymentsGate's Python SDK for REST API
5
5
  Home-page: https://github.com/paymentsgate/python-secure-api
6
6
  License: MIT
@@ -1,16 +1,16 @@
1
1
  paymentsgate/__init__.py,sha256=ZEvXcrfobIRRPO6szTwvaNWxx5t9MLGT7KCkB5dJun4,364
2
2
  paymentsgate/cache.py,sha256=gkx5Bu_Z8nEr_qDB4_O2tVbCdLmePztaz7iJRZWWn14,1007
3
- paymentsgate/client.py,sha256=Cm7Rpf1I8NG_Xi-FryW4RA06MxKd3V2yeIaZc2Zxgds,15209
4
- paymentsgate/enums.py,sha256=XPCXz6l4ZXci7g5HdfwIUSdfOhYrtbrKo5eYUrMWPII,4247
3
+ paymentsgate/client.py,sha256=EtIpCNQYU43JmmMaEWozlsgk2BmeIV-TaThdibCUbR8,16905
4
+ paymentsgate/enums.py,sha256=B58povNxtPDJTZGbQUm-CJFgdxgooO8nXCaZbVxcqco,6623
5
5
  paymentsgate/exceptions.py,sha256=HtQf0aRF5aKlXUh9uJyxHciJzXYC2zRxz9-HUIl2wDA,1525
6
6
  paymentsgate/logger.py,sha256=4Xs2R18au88LRUvF3Ll6xf8ziz4xyq65UU3pcgXPg8g,220
7
7
  paymentsgate/mappers.py,sha256=Rr4LM7lAPI1sQgaVirgm2LREvO-7vV4yEUsu6W_ARIw,162
8
- paymentsgate/models.py,sha256=ZLatzz3Mzt5cjjQo7YfnYXl-9MUmlJR9ighmA1BkQRs,9359
8
+ paymentsgate/models.py,sha256=qokxHu4esFBp5rk0TA1-bQyNKeieprWZda1ZQw4nJ6U,9882
9
9
  paymentsgate/signature.py,sha256=FCF9GKvVyXQAEpUylt3i3vJKhCWjEHgqfVqyA5l7WPY,2996
10
10
  paymentsgate/tokens.py,sha256=ZK_xKj8GWTlXjl-8ZlU216dZdxjFFEKsRp41XR1cUQA,914
11
11
  paymentsgate/transport.py,sha256=KA4Ro48s_6PzJ5ZRLf-eygYKjNUJ8OReiBWAVi8rHM8,852
12
12
  paymentsgate/types.py,sha256=AoMJ4eFpTAAZ_n4ZeUIJY4hUD_E9tFgoBUqKy18FJ44,130
13
- paymentsgate-1.5.4.dist-info/LICENSE,sha256=4xWMZLmqNJ6602DZLEg0A9v03uT4xMq_-XSIxvXvfYM,1075
14
- paymentsgate-1.5.4.dist-info/WHEEL,sha256=bbU3AyvhQ312rVm7zzRQjs6axI1UYWC3nmFA2E6FFSI,88
15
- paymentsgate-1.5.4.dist-info/METADATA,sha256=6yGpFZk0FpZUYaA1T8Kvuz1qPOWF_U90WyALc88pJB4,4055
16
- paymentsgate-1.5.4.dist-info/RECORD,,
13
+ paymentsgate-1.5.10.dist-info/LICENSE,sha256=4xWMZLmqNJ6602DZLEg0A9v03uT4xMq_-XSIxvXvfYM,1075
14
+ paymentsgate-1.5.10.dist-info/WHEEL,sha256=bbU3AyvhQ312rVm7zzRQjs6axI1UYWC3nmFA2E6FFSI,88
15
+ paymentsgate-1.5.10.dist-info/METADATA,sha256=My3IwdgE4KsiLo8oNEpW_8bO5UgO33iUaXvARKZX_iY,4056
16
+ paymentsgate-1.5.10.dist-info/RECORD,,