在线支付网关包装库。
payit的Python项目详细描述
在线支付网关包装库。
支持的网关
(伊朗)
- asanpardakht
- 伊朗文
- 梅拉特
- 付款利率
- 扎林帕尔
- 帕西恩(佩科)
- 巴哈马塔
安装
pip install payit
用法
frompayitimport(GatewayManager,gateways,Transaction,TransactionAlreadyPaidError)# Configure:config={'mellat':{'terminal_id':'1234','username':'demo','password':'demo','callback_url':'http://localhost/callback/mellat'},'zarinpal1':{'merchant':'534534534532225234234','description':'','callback_url':'http://localhost/callback/zarinpal1'},'zarinpal2':{'merchant':'33333333532225234234','description':'','callback_url':'http://localhost/callback/zarinpal2'}}manager=GatewayManager()manager.register('mellat',gateways.MellatGateway)manager.register('zarinpal1',gateways.ZarinpalGateway)manager.register('zarinpal2',gateways.ZarinpalGateway)manager.configure(config)# Make Transaction:my_database={}selected_gateway='zarinpal1'try:transaction=Transaction(amount=1500,order_id=11002)transaction=manager.request(selected_gateway,transaction)# Store `transaction.id` on your databasemy_database['transaction_id']=transaction.id# Get redirection detailsredirection=manager.get_redirection(selected_gateway,transaction)# Now redirect your client to gateway by redirection detailsexceptPayitException:print('Something wrong on payment')raise# Callback# Now user backs from gateway to complete payment procedureselected_gateway='zarinpal1'try:callback_data={'Authority':101}transaction=manager.validate(selected_gateway,callback_data)ifnottransaction.validate_status:raiseRuntimeError('Transaction is not valid')# Check `transaction.id` exist on your databaseiftransaction.idnotinmy_database:raiseRuntimeError('Transaction is not exists')# Now verify transactionmanager.verify(selected_gateway,callback_data)exceptTransactionAlreadyPaidError:print('Transaction Already Paid')raiseexceptPayitException:print('Something wrong on payment')raise# Payment succeed! ?