Skip to main content

سرویس های انتقال وجه

اصطلاحات#

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

کاربر/ پذیرنده: شخصی که در پنل پی استار حساب کاربری ایجاد کرده است.

اپليکيشن:برای فراخوانی وبسرویس‌های انتقال وجه، نياز به ایجاد اپليکيشن مي‌باشد که به این منظور باید از طریق پنل کاربری برای ایجاد آن اقدام نمایید.

apiKey :یک توکن برای احراز هویت کاربر و دسترسی به اپليکيشن، به منظور فراخوانی وبسرویس‌های دریافت دسترسی حساب و انتقال وجه است. این توکن باید در تمامی وبسرویس‌ها به عنوان توکن bearer در هدر authorization ارسال شود.

refreshToken :توکن apiKey به مدت 24 ساعت معتبر است. لذا برای ایجاد apiKey جدید به refreshToken نياز مي‌باشد.

applicationId : شناسه اپليکيشن، که بعد از ایجاد اپليکيشن در اختيار کاربر قرار مي‌گيرد.

accessPassword :رمز دسترسی به اپليکيشن، که بعد از ایجاد اپليکيشن در اختيار کاربر قرار مي‌گيرد.

accessIp :آی پی های مجاز برای فراخوانی وبسرویس‌ها که در اپليکيشن تنظيم شده اند.

وبسرویس refresh api key#

  • https://core.paystar.ir/api/application/refresh-api-key

برای‌ دریافت apiKey جدید ،سرویس بالا با متد POST فراخوانی شود.

پارامترهای ورودی

نام فیلدنوع دادهشرحاجباری
application_idstringشناسه اپلیکیشنبله
access_passwordstringرمز دسترسی اپلیکیشنبله
refresh_tokenstringتوکن بازیابی API keyبله

درصورت فرخوانی موفق، پاسخ با وضعيت ok و در صورت فراخوانی ناموفق با وضعيت fail دریافت ميکنيد. نمونه پاسخ موفق به شکل زیر مي‌باشد.

{
“status”: "ok",
“data”: {
“api_key”: “...”,
“api_key_expire_date”: “...”
},
}

وبسرویس انتقال وجه بانکی#

  • https://core.paystar.ir/api/bank-transfer/v2/settlement

پس از گرفتن دسترسی به حساب بانکی، برای انتقال وجه باید وبسرویس بالا را با متد POST فراخوانی کنيد.

پارامترهای ورودی

نام فیلدنوع دادهشرحاجباری
application_idstringشناسه اپلیکیشنبله
access_passwordstringرمز دسترسی اپلیکیشنبله
transfersarrayآرایه‌ای از لیست درخواست‌های انتقال وجه که هر درخواست یک object به فرمت جدول زیر می‌باشدبله

جدول نوع داده transfers

عنواننوع دادهشرح
amountintegerمبلغ تراکنش
depositstringشماره حساب مبداء
destination_accountstringشماره حساب مقصد که میتوانید شماره حساب بانکی یا شماره شبا (26 کاراکتر) باشد (اگر حساب شما در بانک شامل کاراکتر اضافه مانند خط تیره میباشد با همان فرمت در پارامتر استفاده کنید)
destination_firstnamestringنام صاحب حساب مقصد
destination_lastnamestringنام خانوادگی صاحب حساب مقصد
track_idstringمیتوانید با track id یکتا، از ایجاد دوباره یک تراکنش جلوگیری کنید. در صورت ورود track id تکراری خطا دریافت میکنید.
pay_idstringشناسه واریز (در صورتی که حساب مقصد شناسه دار باشد وارد کردن این فیلد الزامی می باشد)
نمونه کد (php) :
<?php
$url = 'https://core.paystar.ir/api/bank-transfer/v2/settlement';
$application_id = 'your_application_id';
$bank = '016';
$access_password = 'your_access_password';
$transfers = [
[
'amount' => 100000,
'deposit' => 'your_deposit_account',
'destination_account' => 'your_destination_account',
'destination_firstname' => 'destination_firstname',
'destination_lastname' => 'destination_lastname',
'track_id' => 'your_unique_track_id',
'pay_id' => 'your_pay_id'
]
];
$body_params = [
'application_id' => $application_id,
'access_password' => $access_password,
'transfers' => $transfers
];
$body_params_json = json_encode($body_params);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $body_params_json,
CURLOPT_HTTPHEADER => [
'Accept: application/json',
'Content-Type: application/json'
]
]);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true, JSON_PRETTY_PRINT));
?>
نمونه کد (C# .net) :
using System;
using RestSharp;
using Newtonsoft.Json;
var options = new RestClientOptions("https://core.paystar.ir");
var client = new RestClient(options);
string applicationId = "your_application_id";
string bank = "016";
string accessPassword = "your_access_password";
var transfers = new[] {
new {
amount = 100000,
deposit = "your_deposit_account",
destination_account = "your_destination_account",
destination_firstname = "destination_firstname",
destination_lastname = "destination_lastname",
track_id = "your_unique_track_id",
pay_id = "your_pay_id"
}
};
var requestBody = new {
application_id = applicationId,
access_password = accessPassword,
transfers = transfers
};
string jsonBody = JsonConvert.SerializeObject(requestBody);
var request = new RestRequest("/api/bank-transfer/v2/settlement", Method.Post);
request.AddJsonBody(jsonBody);
request.AddHeader("Content-Type", "application/json");
RestResponse response = client.Execute(request);
var res = response.Content;
Console.WriteLine(res);
نمونه کد (Python) :
import json
import requests
url = "https://core.paystar.ir/api/bank-transfer/v2/settlement"
application_id = 'your_application_id'
bank = '016'
access_password = 'your_access_password'
transfers = [{
'amount': 100000,
'deposit': 'your_deposit_account',
'destination_account': 'your_destination_account',
'destination_firstname': 'destination_firstname',
'destination_lastname': 'destination_lastname',
'track_id': 'your_unique_track_id',
'pay_id': 'your_pay_id'
}]
data = {
'application_id': application_id,
'access_password': access_password,
'transfers': transfers
}
response = requests.post(url, json=data, headers={"Content-Type": "application/json"})
output = json.dumps(response.json(), indent=4, ensure_ascii=False)
print(output)

وبسرویس دریافت لیست درخواست‌های انتقال وجه#

  • https://core.paystar.ir/api/bank-transfer/settlement-requests

جهت دریافت ليست درخواست‌های انتقال وجه ،سرویس بالا با متد GET فراخوانی گردد:

پارامترهای ورودی

نام فیلدنوع دادهشرحاجباری
application_idstringشناسه اپلیکیشنبله
access_passwordstringرمز دسترسی اپلیکیشنبله
depositstringشماره حساب بانک که در اپلیکیشن ثبت شده استخیر
track_idstringکد رهگیریخیر
limitintegerتعداد رکورد‌های پاسخدرصورت وارد کردن skip
skipintegerتعدادرکورد‌هایی که رد شونددرصورت وارد کردن limit
نمونه کد (php) :
<?php
$api_key = 'your_api_key';
$application_id = 'your_application_id';
$access_password = 'your_access_password';
$deposit = 'your_deposit_account'; // Optional
$track_id = 'your_track_id'; // Optional
$limit = 10; // Optional
$skip = 0; // Optional
$url = 'https://core.paystar.ir/api/bank-transfer/settlement-requests';
$body_params = [
'application_id' => $application_id,
'access_password' => $access_password,
'deposit' => $deposit,
'track_id' => $track_id,
'limit' => $limit,
'skip' => $skip
];
$query_params = http_build_query(array_filter($body_params)); // remove null values
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url . "?" . $query_params,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPGET => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Bearer ' . $api_key
],
]
);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true, JSON_PRETTY_PRINT));
?>
نمونه کد (C# .net) :
using RestSharp;
using Newtonsoft.Json;
var options = new RestClientOptions("https://core.paystar.ir");
var client = new RestClient(options);
string api_key = "your-api-key";
string application_id = "your_application_id";
string access_password = "your_access_password";
string deposit = "your_deposit_account"; // Optional
string track_id = "your_track_id"; // Optional
int limit = 10; // Optional
int skip = 0; // Optional
var requestBody = new {
application_id = application_id,
access_password = access_password,
deposit = deposit,
track_id = track_id,
limit = limit,
skip = skip
};
var queryParams = string.Join("&", requestBody.GetType().GetProperties()
.Where(p => p.GetValue(requestBody) != null)
.Select(p => $"{p.Name}={p.GetValue(requestBody)}"));
var request = new RestRequest($"/api/bank-transfer/settlement-requests?{queryParams}", Method.Get);
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer " + api_key);
RestResponse response = client.Execute(request);
var res = response.Content;
Console.WriteLine(res);
نمونه کد (Python) :
import json
import requests
url = "https://core.paystar.ir/api/bank-transfer/settlement-requests"
api_key = 'your-api-key'
header = {
"Accept": "application/json",
"Authorization": "Bearer " + api_key,
"Content-Type": "application/json",
}
params = {
'application_id': 'your_application_id',
'access_password': 'your_access_password',
'deposit': 'your_deposit_account', # Optional
'track_id': 'your_track_id', # Optional
'limit': 10, # Optional
'skip': 0, # Optional
}
response = requests.get(url, headers=header, params={k: v for k, v in params.items() if v is not None})
output = json.dumps(response.json(), indent=4, ensure_ascii=False)
print(output)

وبسرویس دریافت موجودی حساب#

  • https://core.paystar.ir/api/open-banking/service/balance

جهت دریافت موجودی حساب بانکی ،سرویس بالا با متد GET فراخوانی گردد:

(در حال حاضر وبسرویس موجودی فقط برای بانک صادرات در دسترس است.)

پارامترهای ورودی

نام فیلدنوع دادهشرحاجباری
application_idstringشناسه اپلیکیشنبله
access_passwordstringرمز دسترسی اپلیکیشنبله
account_numberstringشماره حساب بانک که در اپلیکیشن ثبت شده استبله

پارامتر های خروجی (درصورت موفق بودن درخواست)

عنواننوع دادهشرح
available_balanceintمانده در دسترس
effective_balanceintمانده موثر
accountstringشماره حساب
نمونه کد (php) :
<?php
$api_key = 'your_api_key';
$application_id = 'your_application_id';
$access_password = 'your_access_password';
$account_number = 'your_deposit_account';
$url = 'https://core.paystar.ir/api/open-banking/service/balance';
$body_params = [
'application_id' => $application_id,
'access_password' => $access_password,
'account_number' => $account_number
];
$query_params = http_build_query(array_filter($body_params));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url . "?" . $query_params,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPGET => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Bearer ' . $api_key
],
]
);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true, JSON_PRETTY_PRINT));
?>
نمونه کد (C# .net) :
using RestSharp;
using Newtonsoft.Json;
var options = new RestClientOptions("https://core.paystar.ir");
var client = new RestClient(options);
string api_key = "your-api-key";
string application_id = "your_application_id";
string access_password = "your_access_password";
string account_number = "your_deposit_account";
var requestBody = new {
application_id = application_id,
access_password = access_password,
account_number = account_number
};
var queryParams = string.Join("&", requestBody.GetType().GetProperties()
.Where(p => p.GetValue(requestBody) != null)
.Select(p => $"{p.Name}={p.GetValue(requestBody)}"));
var request = new RestRequest($"/api/open-banking/service/balance?{queryParams}", Method.Get);
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer " + api_key);
RestResponse response = client.Execute(request);
var res = response.Content;
Console.WriteLine(res);
نمونه کد (Python) :
import json
import requests
url = "https://core.paystar.ir/api/open-banking/service/balance"
api_key = 'your-api-key'
header = {
"Accept": "application/json",
"Authorization": "Bearer " + api_key,
"Content-Type": "application/json",
}
params = {
'application_id': 'your_application_id',
'access_password': 'your_access_password',
'account_number': 'your_deposit_account',
}
response = requests.get(url, headers=header, params={k: v for k, v in params.items() if v is not None})
output = json.dumps(response.json(), indent=4, ensure_ascii=False)
print(output)

وبسرویس دریافت صورتحساب#

  • https://core.paystar.ir/api/open-banking/service/invoice

جهت دریافت صورتحساب بانکی ،سرویس بالا با متد GET فراخوانی گردد:

(در حال حاضر وبسرویس صورتحساب فقط برای بانک صادرات در دسترس است.)

پارامترهای ورودی

نام فیلدنوع دادهشرحاجباری
application_idstringشناسه اپلیکیشنبله
access_passwordstringرمز دسترسی اپلیکیشنبله
account_numberstringشماره حساب بانک که در اپلیکیشن ثبت شده استبله
from_datestringتاریخ میلادی شروع بازه صورتحساب (Y-m-d)بله
to_datestringتاریخ میلادی پایان بازه صورتحساب (Y-m-d)بله
last_recordstringپارامتر صفحه بندی برای بانک صادراتخیر
page_sizenumberتعداد رکورد هر پاسخ ( پیشفرض = 100 )خیر

پارامتر های خروجی (درصورت موفق بودن درخواست)

عنواننوع دادهشرح
statusintجدول وضعيت
messagestringپيام سيستم
dataInvoiceDataجدول نوع داده InvoiceData

جدول نوع داده InvoiceData

عنواننوع دادهشرح
last_recordstringپارامتر مورد استفاده برای دریافت صفحه بعدی رکورد ها(بانک صادرات)
transactionsTransaction آرایه ای از نوع دادهجدول نوع داده Transactions

جدول نوع داده Transaction

عنواننوع دادهشرح
transaction_date_timejalalidatetimeتاریخ شمسی تراکنش
debit_amountintمبلغ برداشت شده
credit_amountintمبلغ واریز شده
descriptionstringکد شرح بانکی تراکنش
balanceintمانده پس از تراکنش
transaction_tracestringکد رهگیری
branch_codestringشعبه انجام تراکنش
transaction_identitystringuuid تراکنش انتقال مربوطه
statement_statusstringوضعیت تراکنش
source_accountstringحساب مبدا
destination_accountstringحساب مقصد
document_idstringشناسه سند انتقال مربوطه
customer_descriptionstringشرح تراکنش
operation_codestringکد تراکنش
نمونه کد (php) :
<?php
$api_key = 'your_api_key';
$application_id = 'your_application_id';
$access_password = 'your_access_password';
$account_number = 'your_deposit_account';
$url = 'https://core.paystar.ir/api/open-banking/service/invoice';
$body_params = [
'application_id' => $application_id,
'access_password' => $access_password,
'account_number' => $account_number,
'from_date' => '2024-12-24',
'to_date' => '2024-12-25'
];
$query_params = http_build_query(array_filter($body_params));
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url . "?" . $query_params,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPGET => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Bearer ' . $api_key
],
]
);
$response = curl_exec($curl);
curl_close($curl);
print_r(json_decode($response, true, JSON_PRETTY_PRINT));
?>
نمونه کد (C# .net) :
using RestSharp;
using Newtonsoft.Json;
var options = new RestClientOptions("https://core.paystar.ir");
var client = new RestClient(options);
string api_key = "your-api-key";
string application_id = "your_application_id";
string access_password = "your_access_password";
string account_number = "your_deposit_account";
string from_date = "2024-12-22";
string to_date = "2024-12-23";
var requestBody = new {
application_id = application_id,
access_password = access_password,
account_number = account_number,
from_date = from_date,
to_date = to_date
};
var queryParams = string.Join("&", requestBody.GetType().GetProperties()
.Where(p => p.GetValue(requestBody) != null)
.Select(p => $"{p.Name}={p.GetValue(requestBody)}"));
var request = new RestRequest($"/api/open-banking/service/invoice?{queryParams}", Method.Get);
request.AddHeader("Accept", "application/json");
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer " + api_key);
RestResponse response = client.Execute(request);
var res = response.Content;
Console.WriteLine(res);
نمونه کد (Python) :
import json
import requests
url = "https://core.paystar.ir/api/open-banking/service/invoice"
api_key = 'your-api-key'
header = {
"Accept": "application/json",
"Authorization": "Bearer " + api_key,
"Content-Type": "application/json",
}
params = {
'application_id': 'your_application_id',
'access_password': 'your_access_password',
'account_number': 'your_deposit_account',
'from_date': '2024-11-22',
'from_date': '2024-11-23',
}
response = requests.get(url, headers=header, params={k: v for k, v in params.items() if v is not None})
output = json.dumps(response.json(), indent=4, ensure_ascii=False)
print(output)