التحقق من أرقام الهواتف
أرسل رمز التحقق من تطبيقك، مع إدارة صلاحيته وعدد المحاولات داخل تطبيقك.
TOGETHER SMS / DEVELOPERS
اربط موقعك أو نظام شركتك بخدمة SMS API في مصر. أرسل رسائل التحقق والتنبيهات والمتابعات باسم شركتك، من الأحداث التي تحصل داخل تطبيقك.
GET /sendsms.php
?user=YOUR_USERNAME
&password=YOUR_PASSWORD
&action=get
Host: togethersms.comONE API. USEFUL CUSTOMER MOMENTS.
اختَر الحدث في تطبيقك، وجهّز الرسالة المناسبة، واترك لنظامك إرسالها عبر الربط البرمجي.
أرسل رمز التحقق من تطبيقك، مع إدارة صلاحيته وعدد المحاولات داخل تطبيقك.
ذكّر عميلك بالمبلغ والموعد وخطوة السداد التالية.
اربط أحداث الطلب برسائل متابعة مفيدة للعميل.
قلّل نسيان المواعيد برسالة تذكير في الوقت المناسب.
عرّف العميل برصيده أو مكافآته عند حدوث تغيّر في نظامك.
أرسل رسائل مناسبة لمن وافقوا على استقبالها.
START WITH A BALANCE CHECK
تواصل معنا لاستكمال بيانات الشركة والمستندات، والحصول على بيانات الربط واسم مرسل معتمد.
احفظ بيانات الدخول في إعدادات آمنة على سيرفرك، ثم جرّب الاستعلام عن الرصيد.
استخدم رقم اختبار تملكه واسم المرسل المعتمد، ثم راجع القبول والتكلفة ووصول الرسالة.
https://togethersms.com/sendsms.phpللاستعلام عن الرصيد: أرسل user وpassword وaction=get. الرد الصحيح قيمة رقمية نصية، وقد تتضمن كسورًا.
# Run on your server; load secrets from your environment.
curl --get 'https://togethersms.com/sendsms.php' \
--connect-timeout 10 --max-time 20 \
--data-urlencode "user=${TOGETHER_SMS_USER}" \
--data-urlencode "password=${TOGETHER_SMS_PASSWORD}" \
--data-urlencode 'action=get'
# Sending is a separate request. Use an approved test recipient.
# Add numbers, sender, message and lang; omit action=get.HTTP API REFERENCE
إرسال الرسائل يستخدم طلب HTTPS GET بمعاملات في الرابط. الجدول التالي خاص بطلب الإرسال؛ action=get مخصص لاستعلام الرصيد.
| المعامل | القيمة المطلوبة |
|---|---|
user | اسم مستخدم حساب الـAPI. |
password | كلمة مرور حساب الـAPI؛ تحفظ على السيرفر. |
numbers | رقم دولي أو أرقام مفصولة بفواصل، بدون + أو مسافات. |
sender | اسم المرسل المعتمد والمفعّل لحسابك. |
message | نص الرسالة UTF-8، مع ترميز كل قيمة مرة واحدة. |
lang | en للإنجليزية، وar للعربية أو Unicode. |
GET /sendsms.php?user=YOUR_USERNAME&password=YOUR_PASSWORD
&numbers=YOUR_AUTHORIZED_TEST_NUMBER
&sender=YOUR_APPROVED_SENDER
&message=Your%20order%20is%20ready&lang=en
Host: togethersms.comالأسطر السابقة للتوضيح؛ الطلب الفعلي رابط واحد. استخدم مكتبة HTTP لترميز القيم، واستبدل رقم الاختبار برقم تملكه.
| الرد النصي | المعنى والخطوة التالية |
|---|---|
1 | تم قبول الطلب؛ ليس تأكيد وصول للموبايل. |
1:201001234567 | قبول مع قائمة أرقام؛ تحقق من صيغة الرد كاملة. |
0 | رفض عام للطلب. |
Invalid login | راجع بيانات الحساب بصورة آمنة. |
Missing or Empty Field | راجع المعاملات المطلوبة. |
Insufficient Balance | راجع الرصيد والنقاط المطلوبة. |
Invalid Sender | راجع اسم المرسل المعتمد. |
Sender name is not activated | اسم المرسل يحتاج استكمال التفعيل. |
Invalid Message Language | راجع lang وترميز النص. |
BACKEND EXAMPLES
أمثلة الاستعلام عن الرصيد تستخدم متغيرات بيئة لبيانات الدخول. لا تنفّذ الصفحة أي طلبات API نيابةً عنك.
# Run on your server; load secrets from your environment.
curl --get 'https://togethersms.com/sendsms.php' \
--connect-timeout 10 --max-time 20 \
--data-urlencode "user=${TOGETHER_SMS_USER}" \
--data-urlencode "password=${TOGETHER_SMS_PASSWORD}" \
--data-urlencode 'action=get'
# Sending is a separate request. Use an approved test recipient.
# Add numbers, sender, message and lang; omit action=get.// Backend only. Never expose provider credentials in a browser.
const query = new URLSearchParams({
user: process.env.TOGETHER_SMS_USER,
password: process.env.TOGETHER_SMS_PASSWORD,
action: 'get'
});
const response = await fetch(
'https://togethersms.com/sendsms.php?' + query,
{ redirect: 'error', signal: AbortSignal.timeout(20000) }
);
const body = (await response.text()).trim();
if (!response.ok || !/^[0-9]+(?:\.[0-9]+)?$/.test(body)) {
throw new Error('Balance request was not accepted');
}
// Keep decimal precision; do not log the request URL.<?php
// Backend only. Secrets come from your deployment environment.
$query = http_build_query(array(
'user' => getenv('TOGETHER_SMS_USER'),
'password' => getenv('TOGETHER_SMS_PASSWORD'),
'action' => 'get'
), '', '&', PHP_QUERY_RFC3986);
$ch = curl_init('https://togethersms.com/sendsms.php?' . $query);
curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 20
));
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($body === false || $status < 200 || $status >= 300 ||
!preg_match('/\A[0-9]+(?:\.[0-9]+)?\z/', trim($body))) {
throw new RuntimeException('Balance request was not accepted');
}# Backend only. Requires the requests package.
import os
import re
import requests
response = requests.get(
'https://togethersms.com/sendsms.php',
params={
'user': os.environ['TOGETHER_SMS_USER'],
'password': os.environ['TOGETHER_SMS_PASSWORD'],
'action': 'get'
},
timeout=(10, 20),
allow_redirects=False
)
body = response.text.strip()
if not (200 <= response.status_code < 300 and
re.fullmatch(r'[0-9]+(?:\.[0-9]+)?', body)):
raise RuntimeError('Balance request was not accepted')
# Timeout values are connect/read timeouts, not a strict total deadline.// Backend only. Use a supported .NET runtime.
using var handler = new HttpClientHandler { AllowAutoRedirect = false };
using var client = new HttpClient(handler) {
Timeout = TimeSpan.FromSeconds(20)
};
string user = Environment.GetEnvironmentVariable("TOGETHER_SMS_USER")!;
string password = Environment.GetEnvironmentVariable("TOGETHER_SMS_PASSWORD")!;
string url = "https://togethersms.com/sendsms.php?user=" +
Uri.EscapeDataString(user) + "&password=" +
Uri.EscapeDataString(password) + "&action=get";
using var response = await client.GetAsync(url);
string body = (await response.Content.ReadAsStringAsync()).Trim();
if (!response.IsSuccessStatusCode ||
!System.Text.RegularExpressions.Regex.IsMatch(
body, @"\A[0-9]+(?:\.[0-9]+)?\z")) {
throw new InvalidOperationException("Balance request was not accepted");
}DEVELOPER DOCUMENTATION / ENGLISH
مرجع الطلبات والردود، وأمثلة الربط، والتعامل مع الأخطاء، وخطوات الانتقال إلى العنوان الجديد.
PDF · v1.2 · 06 Nov 2026لا. تطبيق Flutter أو الويب يتصل بسيرفرك، وسيرفرك فقط يحتفظ ببيانات حساب SMS ويتصل بالبوابة.
يعني قبول الطلب من البوابة. هذا العقد لا يوفّر تأكيد وصول للموبايل أو نقطة اتصال موثقة لتقارير التسليم.
اعتبر النتيجة غير معروفة، وراجعها قبل الإرسال مجددًا. ربما استلمت البوابة الطلب بالفعل؛ إعادة المحاولة تلقائيًا قد تكرر الرسائل.
الدليل المرفق لا يوثّق معاملًا للجدولة. يمكن لتطبيقك إدارة التوقيت؛ خصائص لوحة الموقع لا تعني تلقائيًا توافرها بنفس الشكل في الـAPI.
يدعم العقد قائمة أرقام مفصولة بفواصل، لكن حدود العدد وطول الرابط ومعدل الطلبات تحتاج تأكيدًا مع فريقنا قبل الحملات الكبيرة.
لا. موعد الانتقال المستهدف هو 30 يونيو 2027. اختبر الرابط الجديد، وتابع إشعارات فريقنا قبل تغيير بيئة الإنتاج.
LET'S CONNECT YOUR BUSINESS
احكي لنا عن استخدامك، ونراجع معك تفعيل اسم المرسل ومتطلبات البداية.