Created
September 15, 2019 15:17
-
-
Save AmirSbss/210284b55bbb4bd00d5ad81eced089c6 to your computer and use it in GitHub Desktop.
IDPay API interface for Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
import json | |
# DOCS: https://idpay.ir/web-service/v1.1/index.html | |
class IDPay: | |
API_URL = "https://api.idpay.ir/v1.1/payment" | |
RESPONSES = { | |
1: "پرداخت انجام نشده است", | |
2: "پرداخت ناموفق بوده است", | |
3: "خطا رخ داده است", | |
4: "بلوکه شده", | |
5: "برگشت به پرداخت کننده", | |
6: "برگشت خورده سیستمی", | |
10: "در انتظار تایید پرداخت", | |
100: "پرداخت تایید شده است", | |
101: "پرداخت قبلا تایید شده است", | |
200: "به دریافت کننده واریز شد" | |
} | |
ERRORS = { | |
11: "کاربر مسدود شده است.", | |
12: "API Key یافت نشد.", | |
13: "درخواست شما از {ip} ارسال شده است. این IP با IP های ثبت شده در وب سرویس همخوانی ندارد.", | |
14: "وب سرویس تایید نشده است.", | |
21: "حساب بانکی متصل به وب سرویس تایید نشده است.", | |
31: "کد تراکنش id نباید خالی باشد.", | |
32: "شماره سفارش order_id نباید خالی باشد.", | |
33: "مبلغ amount نباید خالی باشد.", | |
34: "مبلغ amount باید بیشتر از {min-amount} ریال باشد.", | |
35: "مبلغ amount باید کمتر از {max-amount} ریال باشد.", | |
36: "مبلغ amount بیشتر از حد مجاز است.", | |
37: "آدرس بازگشت callback نباید خالی باشد.", | |
38: "درخواست شما از آدرس {domain} ارسال شده است. دامنه آدرس بازگشت callback با آدرس ثبت شده در وب سرویس همخوانی ندارد.", | |
51: "تراکنش ایجاد نشد.", | |
52: "استعلام نتیجه ای نداشت.", | |
53: "تایید پرداخت امکان پذیر نیست.", | |
54: "مدت زمان تایید پرداخت سپری شده است.", | |
} | |
def __init__(self, api_key, sandbox=False): | |
self.headers = { | |
"X-API-KEY": api_key | |
} | |
if sandbox: | |
self.headers["X-SANDBOX"] = 1 | |
def request(self, route, **kwargs): | |
try: | |
return requests.post(f"{self.API_URL}{route}", data=json.dumps(kwargs), headers=self.headers).json() | |
except Exception as e: | |
print(e) | |
return None | |
def new_transaction(self, order_id: str, amount: int, callback: str, name: str = None, phone: str = None, mail: str = None, desc: str = None, reseller: int = None): | |
return self.request("", order_id=order_id, amount=amount, callback=callback, name=name, phone=phone, mail=mail, desc=desc, reseller=reseller) | |
def verify(self, id, order_id): | |
return self.request("/verify", id=id, order_id=order_id) | |
def inquiry(self, id, order_id): | |
return self.request("/inquiry", id=id, order_id=order_id) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment