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شناسه واریز (در صورتی که حساب مقصد شناسه دار باشد وارد کردن این فیلد الزامی می باشد)
reasonintegerبابت (در صورت ارسال نشدن، به صورت پیشفرض نوع پرداخت قرض و تادیه دیون در نظر گرفته می شود) جدول نوع ReasonType

جدول نوع ReasonType

مقدارشرح
1واریز حقوق
2امور بیمه خدمات
3امور درمانی
4امور سرمایه گذاری و بورس
5امور ارزی در چارچوب ضوابط و مقررات
6پرداخت قرض و تادیه دیون (قرض الحسنه، بدهی)
7امور بازنشستگی
8معاملات اموال منقول
9معاملات اموال غیر منقول
10مدیریت نقدینگی
11عوارض گمرکی
12تسویه مالیاتی
13سایر خدمات دولتی
14تسهیلات و تعهدات
15تودیع وثیقه
16هزینه عمومی و امور روزمره
17کمکهای خیریه
18خرید کالا
19خرید خدمات
نمونه کد (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/v2/invoice

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

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

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

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

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

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

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

عنواننوع دادهشرح
transaction_date_timejalalidatetimeتاریخ شمسی تراکنش
amountintمبلغ
descriptionstringکد شرح بانکی تراکنش
balanceintمانده پس از تراکنش
transaction_tracestringکد رهگیری
branch_codestringشعبه انجام تراکنش
transaction_identitystringuuid تراکنش انتقال مربوطه
statement_statusstringوضعیت تراکنش
source_accountstringحساب مبدا
destination_accountstringحساب مقصد
document_idstringشناسه سند انتقال مربوطه
customer_descriptionstringشرح تراکنش
operation_codestringکد تراکنش
payment_idstringشناسه واریز
transaction_typestringنوع تراکنش (جدول نوع TransactionType)
transfer_typeintروش انتقال (جدول نوع TransferType)

جدول نوع TransactionType

مقدارشرح
CREDITواریز
DEBITبرداشت

جدول نوع TransferType

مقدارشرح
1پایا
2ساتنا
3حساب به حساب
4کارت به کارت
5پل
6انتقالی(نامشخص)
7خرید
8کارمزد بانک
9اصلاحی
10خودپرداز
11دستگاه پوز
12نقدی
13تسویه شاپرکی
14قبض
نمونه کد (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)