Coverage for packages/epoint/src/integrify/epoint/client.py: 100%
45 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-19 02:39 +0000
« prev ^ index » next coverage.py v7.16.0, created at 2026-10-19 02:39 +0000
1from collections.abc import Coroutine
2from typing import TYPE_CHECKING, Any, Generic, overload
3from typing import SupportsFloat as Numeric
5from integrify.api import APIClient, _Async, _Mode, _Sync
6from integrify.epoint import env
7from integrify.epoint.handlers import (
8 ApplePayPayloadHandler,
9 ApplePaySessionPayloadHandler,
10 CreateTokenPaymentPayloadHandler,
11 CreateWidgetPayloadHandler,
12 GetTransactionStatusPayloadHandler,
13 GooglePayPayloadHandler,
14 PayAndSaveCardPayloadHandler,
15 PaymentPayloadHandler,
16 PayoutPayloadHandler,
17 PayWithSavedCardPayloadHandler,
18 RefundPayloadHandler,
19 SaveCardPayloadHandler,
20 SplitPayAndSaveCardPayloadHandler,
21 SplitPayPayloadHandler,
22 SplitPayWithSavedCardPayloadHandler,
23)
24from integrify.epoint.schemas.response import (
25 BaseResponseSchema,
26 MinimalResponseSchema,
27 RedirectUrlResponseSchema,
28 RedirectUrlWithCardIdResponseSchema,
29 SplitPayWithSavedCardResponseSchema,
30 TokenPaymentResponseSchema,
31 TokenPayResponseSchema,
32 TransactionStatusResponseSchema,
33 WidgetResponseSchema,
34)
35from integrify.schemas import APIResponse
36from integrify.utils import UNSET, Unset
38__all__ = ['EPointAsyncRequest', 'EPointClientClass', 'EPointRequest']
41class EPointClientClass(APIClient, Generic[_Mode]):
42 """EPoint sorğular üçün baza class"""
44 def __init__(
45 self,
46 name='EPoint',
47 base_url: str | None = env.API.BASE_URL,
48 default_handler=None,
49 sync: bool = True,
50 dry: bool = False,
51 ):
52 super().__init__(name, base_url, default_handler, sync, dry)
54 self.add_url('pay', env.API.PAY, verb='POST')
55 self.add_handler('pay', PaymentPayloadHandler)
57 self.add_url('get_transaction_status', env.API.GET_STATUS, verb='POST')
58 self.add_handler('get_transaction_status', GetTransactionStatusPayloadHandler)
60 self.add_url('save_card', env.API.SAVE_CARD, verb='POST')
61 self.add_handler('save_card', SaveCardPayloadHandler)
63 self.add_url('pay_with_saved_card', env.API.PAY_WITH_SAVED_CARD, verb='POST')
64 self.add_handler('pay_with_saved_card', PayWithSavedCardPayloadHandler)
66 self.add_url('pay_and_save_card', env.API.PAY_AND_SAVE_CARD, verb='POST')
67 self.add_handler('pay_and_save_card', PayAndSaveCardPayloadHandler)
69 self.add_url('payout', env.API.PAYOUT, verb='POST')
70 self.add_handler('payout', PayoutPayloadHandler)
72 self.add_url('refund', env.API.REFUND, verb='POST')
73 self.add_handler('refund', RefundPayloadHandler)
75 self.add_url('split_pay', env.API.SPLIT_PAY, verb='POST')
76 self.add_handler('split_pay', SplitPayPayloadHandler)
78 self.add_url('split_pay_with_saved_card', env.API.SPLIT_PAY_WITH_SAVED_CARD, verb='POST')
79 self.add_handler('split_pay_with_saved_card', SplitPayWithSavedCardPayloadHandler)
81 self.add_url('split_pay_and_save_card', env.API.SPLIT_PAY_AND_SAVE_CARD, verb='POST')
82 self.add_handler('split_pay_and_save_card', SplitPayAndSaveCardPayloadHandler)
84 # Apple Pay & Google Pay
85 self.add_url('create_widget', env.API.CREATE_WIDGET, verb='POST')
86 self.add_handler('create_widget', CreateWidgetPayloadHandler)
88 self.add_url('create_token_payment', env.API.CREATE_TOKEN_PAYMENT, verb='POST')
89 self.add_handler('create_token_payment', CreateTokenPaymentPayloadHandler)
91 self.add_url('apple_pay_session', env.API.APPLE_PAY_SESSION, verb='POST')
92 self.add_handler('apple_pay_session', ApplePaySessionPayloadHandler)
94 self.add_url('apple_pay', env.API.APPLE_PAY, verb='POST')
95 self.add_handler('apple_pay', ApplePayPayloadHandler)
97 self.add_url('google_pay', env.API.GOOGLE_PAY, verb='POST')
98 self.add_handler('google_pay', GooglePayPayloadHandler)
100 if TYPE_CHECKING:
101 # pylint: disable=missing-function-docstring,unused-argument
103 @overload
104 def pay(
105 self: 'EPointClientClass[_Sync]',
106 amount: Numeric,
107 currency: str,
108 order_id: str,
109 description: Unset[str] = UNSET,
110 **extra: Any,
111 ) -> APIResponse[RedirectUrlResponseSchema]:
112 """Ödəniş sorğusu
114 **Endpoint:** */api/1/request*
116 Example:
117 ```python
118 from integrify.epoint import EPointRequest
120 EPointRequest.pay(amount=100, currency='AZN', order_id='12345678', description='Ödəniş')
121 ```
123 **Cavab formatı**: [`RedirectUrlResponseSchema`][integrify.epoint.schemas.response.RedirectUrlResponseSchema]
125 Bu sorğunu göndərdikdə, cavab olaraq `redirect_url` gəlir. Müştəri həmin URLə daxil
126 olub, kart məlumatlarını daxil edib, uğurlu ödəniş etdikdən sonra, backend callback
127 APIsinə (EPoint dashboard-ında qeyd etdiyiniz) sorğu daxil olur, və eyni `order_id`
128 ilə [`DecodedCallbackDataSchema`][integrify.epoint.schemas.callback.DecodedCallbackDataSchema]
129 formatında məlumat gəlir.
131 Args:
132 amount: Ödəniş miqdarı. Numerik dəyər.
133 currency: Ödəniş məzənnəsi. Mümkün dəyərlər: AZN
134 order_id: Unikal ID. Maksimal uzunluq: 255 simvol.
135 description: Ödənişin təsviri. Maksimal uzunluq: 1000 simvol. Məcburi arqument deyil.
136 **extra: Başqa ötürmək istədiyiniz əlavə dəyərlər. Bu dəyərlər callback sorğuda sizə
137 geri göndərilir.
138 """ # noqa: E501
140 @overload
141 def pay(
142 self: 'EPointClientClass[_Async]',
143 amount: Numeric,
144 currency: str,
145 order_id: str,
146 description: Unset[str] = UNSET,
147 **extra: Any,
148 ) -> Coroutine[Any, Any, APIResponse[RedirectUrlResponseSchema]]: ...
149 def pay(self, *args: Any, **kwds: Any) -> Any: ...
151 @overload
152 def get_transaction_status(
153 self: 'EPointClientClass[_Sync]',
154 transaction_id: str,
155 ) -> APIResponse[TransactionStatusResponseSchema]:
156 """
157 Transaksiya statusunu öyrənmək üçün sorğu
159 **Endpoint:** */api/1/get-status*
161 Example:
162 ```python
163 from integrify.epoint import EPointRequest
165 EPointRequest.get_transaction_status(transaction_id='texxxxxx')
166 ```
168 Cavab formatı: [`TransactionStatusResponseSchema`][integrify.epoint.schemas.response.TransactionStatusResponseSchema]
170 Args:
171 transaction_id: EPoint tərəfindən verilmiş tranzaksiya IDsi.
172 Adətən `te` prefiksi ilə olur.
173 """ # noqa: E501
175 @overload
176 def get_transaction_status(
177 self: 'EPointClientClass[_Async]',
178 transaction_id: str,
179 ) -> Coroutine[Any, Any, APIResponse[TransactionStatusResponseSchema]]: ...
180 def get_transaction_status(self, *args: Any, **kwds: Any) -> Any: ...
182 @overload
183 def save_card(
184 self: 'EPointClientClass[_Sync]',
185 ) -> APIResponse[RedirectUrlWithCardIdResponseSchema]:
186 """Ödəniş olmadan kartı yadda saxlamaq sorğusu
188 **Endpoint:** */api/1/card-registration*
190 Example:
191 ```python
192 from integrify.epoint import EPointRequest
194 EPointRequest.save_card()
195 ```
197 Cavab formatı: [`RedirectUrlWithCardIdResponseSchema`][integrify.epoint.schemas.response.RedirectUrlWithCardIdResponseSchema]
199 Bu sorğunu göndərdikdə, cavab olaraq `redirect_url` və `card_id` gəlir.
200 Müştəri həmin URLə daxil olub, kart məlumatlarını uğurlu qeyd etdikdən sonra,
201 backend callback APIsinə (EPoint dashboard-ında qeyd etdiyiniz) sorğu daxil olur,
202 və eyni `card_id` ilə [`DecodedCallbackDataSchema`][integrify.epoint.schemas.callback.DecodedCallbackDataSchema]
203 formatında məlumat gəlir.
204 """ # noqa: E501
206 @overload
207 def save_card(
208 self: 'EPointClientClass[_Async]',
209 ) -> Coroutine[Any, Any, APIResponse[RedirectUrlWithCardIdResponseSchema]]: ...
210 def save_card(self, *args: Any, **kwds: Any) -> Any: ...
212 @overload
213 def pay_with_saved_card(
214 self: 'EPointClientClass[_Sync]',
215 amount: Numeric,
216 currency: str,
217 order_id: str,
218 card_id: str,
219 ) -> APIResponse[BaseResponseSchema]:
220 """Yadda saxlanılmış kartla ödəniş sorğusu
222 **Endpoint:** */api/1/execute-pay*
224 Example:
225 ```python
226 from integrify.epoint import EPointRequest
228 EPointRequest.pay_with_saved_card(amount=100, currency='AZN', order_id='12345678', card_id='cexxxxxx')
229 ```
231 Cavab formatı: [`BaseResponseSchema`][integrify.epoint.schemas.response.BaseResponseSchema]
233 Bu sorğunu göndərdikdə, cavab olaraq `BaseResponseSchema` formatında
234 cavab gəlir, və ödənişin statusu birbaşa qayıdır: heç bir callback sorğusu gəlmir.
236 Args:
237 amount: Ödəniş miqdarı. Numerik dəyər.
238 currency: Ödəniş məzənnəsi. Mümkün dəyərlər: AZN
239 order_id: Unikal ID. Maksimal uzunluq: 255 simvol.
240 card_id: Saxlanılmış kartın id-si. Adətən `ce` prefiksi ilə başlayır.
241 """ # noqa: E501
243 @overload
244 def pay_with_saved_card(
245 self: 'EPointClientClass[_Async]',
246 amount: Numeric,
247 currency: str,
248 order_id: str,
249 card_id: str,
250 ) -> Coroutine[Any, Any, APIResponse[BaseResponseSchema]]: ...
251 def pay_with_saved_card(self, *args: Any, **kwds: Any) -> Any: ...
253 @overload
254 def pay_and_save_card(
255 self: 'EPointClientClass[_Sync]',
256 amount: Numeric,
257 currency: str,
258 order_id: str,
259 description: str,
260 ) -> APIResponse[RedirectUrlWithCardIdResponseSchema]:
261 """Ödəniş və kartı yadda saxlama sorğusu
263 **Endpoint:** */api/1/card-registration-with-pay*
265 Example:
266 ```python
267 from integrify.epoint import EPointRequest
269 EPointRequest.pay_and_save_card(amount=100, currency='AZN', order_id='12345678', description='Ödəniş')
270 ```
272 Cavab formatı: [`RedirectUrlWithCardIdResponseSchema`][integrify.epoint.schemas.response.RedirectUrlWithCardIdResponseSchema]
274 Bu sorğunu göndərdikdə, cavab olaraq `redirect_url` və `card_id` gəlir. Müştəri həmin URLə
275 daxil olub, kart məlumatlarını daxil edib, uğurlu ödəniş etdikdən sonra, backend callback
276 APIsinə (EPoint dashboard-ında qeyd etdiyiniz) sorğu daxil olur, və eyni `order_id` və
277 `card_id` ilə [`DecodedCallbackDataSchema`][integrify.epoint.schemas.callback.DecodedCallbackDataSchema]
278 formatında məlumat gəlir.
280 Args:
281 amount: Ödəniş miqdarı. Numerik dəyər.
282 currency: Ödəniş məzənnəsi. Mümkün dəyərlər: AZN
283 order_id: Unikal ID. Maksimal uzunluq: 255 simvol.
284 description: Ödənişin təsviri. Maksimal uzunluq: 1000 simvol. Məcburi arqument deyil.
285 """ # noqa: E501
287 @overload
288 def pay_and_save_card(
289 self: 'EPointClientClass[_Async]',
290 amount: Numeric,
291 currency: str,
292 order_id: str,
293 description: str,
294 ) -> Coroutine[Any, Any, APIResponse[RedirectUrlWithCardIdResponseSchema]]: ...
295 def pay_and_save_card(self, *args: Any, **kwds: Any) -> Any: ...
297 @overload
298 def payout(
299 self: 'EPointClientClass[_Sync]',
300 amount: Numeric,
301 currency: str,
302 order_id: str,
303 card_id: str,
304 description: Unset[str] = UNSET,
305 ) -> APIResponse[BaseResponseSchema]:
306 """Hesabınızda olan pulu karta nağdlaşdırmaq sorğusu
308 **Endpoint:** */api/1/refund-request*
310 Example:
311 ```python
312 from integrify.epoint import EPointRequest
314 EPointRequest.payout(amount=100, currency='AZN', order_id='12345678', card_id='cexxxxxx', description='Ödəniş')
315 ```
317 Cavab sorğu formatı: [`BaseResponseSchema`][integrify.epoint.schemas.response.BaseResponseSchema]
319 Bu sorğunu göndərdikdə, əməliyyat Epoint xidməti tərəfindən işləndikdən və bankdan ödəniş
320 statusu alındıqdan sonra cavab `BaseResponseSchema` formatında qayıdacaqdır
322 Args:
323 amount: Nağdlaşdırmaq miqdarı. Numerik dəyər.
324 currency: Nağdlaşdırma məzənnəsi. Mümkün dəyərlər: AZN
325 order_id: Unikal ID. Maksimal uzunluq: 255 simvol.
326 card_id: Saxlanılmış kartın id-si. Adətən `ce` prefiksi ilə başlayır.
327 description: Nağdlaşdırmanın təsviri. Maksimal uzunluq: 1000 simvol. Məcburi arqument deyil.
328 """ # noqa: E501
330 @overload
331 def payout(
332 self: 'EPointClientClass[_Async]',
333 amount: Numeric,
334 currency: str,
335 order_id: str,
336 card_id: str,
337 description: Unset[str] = UNSET,
338 ) -> Coroutine[Any, Any, APIResponse[BaseResponseSchema]]: ...
339 def payout(self, *args: Any, **kwds: Any) -> Any: ...
341 @overload
342 def refund(
343 self: 'EPointClientClass[_Sync]',
344 transaction_id: str,
345 currency: str,
346 amount: Unset[Numeric] = UNSET,
347 ) -> APIResponse[MinimalResponseSchema]:
348 """Keçmiş ödənişi tam və ya yarımçıq geri qaytarma sorğusu
350 **Endpoint:** */api/1/reverse*
352 Example:
353 ```python
354 from integrify.epoint import EPointRequest
356 # Full refund
357 EPointRequest.refund(transaction_id='texxxxxx', currency='AZN')
359 # Partial refund
360 EPointRequest.refund(transaction_id='texxxxxx', currency='AZN', amount=50)
361 ```
363 Cavab formatı: [`MinimalResponseSchema`][integrify.epoint.schemas.response.MinimalResponseSchema]
365 Bu sorğunu göndərdikdə, cavab olaraq `status` və `message` gəlir.
366 Heç bir callback sorğusu göndərilmir.
368 Args:
369 transaction_id: EPoint tərəfindən verilmiş tranzaksiya IDsi.
370 Adətən `te` prefiksi ilə olur.
371 currency: Ödəniş məzənnəsi. Mümkün dəyərlər: AZN
372 amount: Ödəniş məbləği. Məbləğin göndərilməsi yarımçıq geri-qaytarma hesab olunur,
373 əks halda tam geri-qaytarma baş verəcəkdir.
374 """ # noqa: E501
376 @overload
377 def refund(
378 self: 'EPointClientClass[_Async]',
379 transaction_id: str,
380 currency: str,
381 amount: Unset[Numeric] = UNSET,
382 ) -> Coroutine[Any, Any, APIResponse[MinimalResponseSchema]]: ...
383 def refund(self, *args: Any, **kwds: Any) -> Any: ...
385 @overload
386 def split_pay(
387 self: 'EPointClientClass[_Sync]',
388 amount: Numeric,
389 currency: str,
390 order_id: str,
391 split_user_id: str,
392 split_amount: Numeric,
393 description: Unset[str] = UNSET,
394 **extra: Any,
395 ) -> APIResponse[RedirectUrlResponseSchema]:
396 """Ödənişi başqa EPoint istifadəçisi ilə bölüb ödəmə sorğusu
398 **Endpoint:** */api/1/split-request*
400 Example:
401 ```python
402 from integrify.epoint import EPointRequest
404 EPointRequest.split_pay(amount=100, currency='AZN', order_id='123456789', split_user_id='epoint_user_id', split_amount=50, description='split payment')
405 ```
407 Cavab formatı: [`RedirectUrlResponseSchema`][integrify.epoint.schemas.response.RedirectUrlResponseSchema]
409 Args:
410 amount: Ödəniş miqdarı. Numerik dəyər.
411 currency: Ödəniş məzənnəsi. Mümkün dəyərlər: AZN
412 order_id: Unikal ID. Maksimal uzunluq: 255 simvol.
413 split_user_id: Ödənişi böləcəyini **EPoint** user-ini IDsi
414 split_amount: Bölünən miqdar. Numerik dəyər
415 description: Ödənişin təsviri. Maksimal uzunluq: 1000 simvol. Məcburi arqument deyil.
416 **extra: Başqa ötürmək istədiyiniz əlavə dəyərlər. Bu dəyərlər callback sorğuda sizə
417 geri göndərilir.
418 """ # noqa: E501
420 @overload
421 def split_pay(
422 self: 'EPointClientClass[_Async]',
423 amount: Numeric,
424 currency: str,
425 order_id: str,
426 split_user_id: str,
427 split_amount: Numeric,
428 description: Unset[str] = UNSET,
429 **extra: Any,
430 ) -> Coroutine[Any, Any, APIResponse[RedirectUrlResponseSchema]]: ...
431 def split_pay(self, *args: Any, **kwds: Any) -> Any: ...
433 @overload
434 def split_pay_with_saved_card(
435 self: 'EPointClientClass[_Sync]',
436 amount: Numeric,
437 currency: str,
438 order_id: str,
439 card_id: str,
440 split_user_id: str,
441 split_amount: Numeric,
442 description: Unset[str] = UNSET,
443 ) -> APIResponse[SplitPayWithSavedCardResponseSchema]:
444 """Saxlanılmış kartla ödənişi başqa EPoint istifadəçisi ilə bölüb ödəmə sorğusu
446 **Endpoint:** */api/1/split-execute-pay*
448 Example:
449 ```python
450 from integrify.epoint import EPointRequest
452 EPointRequest.split_pay_with_saved_card(amount=100, currency='AZN', order_id='123456789', card_id='cexxxxxx', split_user_id='epoint_user_id', split_amount=50, description='split payment')
453 ```
455 Cavab formatı: [`SplitPayWithSavedCardResponseSchema`][integrify.epoint.schemas.response.SplitPayWithSavedCardResponseSchema]
457 Args:
458 amount: Ödəniş miqdarı. Numerik dəyər.
459 currency: Ödəniş məzənnəsi. Mümkün dəyərlər: AZN
460 order_id: Unikal ID. Maksimal uzunluq: 255 simvol.
461 card_id: Saxlanılmış kartın id-si. Adətən `ce` prefiksi ilə başlayır.
462 split_user_id: Ödənişi böləcəyini **EPoint** user-ini IDsi
463 split_amount: Bölünən miqdar. Numerik dəyər
464 description: Ödənişin təsviri. Maksimal uzunluq: 1000 simvol. Məcburi arqument deyil.
465 """ # noqa: E501
467 @overload
468 def split_pay_with_saved_card(
469 self: 'EPointClientClass[_Async]',
470 amount: Numeric,
471 currency: str,
472 order_id: str,
473 card_id: str,
474 split_user_id: str,
475 split_amount: Numeric,
476 description: Unset[str] = UNSET,
477 ) -> Coroutine[Any, Any, APIResponse[SplitPayWithSavedCardResponseSchema]]: ...
478 def split_pay_with_saved_card(self, *args: Any, **kwds: Any) -> Any: ...
480 @overload
481 def split_pay_and_save_card(
482 self: 'EPointClientClass[_Sync]',
483 amount: Numeric,
484 currency: str,
485 order_id: str,
486 split_user_id: str,
487 split_amount: Numeric,
488 description: Unset[str] = UNSET,
489 ) -> APIResponse[RedirectUrlWithCardIdResponseSchema]:
490 """Ödənişi başqa EPoint istifadəçisi ilə bölüb ödəmə və kartı saxlama sorğusu
492 **Endpoint:** */api/1/split-card-registration-with-pay*
494 Example:
495 ```python
496 from integrify.epoint import EPointRequest
498 EPointRequest.split_pay_and_save_card(amount=100, currency='AZN', order_id='123456789', split_user_id='epoint_user_id', split_amount=50, description='split payment')
499 ```
501 Cavab formatı: [`RedirectUrlWithCardIdResponseSchema`][integrify.epoint.schemas.response.RedirectUrlWithCardIdResponseSchema]
503 Args:
504 amount: Ödəniş miqdarı. Numerik dəyər.
505 currency: Ödəniş məzənnəsi. Mümkün dəyərlər: AZN
506 order_id: Unikal ID. Maksimal uzunluq: 255 simvol.
507 split_user_id: Ödənişi böləcəyini **EPoint** user-ini IDsi
508 split_amount: Bölünən miqdar. Numerik dəyər
509 description: Ödənişin təsviri. Maksimal uzunluq: 1000 simvol. Məcburi arqument deyil.
510 """ # noqa: E501
512 @overload
513 def split_pay_and_save_card(
514 self: 'EPointClientClass[_Async]',
515 amount: Numeric,
516 currency: str,
517 order_id: str,
518 split_user_id: str,
519 split_amount: Numeric,
520 description: Unset[str] = UNSET,
521 ) -> Coroutine[Any, Any, APIResponse[RedirectUrlWithCardIdResponseSchema]]: ...
522 def split_pay_and_save_card(self, *args: Any, **kwds: Any) -> Any: ...
524 @overload
525 def create_widget(
526 self: 'EPointClientClass[_Sync]',
527 amount: Numeric,
528 order_id: str,
529 description: str,
530 ) -> APIResponse[WidgetResponseSchema]:
531 """Apple Pay və Google Pay widget-i yaratma sorğusu
533 **Endpoint:** */api/1/token/widget*
535 Example:
536 ```python
537 from integrify.epoint import EPointRequest
539 EPointRequest.create_widget(amount=2.5, order_id='12345678', description='Ödəniş')
540 ```
542 **Cavab formatı**: [`WidgetResponseSchema`][integrify.epoint.schemas.response.WidgetResponseSchema]
544 Apple Pay/Google Pay-i qoşmağın ən sadə yolu. Cavabda gələn `widget_url`-i saytınızda
545 iframe, mobil tətbiqdə isə webview daxilində açın: düymələr və ödəniş axını EPoint
546 tərəfindən idarə olunur, əlavə backend endpoint-lərinə ehtiyac yoxdur. Ödəniş bitdikdən
547 sonra widget səhifəyə `message` event-i göndərir (`event.data`:
548 `{status: 'success', payment: {...}}`). Ödənişin nəticəsini backend-də
549 [`get_transaction_status`][integrify.epoint.client.EPointClientClass.get_transaction_status]
550 ilə yoxlamaq tövsiyə olunur.
552 Düymələri öz dizaynınızla göstərmək istəyirsinizsə,
553 [`create_token_payment`][integrify.epoint.client.EPointClientClass.create_token_payment]
554 ilə başlayan SDK axınından istifadə edin.
556 Args:
557 amount: Ödəniş miqdarı. Numerik dəyər.
558 order_id: Unikal ID. Maksimal uzunluq: 255 simvol.
559 description: Ödənişin təsviri. Maksimal uzunluq: 1000 simvol.
560 """ # noqa: E501
562 @overload
563 def create_widget(
564 self: 'EPointClientClass[_Async]',
565 amount: Numeric,
566 order_id: str,
567 description: str,
568 ) -> Coroutine[Any, Any, APIResponse[WidgetResponseSchema]]: ...
569 def create_widget(self, *args: Any, **kwds: Any) -> Any: ...
571 @overload
572 def create_token_payment(
573 self: 'EPointClientClass[_Sync]',
574 amount: Numeric,
575 currency: str,
576 order_id: str,
577 description: Unset[str] = UNSET,
578 ) -> APIResponse[TokenPaymentResponseSchema]:
579 """Apple Pay/Google Pay üçün token ödənişi yaratma sorğusu
581 **Endpoint:** */api/1/token/payment*
583 Example:
584 ```python
585 from integrify.epoint import EPointRequest
587 EPointRequest.create_token_payment(amount=2.5, currency='AZN', order_id='12345678', description='Ödəniş')
588 ```
590 **Cavab formatı**: [`TokenPaymentResponseSchema`][integrify.epoint.schemas.response.TokenPaymentResponseSchema]
592 Apple Pay/Google Pay düymələrini işə salmazdan əvvəl, EPoint-də token ödənişi
593 yaradılmalıdır: bütün sonrakı token əməliyyatları bu ödənişə istinad edir. Cavabda gələn
594 ödəniş obyektini (ən azı `id` və məbləği) frontend-də `initTokenPay`-ə `payment`
595 parametri kimi ötürün. Sonra SDK sizin backend-inizdəki
596 [`apple_pay_session`][integrify.epoint.client.EPointClientClass.apple_pay_session],
597 [`apple_pay`][integrify.epoint.client.EPointClientClass.apple_pay] və
598 [`google_pay`][integrify.epoint.client.EPointClientClass.google_pay] sorğularını
599 çağıran endpoint-lərə müraciət edəcək.
601 Args:
602 amount: Ödəniş miqdarı. Numerik dəyər.
603 currency: Ödəniş məzənnəsi. Mümkün dəyərlər: AZN
604 order_id: Unikal ID. Maksimal uzunluq: 255 simvol.
605 description: Ödənişin təsviri. Məcburi arqument deyil.
606 """ # noqa: E501
608 @overload
609 def create_token_payment(
610 self: 'EPointClientClass[_Async]',
611 amount: Numeric,
612 currency: str,
613 order_id: str,
614 description: Unset[str] = UNSET,
615 ) -> Coroutine[Any, Any, APIResponse[TokenPaymentResponseSchema]]: ...
616 def create_token_payment(self, *args: Any, **kwds: Any) -> Any: ...
618 @overload
619 def apple_pay_session(
620 self: 'EPointClientClass[_Sync]',
621 origin: str,
622 ) -> APIResponse[dict]:
623 """Apple Pay session-u almaq sorğusu
625 **Endpoint:** */api/1/token/apple/session*
627 Example:
628 ```python
629 from integrify.epoint import EPointRequest
631 EPointRequest.apple_pay_session(origin='https://yoursite.az')
632 ```
634 **Cavab formatı**: `dict` (Apple merchant session obyekti, olduğu kimi)
636 Apple Pay-in əlavə təhlükəsizlik qatı var: SDK ödəniş pəncərəsini açmazdan əvvəl
637 sizin backend-inizdəki session endpoint-inə (məs., `/epoint/apple/session`) POST
638 sorğusu göndərir. Həmin endpoint bu sorğunu çağırıb, `resp.body`-ni olduğu kimi
639 geri qaytarmalıdır.
641 Args:
642 origin: Ödəniş səhifəsinin açıldığı saytın origin-i (məs., `https://yoursite.az`).
643 Adətən daxil olan sorğunun `Origin` header-indən götürülür.
644 """ # noqa: E501
646 @overload
647 def apple_pay_session(
648 self: 'EPointClientClass[_Async]',
649 origin: str,
650 ) -> Coroutine[Any, Any, APIResponse[dict]]: ...
651 def apple_pay_session(self, *args: Any, **kwds: Any) -> Any: ...
653 @overload
654 def apple_pay(
655 self: 'EPointClientClass[_Sync]',
656 payment_id: int | str,
657 token: Any,
658 billing_contact: Any = None,
659 ) -> APIResponse[TokenPayResponseSchema]:
660 """Apple Pay ilə ödənişi tamamlama sorğusu
662 **Endpoint:** */api/1/token/apple/pay*
664 Example:
665 ```python
666 from integrify.epoint import EPointRequest
668 # body: SDK-nın sizin `/epoint/apple` endpoint-inə göndərdiyi JSON
669 EPointRequest.apple_pay(
670 payment_id=body['id'],
671 token=body['token'],
672 billing_contact=body.get('billingContact'),
673 )
674 ```
676 **Cavab formatı**: [`TokenPayResponseSchema`][integrify.epoint.schemas.response.TokenPayResponseSchema]
678 Session uğurla yaradıldıqdan və istifadəçi Apple Pay pəncərəsində ödənişi
679 təsdiqlədikdən sonra (kart seçimi, təsdiq), SDK sizin backend-inizdəki pay
680 endpoint-inə (məs., `/epoint/apple`) `id`, `token` və `billingContact` göndərir.
681 Həmin endpoint bu sorğunu çağırıb, `resp.body`-ni olduğu kimi geri qaytarmalıdır.
682 `public_key` avtomatik əlavə olunur.
684 Args:
685 payment_id: Token ödənişinin IDsi (SDK sorğusundakı `id`).
686 token: Apple Pay token-i (SDK sorğusundakı `token`).
687 billing_contact: Ödəyicinin billing məlumatı (SDK sorğusundakı `billingContact`).
688 """ # noqa: E501
690 @overload
691 def apple_pay(
692 self: 'EPointClientClass[_Async]',
693 payment_id: int | str,
694 token: Any,
695 billing_contact: Any = None,
696 ) -> Coroutine[Any, Any, APIResponse[TokenPayResponseSchema]]: ...
697 def apple_pay(self, *args: Any, **kwds: Any) -> Any: ...
699 @overload
700 def google_pay(
701 self: 'EPointClientClass[_Sync]',
702 payment_id: int | str,
703 token: Any,
704 billing_contact: Any = None,
705 ) -> APIResponse[TokenPayResponseSchema]:
706 """Google Pay ilə ödənişi tamamlama sorğusu
708 **Endpoint:** */api/1/token/google/pay*
710 Example:
711 ```python
712 from integrify.epoint import EPointRequest
714 # body: SDK-nın sizin `/epoint/google` endpoint-inə göndərdiyi JSON
715 EPointRequest.google_pay(
716 payment_id=body['id'],
717 token=body['token'],
718 billing_contact=body.get('billingContact'),
719 )
720 ```
722 **Cavab formatı**: [`TokenPayResponseSchema`][integrify.epoint.schemas.response.TokenPayResponseSchema]
724 Apple Pay ilə eynidir, yalnız endpoint fərqlidir və session mərhələsi yoxdur.
725 İstifadəçi Google Pay pəncərəsində ödənişi təsdiqlədikdən sonra, SDK sizin
726 backend-inizdəki pay endpoint-inə (məs., `/epoint/google`) `id`, `token` və
727 `billingContact` göndərir. Həmin endpoint bu sorğunu çağırıb, `resp.body`-ni
728 olduğu kimi geri qaytarmalıdır. `public_key` avtomatik əlavə olunur.
730 Args:
731 payment_id: Token ödənişinin IDsi (SDK sorğusundakı `id`).
732 token: Google Pay token-i (SDK sorğusundakı `token`).
733 billing_contact: Ödəyicinin billing məlumatı (SDK sorğusundakı `billingContact`).
734 """ # noqa: E501
736 @overload
737 def google_pay(
738 self: 'EPointClientClass[_Async]',
739 payment_id: int | str,
740 token: Any,
741 billing_contact: Any = None,
742 ) -> Coroutine[Any, Any, APIResponse[TokenPayResponseSchema]]: ...
743 def google_pay(self, *args: Any, **kwds: Any) -> Any: ...
746EPointRequest: 'EPointClientClass[_Sync]' = EPointClientClass(sync=True)
747EPointAsyncRequest: 'EPointClientClass[_Async]' = EPointClientClass(sync=False)