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)