S M S A F Z A R
تلفن تماس

031-34369080

آدرس ایمیل

Info@SMSAfzar.com

آدرس

اصفهان، خیابان 5 آذر، مجتمع آذر

تلفن تماس
031-34369080
آدرس ایمیل
Info@SMSAfzar.com
آدرس
اصفهان، خیابان 5 آذر، مجتمع آذر

وب سرویس ارسال و دریافت پیامک

احراز هویت با توکن JWT
  • 1- نیازمندی ها :
    • نام کاربری
    • کلمه عبور : به‌ صورت پیش فرض، جهت دریافت توکن از کلمه عبور حساب کاربری استفاده می شود. در صورت تمایل می توانید کلمه عبور مجزا جهت دریافت توکن تعریف نمایید، برای این منظور پس از ورود به حساب کاربری خود از منوی امکانات پیشرفته، خدمات وب، زیر منوی وب سرویس RESTful، گزینه ی تنظیمات احراز هویت با توکن JWT را انتخاب نمایید و در سر برگ تغییر کلمه عبور جهت دریافت توکن JWT، نسبت به تغییر کلمه عبور اقدام نمایید.
    • نام دامنه
    • تنظیمات امنیتی :
      • تعیین آدرس های IP معتبر : در صورت تمایل می توانید از منوی امکانات پیشرفته، خدمات وب، زیر منوی وب سرویس RESTful، گزینه ی تنظیمات احراز هویت با توکن JWT، سربرگ مدیریت آدرس های IP معتبر توکن JWT، نسبت به تعریف آدرس های IP معتبر جهت فراخوانی وب سرویس اقدام نمایید. در صورت تعیین آدرس های IP معتبر، درخواست ‌هایی با مبدا غير از آدرس های IP تعریف شده با کد خطای 403 مواجه خواهند شد و سرویس از پاسخ‌ گویی به این درخواست‌ ها خودداری می نماید.
      • تعیین تاریخ انقضا توکن : به صورت پیش فرض تاریخ انقضا توکن دریافتی 7 روز می باشد در صورت تمایل می توانید از منوی امکانات پیشرفته، خدمات وب، زیر منوی وب سرویس RESTful، گزینه ی تنظیمات احراز هویت با توکن JWT، سربرگ تنظیمات توکن JWT، تاریخ انقضا دلخواه را برای توکن تعیین نمایید.
  • 2- دریافت توکن :
    • جهت استفاده از وب ‌سرویس RESTful با روش احراز هویت از طریق توکن JWT، ابتدا می بایست با فراخوانی متد auth/token توکن احراز هویت دریافت نمایید.
      آدرس فراخوانی متد : https://api.smsafzar.ir/auth/token
      روش فراخوانی متد با HTTP : POST
    • در پاسخ به فراخوانی متد فوق، یک مقدار توکن به صورت رشته ارائه می‌شود که جهت ارسال درخواست ‌های بعدی ضروری می باشد.
  • 3- استفاده از توکن در هدر درخواست ها :
    • پس از دریافت توکن، برای هر درخواست بعدی به وب‌ سرویس، می بایست توکن دریافتی در هدر HTTP با نام Authorization قرار گیرد و به صورت زیر ارسال شود:
      Authorization: Bearer <YourToken>
متد دریافت توکن JWT
نام متد : auth/token :
از این متد جهت احراز هویت و دریافت توکن JWT استفاده می شود. به صورت پیش فرض مدت زمان اعتبار توکن هفت روز می باشد و در صورت تمایل به تعیین مدت زمان اعتبار توکن می توانید پس از ورود به حساب کاربری خود از منوی امکانات پیشرفته، خدمات وب، زیر منوی وب سرویس RESTful، گزینه ی تنظیمات وب سرویس را انتخاب نمایید و در سر برگ تنظیمات توکن، نسبت به تعیین مدت زمان اعتبار توکن اقدام نمایید.
آدرس فراخوانی متد : https://api.smsafzar.ir/auth/token
روش فراخوانی متد با HTTP : POST
پارامترهای ورودی :
userName نام کاربری
password کلمه عبور
domain نام دامنه
نحوه ی ارسال پارامترهای ورودی در قالب Json و به صورت ذیل می باشد :
{
  "userName": "Your username",
  "password": "Your password",
  "domain": "sms.smsafzar"
}
خروجی :
کد های وضعیت که در پاسخ HTTP توسط این متد بازگشت داده می شوند عبارتند از :
400 مقادیر پارامترهای ارسالی معتبر نمی باشند. (مقدار پارامتر errorCode در خروجی، برابر با عدد ۱۰۰۱ و مقدار پارامتر errorMessage شرح خطای مربوطه را نمایش می دهد. پارامتر validationErrors، آرایه ای شامل نام پارامتر (field) و شرح خطای مربوط به نامعتبر بودن مقدار پارامتر (errorMessage) می باشد.)
نمونه خروجی :
{
  "errorCode": 1001,
  "errorMessage": ".مقادیر پارامترهای ارسالی معتبر نمی باشند",
  "validationErrors": [
    {
      "field": "UserName",
      "errorMessage": ".حداقل طول فیلد [ نام کاربری ] 6 کاراکتر می باشد"
    },
    {
      "field": "Password",
      "errorMessage": ".حداقل طول فیلد [ کلمه عبور ] 8 کاراکتر می باشد"
    }
  ]
}
401 خطای اهراز هویت رخ داده است. (اطلاعات حساب کاربری صحیح نمی باشد.) (مقدار پارامتر errorCode در خروجی، برابر با عدد ۴۰۱ و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.)
نمونه خروجی :
{
  "errorCode": 401,
  "errorMessage": ".خطای احراز هویت رخ داده است"
}
403
وز دسترسی به سرویس برای حساب کاربری تعریف نشده است. (مقدار پارامتر errorCode در خروجی، برابر با کد خطای مربوطه و مقدار پارامتر errorMessage علت عدم دسترسی کاربر به سرویس می باشد.) ( لیست کدهای خطا )
مجوز دسترسی به متد برای حساب کاربری تعریف نشده است. (مقدار پارامتر errorCode در خروجی، برابر با عدد ۱۰۰۵ و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.)
آدرس IP جهت دسترسی به سرویس معتبر نمی باشد. (مقدار پارامتر errorCode در خروجی، برابر با عدد ۱۰۰۶ و مقدار پارامتر errorMessage علت عدم دسترسی کاربر به سرویس می باشد.)
نمونه های مختلف خروجی :
{
  "errorCode": 1004,
  "errorMessage": ".مجوز دسترسی به سرویس برای حساب کاربری تعریف نشده است"
}
{
  "errorCode": 1005,
  "errorMessage": ".مجوز دسترسی به متد برای حساب کاربری تعریف نشده است"
}
{
  "errorCode": 1006,
  "errorMessage": ".آدرس آی پی جهت دسترسی به سرویس معتبر نمی باشد"
}
{
  "errorCode": 1010,
  "errorMessage": ".حساب کاربر غیر فعال می باشد"
}
{
  "errorCode": 1011,
  "errorMessage": ".حساب کاربر در تاریخ: 1403/01/01 منقضی شده است"
}
429 تعداد دفعات درخواست بیشتر از حد مجاز می باشد. (حداکثر تعداد درخواست ها در هر ثانیه 5 عدد می باشد.) (مقدار پارامتر errorCode در خروجی، برابر با عدد ۴۲۹ و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.)
نمونه خروجی :
{
  "errorCode": 429,
  "errorMessage": "تعداد درخواست های ارسالی بیش ار حد مجاز می باشد. [ حداکثر تعداد درخواست ها در هر ثانیه 5 عدد می باشد. ]"
}
500 خطایی در سرور رخ داده است. (مقدار پارامتر errorCode در خروجی، برابر با کد خطای مربوطه جهت ارائه به بخش پشتیبانی و مقدار پارامتر errorMessage شرح خطای مربوطه می باشد.)
نمونه خروجی :
{
  "errorCode": 1000011011,
  "errorMessage": "خطایی در سرور رخ داده است. | شناسه خطا : 1000011011"
}
200 اجرای موفقیت آمیز عملیات (پارامتر token در خروجی، حاوی مقدار توکن JWT می باشد.)
نمونه خروجی :
{
  "token": "ltQZ6Yr3s-x5EZ2jg...."
}
نمونه کدها :
curl -X POST https://api.smsafzar.ir/auth/token \
-H "Content-Type: application/json" \
-H "Cache-Control: no-cache" \
-H "Accept: application/json" \
-d '{
"userName": "YourUserName",
"password": "YourPassword",
"domain": "sms.smsafzar"
}'
using RestSharp;
using RestSharp.Authenticators;

var apiBaseUrl = "https://api.smsafzar.ir";
var accountJson = new
{
userName = "YourUserName",
password = "YourPassword",
domain = "sms.smsafzar"
};

// Options
var options = new RestClientOptions(apiBaseUrl);

// Client
var client = new RestClient(options);

// Request
var request = new RestRequest("auth/token");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
request.AddJsonBody(accountJson);

// Call
var response = await client.PostAsync(request);

Console.WriteLine($"Response Status Code: {(int)response.StatusCode}");
Console.WriteLine($"Response Content: {response.Content}");
import java.net.URI;
import java.net.HTTP.HttpClient;
import java.net.HTTP.HttpRequest;
import java.net.HTTP.HttpResponse;
import java.net.HTTP.HttpHeaders;
import java.net.HTTP.HttpRequest.BodyPublishers;
import java.nio.file.*;

try {
String apiBaseUrl =  "https://api.smsafzar.ir";

Map<String, String> account = new HashMap<>();
accountJson.put("userName", "YourUserName");
accountJson.put("password", "YourPassword");
accountJson.put("domain", "sms.smsafzar");

ObjectMapper objectMapper = new ObjectMapper();
String requestBody = objectMapper.writeValueAsString(account);

// Client
HttpClient client = HttpClient.newHttpClient();

// Request
HttpRequest request = HttpRequest.newBuilder().uri(URI.create(apiBaseUrl + "/auth/token"))
.header("Content-Type", "application/json")
.header("Cache-Control", "no-cache")
.header("Accept", "application/json")
.POST(BodyPublishers.ofString(requestBody))
.build();

// Call
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

//Response
int responseStatusCode = response.statusCode();
String responseContent = response.body();

System.out.println("Response Status Code: " + responseStatusCode);
System.out.println("Response Message: " + responseContent);
} catch (Exception e) {
e.printStackTrace();
}
import requests

api_base_url = "https://api.smsafzar.ir"

account_json = {
"userName": "YourUserName",
"password": "YourPassword",
"domain": "sms.smsafzar"
}

headers = {
"Cache-Control": "no-cache",
"Accept": "application/json"
}

# Call
response = requests.post(f"{api_base_url}/auth/token", json=account_json, headers=headers)

print(f"Response Status Code: {response.status_code}")
print(f"Response Content: {response.text}")
<?php
$apiBaseUrl = "https://api.smsafzar.ir";

$accountJson =json_encode([
    'userName' => 'YourUserName',
    'password' => 'YourPassword',
    'domain'   => 'sms.smsafzar'
]);

// Request
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "{$apiBaseUrl}/auth/token");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $accountJson);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Cache-Control: no-cache',
'Accept: application/json'
]);

// Call
$response = curl_exec($ch);

// Response
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
} else {
$httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "Response Status Code: " . $httpStatusCode . "\n";
echo "Response Content: " . $response . "\n";
}

// Close the CURL session
curl_close($curl);
?>
const axios = require('axios');

const apiBaseUrl = 'https://api.smsafzar.ir';
const accountJson = {
userName: 'YourUserName',
password: 'YourPassword',
domain: 'sms.smsafzar'
};

const headers = {
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json'
};

// Request
axios.post(`${apiBaseUrl}/auth/token`, accountJson, { headers })
.then(response => {
// Response
console.log('Response Status Code:', response.status);
console.log('Response Content:', response.data);
})
.catch(error => {
console.error('Error:', error.response ? error.response.data : error.message);
});
let httpClient= inject(HttpClient);

let apiBaseUrl = 'https://api.smsafzar.ir';
const accountJson = {
userName: 'YourUserName',
password: 'YourPassword',
domain: 'sms.smsafzar'
};

let headers = new HttpHeaders({
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json'
});

// Request
this.HTTP.post(`${apiBaseUrl}/auth/token`, accountJson, { headers , observe: 'response' }).subscribe(response => {
// Response
console.log('Response Status Code:', response.status);
console.log('Response Content:', response.body);
}, error => {
console.error('Error:', error);
});
import React, { useState } from 'react';

const [responseStatusCode, setResponseStatusCode] = useState(null);
const [responseContent, setResponseContent] = useState('');

const apiBaseUrl = 'https://api.smsafzar.ir';

const accountJson = {
userName: 'YourUserName',
password: 'YourPassword',
domain: 'sms.smsafzar'
};

const headers = {
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json'
};

try {
// Request
const response = await fetch(`${apiBaseUrl}/auth/token`, {
method: 'POST',
headers: {
'Cache-Control': 'no-cache',
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify(accountJson),
});

// Response
const content = await response.json();
setResponseStatusCode(response.status);
setResponseContent(content);

console.log('Response Status Code:', response.status);
console.log('Response Content:', content);
} catch (error) {
console.error('Error:', error);
}
پس از دریافت توکن می بایست مقدار توکن به همراه کلمه Bearer در سرآیند HTTP و با کلید Authorization جهت فراخوانی سایر متدهای سرویس ارسال شود.
Authorization: Bearer ltQZ6Yr3s-x5EZ2jg....