Coverage for packages/azericard/src/integrify/azericard/client.py: 100%

33 statements  

« prev     ^ index     » next       coverage.py v7.16.0, created at 2026-10-19 02:39 +0000

1from collections.abc import Coroutine 

2from datetime import datetime 

3from typing import TYPE_CHECKING, Any, Generic, overload 

4from typing import SupportsFloat as Numeric 

5 

6from integrify.api import APIClient, APIPayloadHandler, APIResponse, _Async, _Mode, _Sync 

7from integrify.azericard import env 

8from integrify.azericard.handler import ( 

9 AuthAndSavePayloadHandler, 

10 AuthConfirmPayloadHandler, 

11 AuthPayloadHandler, 

12 AuthWithSavedCardPayloadHandler, 

13 GetTransactionStatusPayloadHandler, 

14 TransferConfirmPayloadHandler, 

15 TransferStartPayloadHandler, 

16) 

17from integrify.azericard.schemas.enums import AuthorizationResponseType, AuthorizationType 

18from integrify.azericard.schemas.request.auth import MInfo 

19from integrify.azericard.schemas.response import ( 

20 GetTransactionStatusResponseSchema, 

21 TransferConfirmResponseSchema, 

22 TransferDeclineResponseSchema, 

23) 

24from integrify.schemas import DryResponse 

25from integrify.utils import UNSET as _UNSET 

26from integrify.utils import Unset as Unsettable 

27 

28 

29class AzeriCardClientClass(APIClient, Generic[_Mode]): 

30 """AzeriCard sorğular üçün baza class""" 

31 

32 def __init__( 

33 self, 

34 name: str = 'AzeriCard', 

35 base_url: str | None = None, 

36 default_handler: APIPayloadHandler | None = None, 

37 sync: bool = True, 

38 dry: bool = False, 

39 ): 

40 super().__init__(name, base_url, default_handler, sync, dry) 

41 

42 self.add_url( 

43 'authorization', 

44 env.MpiAPI.AUTHORIZATION, 

45 'POST', 

46 base_url=env.MpiAPI.BASE_URL, 

47 ) 

48 self.add_handler('authorization', AuthPayloadHandler) 

49 

50 self.add_url( 

51 'finalize', 

52 env.MpiAPI.AUTHORIZATION, 

53 verb='POST', 

54 base_url=env.MpiAPI.BASE_URL, 

55 ) 

56 self.add_handler('finalize', AuthConfirmPayloadHandler) 

57 

58 self.add_url( 

59 'auth_and_save_card', 

60 env.MpiAPI.SAVE_CARD, 

61 verb='POST', 

62 base_url=env.MpiAPI.BASE_URL, 

63 ) 

64 self.add_handler('auth_and_save_card', AuthAndSavePayloadHandler) 

65 

66 self.add_url( 

67 'auth_with_saved_card', 

68 env.MpiAPI.SAVE_CARD, 

69 verb='POST', 

70 base_url=env.MpiAPI.BASE_URL, 

71 ) 

72 self.add_handler('auth_with_saved_card', AuthWithSavedCardPayloadHandler) 

73 

74 self.add_url( 

75 'get_transaction_status', 

76 env.MpiAPI.AUTHORIZATION, 

77 verb='POST', 

78 base_url=env.MpiAPI.BASE_URL, 

79 ) 

80 self.add_handler('get_transaction_status', GetTransactionStatusPayloadHandler) 

81 

82 self.add_url('transfer_start', env.MtAPI.TRANSFER, verb='GET', base_url=env.MtAPI.BASE_URL) 

83 self.add_handler('transfer_start', TransferStartPayloadHandler) 

84 

85 self.add_url( 

86 'transfer_confirm', 

87 env.MtAPI.TRANSFER_CONFIRM, 

88 verb='POST', 

89 base_url=env.MtAPI.BASE_URL, 

90 ) 

91 self.add_handler('transfer_confirm', TransferConfirmPayloadHandler) 

92 

93 self.add_url( 

94 'transfer_decline', 

95 env.MtAPI.TRANSFER_DECLINE, 

96 verb='POST', 

97 base_url=env.MtAPI.BASE_URL, 

98 ) 

99 

100 if TYPE_CHECKING: 

101 # pylint: disable=missing-function-docstring,unused-argument 

102 

103 @overload 

104 def authorization( 

105 self: 'AzeriCardClientClass[_Sync]', 

106 amount: Numeric, 

107 currency: str, 

108 order: str, 

109 desc: str, 

110 trtype: AuthorizationType, 

111 merch_name: str = env.AZERICARD_MERCHANT_NAME, 

112 merch_url: str = env.AZERICARD_MERCHANT_EMAIL, 

113 terminal: str = env.AZERICARD_MERCHANT_ID, 

114 email: str = env.AZERICARD_MERCHANT_EMAIL, 

115 country: Unsettable[str] = _UNSET, 

116 merch_gmt: Unsettable[str] = _UNSET, 

117 backref: str = env.AZERICARD_CALLBACK_URL, 

118 timestamp: datetime | str = datetime.now(), 

119 lang: str = env.AZERICARD_INTERFACE_LANG, 

120 name: Unsettable[str] = _UNSET, 

121 m_info: Unsettable[MInfo] = _UNSET, 

122 ) -> DryResponse: 

123 """Ümumi Ödəniş/Pul Dondurma/Dondurulmanı sorğusu 

124 

125 **Endpoint:** *https://{test}mpi.3dsecure.az/cgi-bin/cgi_link* 

126 

127 Example: 

128 ```python 

129 from integrify.azericard import AzeriCardClient 

130 from integrify.azericard.schemas.enums import AuthorizationType 

131 

132 AzeriCardClient.authorization(amount=100, currency='AZN', order='12345678', desc='Ödəniş', trype=AuthorizationType.FREEZE, name='Filankes') 

133 ``` 

134 

135 **Cavab formatı**: Yoxdur. Redirect baş verir, nəticə callback sorğusunda qayıdır. 

136 

137 Args: 

138 amount: Ödəniş miqdarı. Numerik dəyər. 

139 currency: Sifariş valyutası: 3 simvollu valyuta: (AZN) 

140 order: Satıcı sifariş ID-si, rəqəmsal. Son 6 rəqəm sistem izi audit nömrəsi kimi istifadə olunur, terminal id üçün bir gün ərzində unikal olmalıdır 

141 desc: Ödənişin təsviri/açıqlaması 

142 merch_name: Satıcının (merchant) adı (kart istifadəçisinin anladığı formada olmalıdır) 

143 merch_url: Satıcının web site URL-i 

144 terminal: Bank tərəfindən təyin edilmiş Merchant Terminal ID. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir. 

145 trtype: Tranzaksiya növü: 0 (Pre-Avtorizasiya əməliyyatı, pulu bloklamaq/dondurmaq) və ya 1 (Avtorizasiya əməliyyatı, birbaşa ödəniş) 

146 email: Bildirişlər üçün Email ünvan. Qeyd olunmuş sahə doldurulduğu halda Gateway email ünvanı müəyyən etmək üçün əməliyyat nəticəsi haqqında bildiriş göndərə bilər 

147 country: Merchant shop 2 simvollu ölkə kodu. Merchant sistemi Gateway serverin yerləşdiyi ölkədən fərqli ölkədə yerləşirsə qeyd olunmalıdır 

148 merch_gmt: Merchant-ın UTC/GMT vaxt zonası. Merchant sistemi Gateway serverin yerləşdiyi vaxt zonasından fərqli vaxt zonasında yerləşirsə qeyd olunmalıdır 

149 backref: Avtorizasiya nəticəsinin yerləşdirilməsində(post) istifadə olunan Merchant URL 

150 timestamp: Merchant server-lə e-Gateway server arasında zaman fərqi 1 saatı aşmamalıdır, əks halda Gateway tranzaksiyaya imtina verəcək. Dəyər verilmədikdə, `now` avtomatik göndəriləcək 

151 lang: Dil seçimi 

152 name: Müştərinin adı (kartda göstərildiyi kimi) 

153 m_info: Əlavə məlumatlar. Məs: {"browserScreenHeight":"1920","browserScreenWidth":"1080","browserTZ":"0","mobilePhone":{"cc":"994","subscriber":"5077777777"}} 

154 """ # noqa: E501 

155 

156 @overload 

157 def authorization( 

158 self: 'AzeriCardClientClass[_Async]', 

159 amount: Numeric, 

160 currency: str, 

161 order: str, 

162 desc: str, 

163 trtype: AuthorizationType, 

164 merch_name: str = env.AZERICARD_MERCHANT_NAME, 

165 merch_url: str = env.AZERICARD_MERCHANT_EMAIL, 

166 terminal: str = env.AZERICARD_MERCHANT_ID, 

167 email: str = env.AZERICARD_MERCHANT_EMAIL, 

168 country: Unsettable[str] = _UNSET, 

169 merch_gmt: Unsettable[str] = _UNSET, 

170 backref: str = env.AZERICARD_CALLBACK_URL, 

171 timestamp: datetime | str = datetime.now(), 

172 lang: str = env.AZERICARD_INTERFACE_LANG, 

173 name: Unsettable[str] = _UNSET, 

174 m_info: Unsettable[MInfo] = _UNSET, 

175 ) -> Coroutine[Any, Any, DryResponse]: ... 

176 def authorization(self, *args: Any, **kwds: Any) -> Any: ... 

177 

178 @overload 

179 def finalize( 

180 self: 'AzeriCardClientClass[_Sync]', 

181 amount: Numeric, 

182 currency: str, 

183 order: str, 

184 rrn: str, 

185 int_ref: str, 

186 trtype: AuthorizationResponseType, 

187 terminal: str = env.AZERICARD_MERCHANT_ID, 

188 timestamp: datetime | str = datetime.now(), 

189 ) -> DryResponse: 

190 """PreAuthorization (pulu bloklama) sorğusuna cavab və ya direkt ödənişi refund sorğusu 

191 

192 **Endpoint:** *https://{test}mpi.3dsecure.az/cgi-bin/cgi_link* 

193 

194 Example: 

195 ```python 

196 from integrify.azericard import AzeriCardClient 

197 from integrify.azericard.schemas.enums import AuthorizationResponseType 

198 

199 AzeriCardClient.finalize(amount=100, currency='AZN', order='12345678', rrn='payment_rrn', int_ref='int_ref', trtype=AuthorizationResponseType.ACCEPT_PAYMENT) 

200 ``` 

201 

202 **Cavab formatı**: 

203 

204 Args: 

205 amount: Ödəniş miqdarı. Numerik dəyər. 

206 currency: Sifariş valyutası: 3 simvollu valyuta: (AZN) 

207 order: Satıcı sifariş ID-si, rəqəmsal. Son 6 rəqəm sistem izi audit nömrəsi kimi istifadə olunur, terminal id üçün bir gün ərzində unikal olmalıdır 

208 rrn: Ödənişin RRN-i, Authorization sorğusuna response-da gəlir 

209 int_ref: Ödənişin referansı, Authorization sorğusuna response-da gəlir 

210 trtype: Tranzaksiya növü: 21 (Təsdiq), 22 (Geri qaytarma), 24 (Ləğv etmə, spesifik banklar üçün istifadə olunur) 

211 timestamp: Merchant server-lə e-Gateway server arasında zaman fərqi 1 saatı aşmamalıdır, əks halda Gateway tranzaksiyaya imtina verəcək. Dəyər verilmədikdə, `now` avtomatik göndəriləcək 

212 """ # noqa: E501 

213 

214 @overload 

215 def finalize( 

216 self: 'AzeriCardClientClass[_Async]', 

217 amount: Numeric, 

218 currency: str, 

219 order: str, 

220 rrn: str, 

221 int_ref: str, 

222 trtype: AuthorizationResponseType, 

223 terminal: str = env.AZERICARD_MERCHANT_ID, 

224 timestamp: datetime | str = datetime.now(), 

225 ) -> Coroutine[Any, Any, DryResponse]: ... 

226 def finalize(self, *args: Any, **kwds: Any) -> Any: ... 

227 

228 @overload 

229 def auth_and_save_card( 

230 self: 'AzeriCardClientClass[_Sync]', 

231 amount: Numeric, 

232 currency: str, 

233 order: str, 

234 desc: str, 

235 trtype: AuthorizationType, 

236 merch_name: str = env.AZERICARD_MERCHANT_NAME, 

237 merch_url: str = env.AZERICARD_MERCHANT_EMAIL, 

238 terminal: str = env.AZERICARD_MERCHANT_ID, 

239 email: str = env.AZERICARD_MERCHANT_EMAIL, 

240 country: Unsettable[str] = _UNSET, 

241 merch_gmt: Unsettable[str] = _UNSET, 

242 backref: str = env.AZERICARD_CALLBACK_URL, 

243 timestamp: datetime | str = datetime.now(), 

244 lang: str = env.AZERICARD_INTERFACE_LANG, 

245 name: Unsettable[str] = _UNSET, 

246 m_info: Unsettable[MInfo] = _UNSET, 

247 ) -> DryResponse: 

248 """Ümumi kartı saxlayaraq ödəniş sorğusu 

249 

250 **Endpoint:** *https://{test}mpi.3dsecure.az/token/cgi_link* 

251 

252 Example: 

253 ```python 

254 from integrify.azericard import AzeriCardClient 

255 from integrify.azericard.schemas.enums import AuthorizationType 

256 

257 AzeriCardClient.auth_and_save_card(amount=100, currency='AZN', order='12345678', desc='Ödəniş', trype=AuthorizationType.DIRECT, name='Filankes') 

258 ``` 

259 

260 **Cavab formatı**: Callback sorğu baş verir 

261 

262 Args: 

263 amount: Ödəniş miqdarı. Numerik dəyər. 

264 currency: Sifariş valyutası: 3 simvollu valyuta: (AZN) 

265 order: Satıcı sifariş ID-si, rəqəmsal. Son 6 rəqəm sistem izi audit nömrəsi kimi istifadə olunur, terminal id üçün bir gün ərzində unikal olmalıdır 

266 desc: Ödənişin təsviri/açıqlaması 

267 merch_name: Satıcının (merchant) adı (kart istifadəçisinin anladığı formada olmalıdır) 

268 merch_url: Satıcının web site URL-i 

269 trtype: Tranzaksiya növü = 0 (Pre-Avtorizasiya əməliyyatı, pulu bloklamaq/dondurmaq),Tranzaksiya növü = 1 (Avtorizasiya əməliyyatı) 

270 backref: Avtorizasiya nəticəsinin yerləşdirilməsində(post) istifadə olunan Merchant URL 

271 email: Bildirişlər üçün Email ünvan. Qeyd olunmuş sahə doldurulduğu halda Gateway email ünvanı müəyyən etmək üçün əməliyyat nəticəsi haqqında bildiriş göndərə bilər 

272 country: Merchant shop 2 simvollu ölkə kodu. Merchant sistemi Gateway serverin yerləşdiyi ölkədən fərqli ölkədə yerləşirsə qeyd olunmalıdır 

273 merch_gmt: Merchant-ın UTC/GMT vaxt zonası. Merchant sistemi Gateway serverin yerləşdiyi vaxt zonasından fərqli vaxt zonasında yerləşirsə qeyd olunmalıdır 

274 timestamp: Merchant server-lə e-Gateway server arasında zaman fərqi 1 saatı aşmamalıdır, əks halda Gateway tranzaksiyaya imtina verəcək. Dəyər verilmədikdə, `now` avtomatik göndəriləcək 

275 lang: Dil seçimi 

276 name: Müştərinin adı (kartda göstərildiyi kimi) 

277 m_info: Əlavə məlumatlar. Məs: {"browserScreenHeight":"1920","browserScreenWidth":"1080","browserTZ":"0","mobilePhone":{"cc":"994","subscriber":"5077777777"}} 

278 """ # noqa: E501 

279 

280 @overload 

281 def auth_and_save_card( 

282 self: 'AzeriCardClientClass[_Async]', 

283 amount: Numeric, 

284 currency: str, 

285 order: str, 

286 desc: str, 

287 trtype: AuthorizationType, 

288 merch_name: str = env.AZERICARD_MERCHANT_NAME, 

289 merch_url: str = env.AZERICARD_MERCHANT_EMAIL, 

290 terminal: str = env.AZERICARD_MERCHANT_ID, 

291 email: str = env.AZERICARD_MERCHANT_EMAIL, 

292 country: Unsettable[str] = _UNSET, 

293 merch_gmt: Unsettable[str] = _UNSET, 

294 backref: str = env.AZERICARD_CALLBACK_URL, 

295 timestamp: datetime | str = datetime.now(), 

296 lang: str = env.AZERICARD_INTERFACE_LANG, 

297 name: Unsettable[str] = _UNSET, 

298 m_info: Unsettable[MInfo] = _UNSET, 

299 ) -> Coroutine[Any, Any, DryResponse]: ... 

300 def auth_and_save_card(self, *args: Any, **kwds: Any) -> Any: ... 

301 

302 @overload 

303 def auth_with_saved_card( 

304 self: 'AzeriCardClientClass[_Sync]', 

305 amount: Numeric, 

306 currency: str, 

307 order: str, 

308 desc: str, 

309 trtype: AuthorizationType, 

310 token: str, 

311 merch_name: str = env.AZERICARD_MERCHANT_NAME, 

312 merch_url: str = env.AZERICARD_MERCHANT_EMAIL, 

313 terminal: str = env.AZERICARD_MERCHANT_ID, 

314 email: str = env.AZERICARD_MERCHANT_EMAIL, 

315 country: Unsettable[str] = _UNSET, 

316 merch_gmt: Unsettable[str] = _UNSET, 

317 backref: str = env.AZERICARD_CALLBACK_URL, 

318 timestamp: datetime | str = datetime.now(), 

319 lang: str = env.AZERICARD_INTERFACE_LANG, 

320 name: Unsettable[str] = _UNSET, 

321 m_info: Unsettable[MInfo] = _UNSET, 

322 ) -> DryResponse: 

323 """Ümumi saxlanmış kart ilə Authurization sorğusu 

324 

325 **Endpoint:** *https://{test}mpi.3dsecure.az/token/cgi_link* 

326 

327 Example: 

328 ```python 

329 from integrify.azericard import AzeriCardClient 

330 from integrify.azericard.schemas.enums import AuthorizationType 

331 

332 AzeriCardClient.auth_with_saved_card(amount=100, currency='AZN', order='12345678', desc='Ödəniş', trype=AuthorizationType.DIRECT, name='Filankes', token='card-token') 

333 ``` 

334 

335 **Cavab formatı**: Callback sorğu baş verir 

336 

337 Args: 

338 amount: Ödəniş miqdarı. Numerik dəyər. 

339 currency: Sifariş valyutası: 3 simvollu valyuta: (AZN) 

340 order: Satıcı sifariş ID-si, rəqəmsal. Son 6 rəqəm sistem izi audit nömrəsi kimi istifadə olunur, terminal id üçün bir gün ərzində unikal olmalıdır 

341 desc: Ödənişin təsviri/açıqlaması 

342 merch_name: Satıcının (merchant) adı (kart istifadəçisinin anladığı formada olmalıdır) 

343 merch_url: Satıcının web site URL-i 

344 trtype: Tranzaksiya növü = 0 (Pre-Avtorizasiya əməliyyatı, pulu bloklamaq/dondurmaq),Tranzaksiya növü = 1 (Avtorizasiya əməliyyatı) 

345 backref: Avtorizasiya nəticəsinin yerləşdirilməsində(post) istifadə olunan Merchant URL 

346 token: Yadda saxlanılmış kartın ID-si 

347 email: Bildirişlər üçün Email ünvan. Qeyd olunmuş sahə doldurulduğu halda Gateway email ünvanı müəyyən etmək üçün əməliyyat nəticəsi haqqında bildiriş göndərə bilər 

348 country: Merchant shop 2 simvollu ölkə kodu. Merchant sistemi Gateway serverin yerləşdiyi ölkədən fərqli ölkədə yerləşirsə qeyd olunmalıdır 

349 merch_gmt: Merchant-ın UTC/GMT vaxt zonası. Merchant sistemi Gateway serverin yerləşdiyi vaxt zonasından fərqli vaxt zonasında yerləşirsə qeyd olunmalıdır 

350 timestamp: Merchant server-lə e-Gateway server arasında zaman fərqi 1 saatı aşmamalıdır, əks halda Gateway tranzaksiyaya imtina verəcək. Dəyər verilmədikdə, `now` avtomatik göndəriləcək 

351 lang: Dil seçimi 

352 name: Müştərinin adı (kartda göstərildiyi kimi) 

353 m_info: Əlavə məlumatlar. Məs: {"browserScreenHeight":"1920","browserScreenWidth":"1080","browserTZ":"0","mobilePhone":{"cc":"994","subscriber":"5077777777"}} 

354 """ # noqa: E501 

355 

356 @overload 

357 def auth_with_saved_card( 

358 self: 'AzeriCardClientClass[_Async]', 

359 amount: Numeric, 

360 currency: str, 

361 order: str, 

362 desc: str, 

363 trtype: AuthorizationType, 

364 token: str, 

365 merch_name: str = env.AZERICARD_MERCHANT_NAME, 

366 merch_url: str = env.AZERICARD_MERCHANT_EMAIL, 

367 terminal: str = env.AZERICARD_MERCHANT_ID, 

368 email: str = env.AZERICARD_MERCHANT_EMAIL, 

369 country: Unsettable[str] = _UNSET, 

370 merch_gmt: Unsettable[str] = _UNSET, 

371 backref: str = env.AZERICARD_CALLBACK_URL, 

372 timestamp: datetime | str = datetime.now(), 

373 lang: str = env.AZERICARD_INTERFACE_LANG, 

374 name: Unsettable[str] = _UNSET, 

375 m_info: Unsettable[MInfo] = _UNSET, 

376 ) -> Coroutine[Any, Any, DryResponse]: ... 

377 def auth_with_saved_card(self, *args: Any, **kwds: Any) -> Any: ... 

378 

379 @overload 

380 def get_transaction_status( 

381 self: 'AzeriCardClientClass[_Sync]', 

382 tran_trtype: AuthorizationType | AuthorizationResponseType, 

383 order: str, 

384 terminal: str = env.AZERICARD_MERCHANT_ID, 

385 timestamp: datetime | str = datetime.now(), 

386 ) -> APIResponse[GetTransactionStatusResponseSchema]: 

387 """Bitmiş tranzaksiyanın statusunu alma sorğusu 

388 

389 **Endpoint:** *https://{test}mpi.3dsecure.az/cgi-bin/cgi_link* 

390 

391 Example: 

392 ```python 

393 from integrify.azericard import AzeriCardClient 

394 from integrify.azericard.schemas.enums import AuthorizationType 

395 

396 AzeriCardClient.get_transaction_status(tran_trtype=AuthorizationType.DIRECT, order='12345678') 

397 ``` 

398 

399 **Cavab formatı**: [`GetTransactionStatusResponseSchema`][integrify.azericard.schemas.response.GetTransactionStatusResponseSchema] 

400 

401 Args: 

402 tran_trtype: Sorğu üçün orijinal əməliyyat növü, TRTYPE (Məsələn: 0, 1, 22, 24 və s.) 

403 order: Satıcı sifariş ID-si, rəqəmsal. Son 6 rəqəm sistem izi audit nömrəsi kimi istifadə olunur, terminal id üçün bir gün ərzində unikal olmalıdır 

404 terminal: Bank tərəfindən təyin edilmiş Merchant Terminal ID. Mühit dəyişəni kimi təyin olunmayıbsa, burada parametr kimi ötürülməlidir. 

405 timestamp: Merchant server-lə e-Gateway server arasında zaman fərqi 1 saatı aşmamalıdır, əks halda Gateway tranzaksiyaya imtina verəcək. Dəyər verilmədikdə, `now` avtomatik göndəriləcək 

406 """ # noqa: E501 

407 

408 @overload 

409 def get_transaction_status( 

410 self: 'AzeriCardClientClass[_Async]', 

411 tran_trtype: AuthorizationType | AuthorizationResponseType, 

412 order: str, 

413 terminal: str = env.AZERICARD_MERCHANT_ID, 

414 timestamp: datetime | str = datetime.now(), 

415 ) -> Coroutine[Any, Any, APIResponse[GetTransactionStatusResponseSchema]]: ... 

416 def get_transaction_status(self, *args: Any, **kwds: Any) -> Any: ... 

417 

418 @overload 

419 def transfer_start( 

420 self: 'AzeriCardClientClass[_Sync]', 

421 merchant: str, 

422 srn: str, 

423 amount: Numeric, 

424 cur: str, 

425 receiver_credentials: str, 

426 redirect_link: str, 

427 ) -> DryResponse: 

428 """User-ə ödəniş etmək sorğusu 

429 

430 **Endpoint:** *https://{test}mt.3dsecure.az/payment/view* 

431 

432 Example: 

433 ```python 

434 from integrify.azericard import AzeriCardClient 

435 

436 AzeriCardClient.transfer_start(merchant='MyMerchant', srn='12345678', amount=100, cur='944', receiver_credentials='Filankəsov Filankəs', redirect_link='my-redirect-api-for-user') 

437 ``` 

438 

439 **Cavab formatı**: Callback sorğu baş verir 

440 

441 Args: 

442 merchant: Şirkət adı 

443 srn: Unikal əməliyyat nömrəsi 

444 amount: Ödəniş məbləği 

445 cur: Ödəniş valyutasının 3 rəqəmli kodu (944 - AZN) 

446 receiver_credentials: İstifadəçinin tam adı 

447 redirect_link: Əməliyyatın sonunda müştərini yönləndirmək istədiyiniz keçid linki 

448 """ # noqa: E501 

449 

450 @overload 

451 def transfer_start( 

452 self: 'AzeriCardClientClass[_Async]', 

453 merchant: str, 

454 srn: str, 

455 amount: Numeric, 

456 cur: str, 

457 receiver_credentials: str, 

458 redirect_link: str, 

459 ) -> Coroutine[Any, Any, DryResponse]: ... 

460 def transfer_start(self, *args: Any, **kwds: Any) -> Any: ... 

461 

462 @overload 

463 def transfer_confirm( 

464 self: 'AzeriCardClientClass[_Sync]', 

465 merchant: str, 

466 srn: str, 

467 amount: Numeric, 

468 cur: str, 

469 timestamp: datetime | str = datetime.now(), 

470 ) -> APIResponse[TransferConfirmResponseSchema]: 

471 """User-ə ödənişi təsdiqləmək sorğusu 

472 

473 **Endpoint:** *https://{test}mt.3dsecure.az/api/confirm* 

474 

475 Example: 

476 ```python 

477 from integrify.azericard import AzeriCardClient 

478 

479 AzeriCardClient.transfer_confirm(merchant='MyMerchant', srn='12345678', amount=100, cur='944') 

480 ``` 

481 

482 **Cavab formatı**: [TransferConfirmResponseSchema][integrify.azericard.schemas.response.TransferConfirmResponseSchema] 

483 

484 Args: 

485 merchant: Şirkət adı 

486 srn: Unikal əməliyyat nömrəsi 

487 amount: Ödəniş məbləği 

488 cur: Ödəniş valyutasının 3 rəqəmli kodu (944 - AZN) 

489 timestamp: Dəyər verilmədikdə, `now` avtomatik göndəriləcək 

490 """ # noqa: E501 

491 

492 @overload 

493 def transfer_confirm( 

494 self: 'AzeriCardClientClass[_Async]', 

495 merchant: str, 

496 srn: str, 

497 amount: Numeric, 

498 cur: str, 

499 timestamp: datetime | str = datetime.now(), 

500 ) -> Coroutine[Any, Any, APIResponse[TransferConfirmResponseSchema]]: ... 

501 def transfer_confirm(self, *args: Any, **kwds: Any) -> Any: ... 

502 

503 @overload 

504 def transfer_decline( 

505 self: 'AzeriCardClientClass[_Sync]', 

506 merchant: str, 

507 srn: str, 

508 amount: Numeric, 

509 cur: str, 

510 timestamp: datetime | str = datetime.now(), 

511 ) -> APIResponse[TransferDeclineResponseSchema]: 

512 """User-ə ödənişi imtina etmək sorğusu 

513 

514 **Endpoint:** *https://{test}mt.3dsecure.az/api/decline* 

515 

516 Example: 

517 ```python 

518 from integrify.azericard import AzeriCardClient 

519 

520 AzeriCardClient.transfer_decline(merchant='MyMerchant', srn='12345678', amount=100, cur='944') 

521 ``` 

522 

523 **Cavab formatı**: [TransferDeclineResponseSchema][integrify.azericard.schemas.response.TransferDeclineResponseSchema] 

524 

525 Args: 

526 merchant: Şirkət adı 

527 srn: Unikal əməliyyat nömrəsi 

528 amount: Ödəniş məbləği 

529 cur: Ödəniş valyutasının 3 rəqəmli kodu (944 - AZN) 

530 timestamp: Dəyər verilmədikdə, `now` avtomatik göndəriləcək 

531 """ # noqa: E501 

532 

533 @overload 

534 def transfer_decline( 

535 self: 'AzeriCardClientClass[_Async]', 

536 merchant: str, 

537 srn: str, 

538 amount: Numeric, 

539 cur: str, 

540 timestamp: datetime | str = datetime.now(), 

541 ) -> Coroutine[Any, Any, APIResponse[TransferDeclineResponseSchema]]: ... 

542 def transfer_decline(self, *args: Any, **kwds: Any) -> Any: ... 

543 

544 

545AzeriCardClient: 'AzeriCardClientClass[_Sync]' = AzeriCardClientClass(sync=True) 

546AzeriCardAsyncClient: 'AzeriCardClientClass[_Async]' = AzeriCardClientClass(sync=False)