الانتقال إلى المحتوى
iRoamly Shop

وثائق API

مرجع iRoamly Shop API: المصادقة، والباقات، والشراء والتسليم، والتجديد والاستخدام.

نظرة عامة

شرح أساسي

لضمان أمان المعلومات المنقولة عبر الخادم، تُعتمد آليات الأمان التالية:

  1. 1.تتصل جميع الواجهات عبر روابط HTTPS secure آمنة.
  2. 2.مفتاح AuthKey المخصّص لك، ويُستخدم لمصادقة API (الحد الأقصى للطول: 32 حرفًا).
  3. 3.مفتاح AuthSecret المخصّص لك، ويُستخدم لإنشاء تجزئة الطلب (الحد الأقصى للطول: 50 حرفًا).
  4. 4.تستخدم الطلبات تجزئات SHA-256 للمصادقة.
نظرة عامة

معايير الواجهة

المسار الأساسي:https://api.iroamly.shop/
بروتوكول الطلب:HTTPS
طريقة الطلب:GET / POST
تنسيق نقل البيانات:application/json

معلمات ترويسة الطلب:

AuthKey: مفتاح مصادقة العميل، من النوع سلسلة نصية (String)

Certification: سلسلة (String) تحتوي على تجزئة SHA-256 لـ AuthKey+AuthSecret مدمجَين بهذا الترتيب.

لا تتطلب /common/getPlanItem ترويسة AuthKey أو Certification.

نقاط نهاية API

الحصول على قائمة الباقات الإقليمية

عنوان URL للطلب:https://api.iroamly.shop/common/getPlanItem
طريقة الطلب:GET

لا يلزم وجود ترويسة AuthKey أو Certification.

معلمات الطلب:

المعلمةالوصفالنوع
regionيقبل رموز ISO2، أو أسماء الدول (دون تمييز لحالة الأحرف)، أو التنسيقات الموحّدة (مثل united-states).String

تنسيق الاستجابة:

النجاح: HTTP 200. تُعاد الباقات في data.list.

يُرجع دائمًا HTTP 200. عند عدم توفر بيانات، تكون data.list مصفوفة فارغة وتكون msg هي Success.

أوصاف حقول الاستجابة:

الحقلالوصفالنوع
planاسم الباقة (يتضمن المنطقة والنوع وحصة البيانات والمدة).String
productCodeمعرّف فريد للباقة للشراء أو الاستعلام.String
dataحصة البيانات (مثل 10GB وUnlimited و500MB).String
typeنوع الباقة (مثل Total وDaily وUnlimited).String
plan_typeفئة الباقة (مثل default).String
package_typeنوع الحزمة (مثل Data Only).String
durationمدة الصلاحية بالأيام (مثل 10).String
speedسرعة الشبكة (مثل 4G / 5G).String
operatorالمشغّلون المدعومون (مثل T-Mobile/AT&T).String
regionالاسم الرسمي للمنطقة (مثل United States).String
region_indexمعرّف المنطقة الموحّد (أحرف صغيرة مع شرطات، مثل united-states).String
creditسعر الباقة بوحدات الرصيد (وليس بالدولار الأمريكي).Float
remarkملاحظات إضافية (مثل قواعد خفض السرعة).String
created_atالطابع الزمني لإنشاء الباقة (بتنسيق ISO 8601).String
مثال على الطلب
"https://api.iroamly.shop/common/getPlanItem?region=US"
مثال على الاستجابة
{
  "code": 0,
  "data": {
    list:[
     {
       "plan": "United States-eSIM-10GB-10 Days-Total",
       "productCode": "iRoamly-unite-584535",
       "data": "10GB",
       "type": "Total",
       "package_type": "Data Only",
       "duration": "10",
       "speed": "4G / 5G",
       "operator": "T-Mobile/AT&T",
       "region": "United States",
       "region_index": "united-states",
       "credit": 6.43,
       "remark": "After accumulating 10GB, the speed will be reduced to 128 Kbps",
       "created_at": "2025-05-16T04:02:31Z"
     }
    ]
  }
}
نقاط نهاية API

الشراء المباشر لرمز QR

عنوان URL للطلب:https://api.iroamly.shop/openapi/purchaseqrcode
طريقة الطلب:POST

معلمات الطلب:

المعلمةالوصفالنوع
emailصندوق البريد لاستلام رموز QR. إذا كان فارغًا، فلن يُرسل أي بريد.String
productListمجموعة المنتجاتObject[]

حقول productList:

الحقلالوصفالنوع
planاسم الباقة. قدّم إما plan أو productCode.String
productCodeمعرّف الباقة (productCode من Get Regional Plan List). قدّم إما productCode أو plan.String
quantityالكميةInt
باقة الاختبار:iRoamly-Test-10GB

الخطوة التالية: استخدم Query QR Code (https://api.iroamly.shop/openapi/qrcodeQuery) للحصول على رمز QR

مثال على المعلمات
{
  "email": "2m827n32d@gmail.com",
  "productList": [
    {
      "plan": "United States-eSIM-10GB-10 Days-Total",
      "quantity": 2
    },
    {
      "plan": "Albania-10GB-15 Days-Total",
      "quantity": 1
    }
  ]
}
مثال على الاستجابة
{
  "code": 1,
  "data": {
    "orderId": "Open-Global-DXDWFBKG578913",
    "redeem_list": [
      {
        "productCode": "",
        "plan": "United States-eSIM-10GB-10 Days-Total",
        "redeemCode": "tjMxpYfvk5dFMQg",
        "status": 0,
        "expire_at": "2026-03-01"
      },
      {
        "productCode": "",
        "plan": "United States-eSIM-10GB-10 Days-Total",
        "redeemCode": "gKPzYhseX1wRmSi",
        "status": 0,
        "expire_at": "2026-03-01"
      },
      {
        "productCode": "",
        "plan": "Albania-10GB-15 Days-Total",
        "redeemCode": "sLSHNkAv2ojbNBG",
        "status": 0,
        "expire_at": "2026-03-01"
      }
    ]
  },
  "msg": "success"
}
نقاط نهاية API

شراء رمز استرداد

عنوان URL للطلب:https://api.iroamly.shop/openapi/purchaseCode
طريقة الطلب:POST

معلمات الطلب:

المعلمةالوصفالنوع
emailالبريد الإلكترونيString
productListمجموعة المنتجاتObject[]

حقول productList:

الحقلالوصفالنوع
planاسم الباقة. قدّم إما plan أو productCode.String
productCodeمعرّف الباقة (productCode من Get Regional Plan List). قدّم إما productCode أو plan.String
quantityالكميةInt
باقة الاختبار:iRoamly-Test-10GB
مثال على المعلمات
{
  "email": "2m827n32d@gmail.com",
  "productList": [
    {
      "plan": "United States-eSIM-10GB-10 Days-Total",
      "quantity": 2
    },
    {
      "plan": "Albania-10GB-15 Days-Total",
      "quantity": 1
    }
  ]
}
مثال على الاستجابة
{
  "code": 1,
  "msg": "success",
  "orderId": "xxx-xxxx-sd9hn8df333" // Order number, can be used to query redeem code
}
نقاط نهاية API

الاستعلام عن رمز الاسترداد

عنوان URL للطلب:https://api.iroamly.shop/openapi/codeQuery
طريقة الطلب:POST

معلمات الطلب:

المعلمةالوصفالنوع
orderIdرقم الطلبString
مثال على المعلمات
{
  "orderId": "xxx-xxx-dh239jdu28",
}
مثال على الاستجابة
{
  "code": 1,
  "msg": "success",
  "data": [
    {
      "productCode": "m8hed7h2fed",
      "redeemCode": "3cd2m3f23f3f3",
      "expire_at": "2024-06-30", // Expiry date
      "plan": "United States-eSIM-10GB-10 Days-Total",
      "status": 0
    },
    {
      "productCode": "v2jf28dj2w",
      "redeemCode": "d923j29ef2323",
      "expire_at": "2024-06-30",
      "plan": "Albania-10GB-15 Days-Total",
      "status": 2
    }
  ]
}
نقاط نهاية API

التحويل إلى رمز QR

(ملاحظة: تُرسَل رموز QR إلى عنوان البريد الإلكتروني المحدد بعد التحويل. قد تستغرق الدفعات الأكبر وقتًا أطول للمعالجة.)

عنوان URL للطلب:https://api.iroamly.shop/openapi/redeemQRcode
طريقة الطلب:POST

معلمات الطلب:

المعلمةالوصفالنوع
emailالبريد الإلكترونيString
codeListمجموعة رموز الاستردادObject[]

حقول productList:

الحقلالوصفالنوع
redeemCodeرمز الاستردادString
مثال على المعلمات
{
  "email": "2m827n32d@gmail.com",
  "codeList": [
    {
      "redeemCode": "m8hed7h2fed",
    },
    {
      "redeemCode": "cn88beg9edj",
    }
  ]
}
مثال على الاستجابة
{
  "code": 1,
  "msg": "success",
}
نقاط نهاية API

الاستعلام عن رمز QR

عنوان URL للطلب:https://api.iroamly.shop/openapi/qrcodeQuery
طريقة الطلب:POST

معلمات الطلب:

المعلمةالوصفالنوع
redeemCodeرمز الاستردادString

أوصاف حقول الاستجابة:

الحقلالوصفالنوع
redeemCodeرمز الاستردادString
qrcodeعنوان URL لصورة رمز QRString
statusحالة رمز الاسترداد (راجع تعريفات حالات رمز الاسترداد)Int
qrcode_contentمحتوى رمز QR (سلسلة تفعيل LPA، مثل LPA:1$…)String
iscouldrenewalما إذا كان يمكن تجديد eSIM: 1 - يمكن تجديدها 0 - لا يمكن تجديدهاInt
مثال على المعلمات
{
  "redeemCode": "m8hed7h2fed",
}
مثال على الاستجابة
{
  "code": 1,
  "msg": "success",
  "redeemCode": "m8hed7h2fed",
  "qrcode": "https://dsfjigewafe/qrcode.jpg"
}
نقاط نهاية API

الحصول على حالة باقة التجديد

عنوان URL للطلب:https://api.iroamly.shop/openapi/getRenewPlanStatus
طريقة الطلب:POST

معلمات الطلب:

المعلمةالوصفالنوع
redeemCodeرمز الاستردادString

أوصاف حقول الاستجابة:

يوضح code في المستوى الأعلى من الاستجابة ما إذا كان يمكن تجديد رمز الاسترداد: 0 - التجديد ممكن، -1 - التجديد غير ممكن. تُدرج خيارات التجديد في data.renewList:

الحقلالوصفالنوع
renewtypeنوع التجديد: 0 - التفعيل عند انتهاء صلاحية الباقة الحالية 1 - التفعيل فورًا (يمسح البيانات المتبقية) 2 - التفعيل في وقت محددInt
starttimeبداية نافذة التفعيل الاختيارية: أبكر وقت تفعيل يمكنك اختياره (نوع التجديد 2).String
endtimeنهاية نافذة التفعيل الاختيارية: آخر وقت تفعيل يمكنك اختياره (نوع التجديد 2).String
مثال على المعلمات
{
  "redeemCode": "3cd2m3f23f3f3",
}
مثال على الاستجابة
{
  "code": 0,
  "data": {
    "renewList": [
      {
        "renewtype": 1,
        "starttime": "0001-01-01T00:00:00Z",
        "endtime": "0001-01-01T00:00:00Z"
      },
      {
        "renewtype": 2,
        "starttime": "2025-08-04 06:13:08",
        "endtime": "2025-09-20 14:23:51"
      }
    ],
    "lasttime": "0001-01-01T00:00:00Z"
  },
  "msg": "Success"
}
نقاط نهاية API

رمز التجديد

(ملاحظة: عند التجديد، يجب أن تتطابق مجموعة التجديد للباقة المحددة مع مجموعة التجديد للباقة الأصلية.)

عنوان URL للطلب:https://api.iroamly.shop/openapi/renewcode
طريقة الطلب:POST

معلمات الطلب:

المعلمةالوصفالنوع
redeemCodeالرمز المطلوب تجديدهString
planباقة التجديدString
renewtypeنوع التجديد: 0 - التفعيل عند انتهاء صلاحية الباقة الحالية 1 - التفعيل فورًا (يمسح البيانات المتبقية) 2 - التفعيل في وقت محددInt
renewtimeتاريخ ووقت السريان (مطلوب). التنسيق: YYYY-MM-DDTHH:mm:ssZString
مثال على المعلمات
{
  redeemCode: "DEF456UVW",
  plan: "basic_yearly",
  renewtype: 0,
  renewtime: "2024-12-31T23:59:59Z"
}
مثال على الاستجابة
{
  code: 1,
  data: {
    orderId: "Open-Global-DXDWFBKG578913",
    plan: "United States-eSIM-10GB-10 Days-Total",
    redeemCode: "tjMxpYfvk5dFMQg",
    status: 0,
    expire_at: "2026-03-01"
  },
  msg: "success"
}
نقاط نهاية API

الحصول على إحصاءات الباقة

عنوان URL للطلب:https://api.iroamly.shop/openapi/getnetworkflow
طريقة الطلب:GET

معلمات الطلب:

المعلمةالوصفالنوع
redeemCodeرمز الاسترداد المطلوب الاستعلام عنه.String

أوصاف حقول الاستجابة:

المعلمةالوصفالنوع
status0 - غير نشطة 1 - نشطة 2 - منتهية الصلاحية 9 - غير صالحةInt
flow_useالبيانات المستخدمة خلال دورة الفوترة (بالميغابايت MB)String
flow_totalإجمالي البيانات في دورة الفوترة (بالميغابايت MB، أو غير محدود)String
start_dataوقت بدء الباقةString
end_dataوقت انتهاء الباقةString
installDeviceالجهاز المثبّت عليهString
installCountعدد مرات التثبيتString
installTimeوقت التثبيتString
مثال صالح
{
  code: 1,
  status: 0,
  flow_use: "300",
  flow_total: "1024",
  start_data: "2025-10-25T15:04:05Z07:00",
  end_data: "2025-11-25T15:04:05Z07:00",
  installDevice: "iPhone 15",
  installCount: "1",
  installTime: "2025-10-25T15:04:05Z06:00"
}
مثال غير صالح
{
  code: -1,
  msg: "error message"
}
التعريفات

تعريفات رموز حالة الاستجابة

الرمزالوصف
1نجاح
2فشلت مصادقة معلمات الطلب
3لم تُقدَّم المعلمات كما هو مطلوب
4رمز المنتج غير موجود
5الرصيد غير كافٍ
6رمز الاسترداد غير موجود
7تم استرداد رمز الاسترداد أو أنه غير موجود
-1فشل الطلب

النجاح هو code 1، باستثناء /common/getPlanItem و/openapi/getRenewPlanStatus اللتين تُرجعان code 0 عند النجاح.

التعريفات

تعريفات حالات رمز الاسترداد

الحالةالوصف
0لم يُسترد
1جارٍ الاسترداد
2تم الاسترداد
3فشل الاسترداد
مرجع التعليمات البرمجية

شراء رمز استرداد (Python)

python
import requests
import json
import hashlib

# URL for the request
url = "https://api.iroamly.shop/openapi/purchaseCode"

# Provided AuthKey and AuthSecret, remember to replace them with real values
auth_key = "YOUR_AUTH_KEY_HERE"
auth_secret = "YOUR_AUTH_SECRET_HERE" 


# Calculating Certification
combined = auth_key + auth_secret
certification = hashlib.sha256(combined.encode()).hexdigest()

# Header parameters for the request
headers = {
    "Content-Type": "application/json",
    "AuthKey": auth_key,
    "Certification": certification
}

# Example data for the request body
data = {
    "email": "2m827n32d@gmail.com",
    "productList": [
        {
            "productCode": "m8hed7h2fed2398dsnh",
            "quantity": 2
        },
        {
            "productCode": "cn88beg9edjdfj2sj0a",
            "quantity": 1
        }
    ]
}

# Sending POST request
response = requests.post(url, headers=headers, data=json.dumps(data))

# Printing the response content
print(response.text)

# Example of response
{
    "code":1,
    "msg":"success",
    "orderId":"xxx-xxxx-sd9hn8df333"
}
مرجع التعليمات البرمجية

الاستعلام عن رمز الاسترداد (Python)

python
import requests
import json
import hashlib

# URL for the request
url = "https://api.iroamly.shop/openapi/codeQuery"

# Provided AuthKey and AuthSecret, remember to replace them with real values
auth_key = "YOUR_AUTH_KEY_HERE"
auth_secret = "YOUR_AUTH_SECRET_HERE" 


# Calculating Certification
combined = auth_key + auth_secret
certification = hashlib.sha256(combined.encode()).hexdigest()

# Header parameters for the request
headers = {
    "Content-Type": "application/json",
    "AuthKey": auth_key,
    "Certification": certification
}

# Example data for the request body
data = {
    "orderId":"xxx-xxx-dh239jdu28"
}

# Sending POST request
response = requests.post(url, headers=headers, data=json.dumps(data))

# Printing the response content
print(response.text)

# Example of response
{
 "code":1,
 "data":
    [
     {"productCode":"m8hed7h2fed2398dsnh","redeemCode":"nDb4TDCn6vMhbQv","status":0,"expire_at":"2024-07-04"},
     {"productCode":"m8hed7h2fed2398dsnh","redeemCode":"oA7AWAmo76BwoGj","status":0,"expire_at":"2024-07-04"},
     {"productCode":"cn88beg9edjdfj2sj0a","redeemCode":"XRdDeSxBVNbvCpU","status":0,"expire_at":"2024-07-04"}
    ],
 "msg":"success"
}
مرجع التعليمات البرمجية

التحويل إلى رمز QR (Python)

python
import requests
import json
import hashlib

# URL for the request
url = "https://api.iroamly.shop/openapi/redeemQRcode"

# Provided AuthKey and AuthSecret, remember to replace them with real values
auth_key = "YOUR_AUTH_KEY_HERE"
auth_secret = "YOUR_AUTH_SECRET_HERE" 


# Calculating Certification
combined = auth_key + auth_secret
certification = hashlib.sha256(combined.encode()).hexdigest()

# Header parameters for the request
headers = {
    "Content-Type": "application/json",
    "AuthKey": auth_key,
    "Certification": certification
}

# Example data for the request body
data = {
    "email": "2m827n32d@gmail.com",
    "codeList": [
        {
            "redeemCode": "nDb4TDCn6vMhbQv",
        },
        {
            "redeemCode": "XRdDeSxBVNbvCpU",
        }
    ]
}

# Sending POST request
response = requests.post(url, headers=headers, data=json.dumps(data))

# Printing the response content
print(response.text)

# Example of response
{"code":1,"msg":"success"}
مرجع التعليمات البرمجية

الاستعلام عن رمز QR (Python)

python
import requests
import json
import hashlib

# URL for the request
url = "https://api.iroamly.shop/openapi/qrcodeQuery"

# Provided AuthKey and AuthSecret, remember to replace them with real values
auth_key = "YOUR_AUTH_KEY_HERE"
auth_secret = "YOUR_AUTH_SECRET_HERE" 


# Calculating Certification
combined = auth_key + auth_secret
certification = hashlib.sha256(combined.encode()).hexdigest()

# Header parameters for the request
headers = {
    "Content-Type": "application/json",
    "AuthKey": auth_key,
    "Certification": certification
}

# Example data for the request body
data = {
    "redeemCode":"XRdDeSxBVNbvCpU"
}

# Sending POST request
response = requests.post(url, headers=headers, data=json.dumps(data))

# Printing the response content
print(response.text)

# Example of response
{
 "code":1,
 "qrcode":"https:/code.tokyoesim.com/20231220/1703048857317.65625d0a779f4598d55d77bda43ecd80.png",
 "msg":"success",
 "redeemCode":"XRdDeSxBVNbvCpU"
}