Services

مستندات فنی IPG های مستقیم

سرویس اتصال به درگاه پرداخت
با استفاده از این سرویس قادر خواهید بود وب سایت و پلتفرم تون رو به شبکه پرداخت آل‌سات پرداخت وصل کنید. برای این منظور می بایست سه مرحله رو انجام بدید

curl --location --request POST 'https://www.alsatpardakht.com/API_V1/sign.php' \
--header 'Cookie: PHPSESSID=ve3hm9p3e0olopnaddfr2o6tl1' \
--form 'Api="APIKEY"' \
--form 'Amount="50000"' \
--form 'InvoiceNumber="1001"' \
--form 'RedirectAddress="https://www.alsatpardakht.com/API_V1_C/callback.php?Api=APIKEY"'

اتصال با زبان برنامه نویسی PHP

مرحله اول : ارسال دیتا
ابتدا می بایست پارامترهای موجود در جدول زیر رو با متد POST به آدرسی که مشخص شده ارسال کنید. به نوع داده ها و نام فیلد توجه کنید.


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.alsatpardakht.com/API_V1/sign.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$post = array(
    'Api' => "APIKEY",
    'Amount' => "50000",
    'InvoiceNumber' => "1001",
    'RedirectAddress' => "https://www.alsatpardakht.com/API_V1_C/callback.php?Api=APIKEY"
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$headers = array();
$headers[] = 'Cookie: PHPSESSID=ve3hm9p3e0olopnaddfr2o6tl1';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
print_r($result);
curl_close($ch);

نام فیلد نوع توضیحات
Api String API Key دریافتی از پنل کاربری شما که بعد از تایید درخواست درگاه صادر میشه
Amount Integer مبلغ تراکنش به صورت ریال و بدون رقم اعشار. بزرگتر یا مساوی 10,000 ریال
RedirectAddress String آدرس بازگشتی که باید به صورت urlencode ارسال بشه و باید با آدرس درگاه پرداخت تایید شده در شبکه پرداخت آل‌سات پرداخت در یک ادرس باشه
InvoiceNumber String شماره فاکتور شما

مرحله دوم : انتقال کاربر به صفحه پرداخت
در صورتی که در مرحله ارسال دیتا ، اطلاعات ارسالی شما درست باشه در پاسخ دو مقدار IsSuccess = 1 و Token رو دریافت میکنید و می بایست خریدار رو به شیوه زیر به درگاه ریدایرکت کنید. برای اینکار باید توکن دریافت شده در مرحله قبل رو Token دریافت کردید رو در اخر ادرس
https://www.alsatpardakht.com/API_V1/Go.php?Token=$Token
قرار بدید و کاربر رو به URL ایجاد شده ریدایرکت کنید. اگر اینکارهارو درست انجام بدید چند ثانیه بعد صفحه پرداخت وجه رو میتونید ببینید.

 { 
    "IsSuccess": 1,
    "TimeStamp": "2021/06/20 19:16:16",
    "InvoiceDate": "2021/06/20 19:16:16",
    "Token": "uUDUT0EBXWA67Hz1Pwpyb8CsrUBj7yOnx5rviSXwrgk=",
    "Sign": "A46ZTlf7qmfdbIZIB+4me6hiYJhCs58+fnMNJlfATpaA4Vw+YMB2z7fEHWF359pZOXJGvd5FMAijmkdDFh68V6iOVOLrqWyXVbM1fXKBBl5FC+FeoHnfaccvZ68Eot67OHjyGpCEEZ+h3KEQoEaKem0h+JuHK/pxuTrrU/KWHlI="
}

نکته :
بعد از اینکه توکن رو اخر url قرار دادید و یه لینک ایجاد کردید حتما باید کاربر رو به این ادرس ریدایرکت کنید. اگر کاربر رو Post کنید به خطا میخورید و حتما باید مشتری تون رو به لینک ایجاد شده ریدایرکت کنید

hrader("location:https://www.alsatpardakht.com/API_V1/Go.php?Token=$Token");

مرحله سوم : بازگشت به سایت پذیرنده


$Api = $_GET['Api'];
$tref = $_GET['tref'];
$iN = $_GET['iN'];
$iD = $_GET['iD'];


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.alsatpardakht.com/API_V1/callback.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$post = array(
    'Api' => "APIKEY",
    'tref' => "$tref",
    'iN' => "$iN",
    'iD' => "$iD"
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$headers = array();
$headers[] = 'Cookie: PHPSESSID=ve3hm9p3e0olopnaddfr2o6tl1';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
print_r($result);
curl_close($ch);

نام فیلد نوع توضیحات
Api String API Key دریافتی از پنل کاربری شما که بعد از تایید درخواست درگاه صادر میشه
tref Integer
iN String
iD String

اتصال با زبان برنامه نویسی C# - RestSharp

var client = new RestClient("https://www.alsatpardakht.com/API_V1/sign.php");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Cookie", "PHPSESSID=ve3hm9p3e0olopnaddfr2o6tl1");
request.AlwaysMultipartFormData = true;
request.AddParameter("Api", "APIKEY");
request.AddParameter("Amount", "50000");
request.AddParameter("InvoiceNumber", "1001");
request.AddParameter("RedirectAddress", "https://www.alsatpardakht.com/API_V1_C/callback.php?Api=123456");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

اتصال با زبان برنامه نویسی Go - Native

package main

import (
  "fmt"
  "bytes"
  "mime/multipart"
  "net/http"
  "io/ioutil"
)

func main() {

  url := "https://www.alsatpardakht.com/API_V1/sign.php"
  method := "POST"

  payload := &bytes.Buffer{}
  writer := multipart.NewWriter(payload)
  _ = writer.WriteField("Api", "APIKEY")
  _ = writer.WriteField("Amount", "50000")
  _ = writer.WriteField("InvoiceNumber", "1001")
  _ = writer.WriteField("RedirectAddress", "https://www.alsatpardakht.com/API_V1_C/callback.php?Api=123456")
  err := writer.Close()
  if err != nil {
    fmt.Println(err)
    return
  }


  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Cookie", "PHPSESSID=ve3hm9p3e0olopnaddfr2o6tl1")

  req.Header.Set("Content-Type", writer.FormDataContentType())
  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := ioutil.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}

اتصال با زبان برنامه نویسی Swift - URLSession

import Foundation
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif

var semaphore = DispatchSemaphore (value: 0)

let parameters = [
  [
    "key": "Api",
    "value": "APIKEY",
    "type": "text"
  ],
  [
    "key": "Amount",
    "value": "50000",
    "type": "text"
  ],
  [
    "key": "InvoiceNumber",
    "value": "1001",
    "type": "text"
  ],
  [
    "key": "RedirectAddress",
    "value": "https://www.alsatpardakht.com/API_V1_C/callback.php?Api=123456",
    "type": "text"
  ]] as [[String : Any]]

let boundary = "Boundary-\(UUID().uuidString)"
var body = ""
var error: Error? = nil
for param in parameters {
  if param["disabled"] == nil {
    let paramName = param["key"]!
    body += "--\(boundary)\r\n"
    body += "Content-Disposition:form-data; name=\"\(paramName)\""
    if param["contentType"] != nil {
      body += "\r\nContent-Type: \(param["contentType"] as! String)"
    }
    let paramType = param["type"] as! String
    if paramType == "text" {
      let paramValue = param["value"] as! String
      body += "\r\n\r\n\(paramValue)\r\n"
    } else {
      let paramSrc = param["src"] as! String
      let fileData = try NSData(contentsOfFile:paramSrc, options:[]) as Data
      let fileContent = String(data: fileData, encoding: .utf8)!
      body += "; filename=\"\(paramSrc)\"\r\n"
        + "Content-Type: \"content-type header\"\r\n\r\n\(fileContent)\r\n"
    }
  }
}
body += "--\(boundary)--\r\n";
let postData = body.data(using: .utf8)

var request = URLRequest(url: URL(string: "https://www.alsatpardakht.com/API_V1/sign.php")!,timeoutInterval: Double.infinity)
request.addValue("PHPSESSID=ve3hm9p3e0olopnaddfr2o6tl1", forHTTPHeaderField: "Cookie")
request.addValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in 
  guard let data = data else {
    print(String(describing: error))
    semaphore.signal()
    return
  }
  print(String(data: data, encoding: .utf8)!)
  semaphore.signal()
}

task.resume()
semaphore.wait()