Skip to main content

کیف‌پول پی‌استار ( تسویه )

وبسرویس های برداشت کیف#

برای فراخوانی وبسرویس های کیف پول ابتدا api key مربوط به کیف پول را از پنل کاربری و قسمت ویرایش کیف پول کپی کنید و آن را در header درخواستها و در قسمت Authorization ، به صورت

  • Bearer <TOKEN>

ارسال کنید. لازم به ذکر میباشد، api key به مدت 24 ساعت معتبر میباشد و برای ایجاد api key جدید باید با فراخوانی وبسرویس refresh api key و با ارسال
refresh‌ t‌oken اقدام کنید.

وبسرویس refresh api key

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

برای دریافت api key جدید، سرویس بالا با متد POST فراخوانی شود. لازم به ذکر است که باید api key قبلی در این وبسرویس هم مشابه سایر وبسرویسها در Header ارسال شود.

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

نام فیلدنوع دادهشرحاجباری
wallet_hashidstringشناسه کیف پولبله
passwordstringرمز دسترسی کیف پولبله
refresh_tokenstringتوکن بازیابی api keyبله
signstringامضابله

لازم به ذکر است با استفاده از sign key که برای شما ایمیل شده است و متد HMAC و الگوریتم SHA512 مقدار عبارت زیر را امضا کرده و در وبسرویسها ارسال کنید:

WALLET_HASHID#PASSWORD
نمونه کد (php) :
$refresh_token = 'your_refresh_token';
$wallet_hashid = 'your_wallet_hash_id';
$password = 'your_wallet_password';
$sign_key = 'your_sign_key';
$sign_data = $wallet_hashid. '#'. $password;
$sign = hash_hmac('SHA512', $sign_data, $sign_key);
$url = 'https://core.paystar.ir/api/wallet/refresh-api-key';
$body_params = [
'wallet_hashid' => $wallet_hashid,
'password' => $password,
'refresh_token' => $refresh_token,
'sign' => $sign
];
$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);
پاسخ ها

پاسخ موفق به شکل زیر است:

{
"status": 1,
"message": "کلید دسترسی جدید ایجاد شد و به مدت 24 ساعت معتبر است",
"data": {
"api_key": "FxbBhUpZWyjyjyhanM04pxxxxxniqxYBeMPnnkAZAm6hHbLsTbuaRTxxxxx0iFhB2G9rstGR2tIkDKpYtjrUrwAwFVHVSuBk",
"api_key_expire_date": "2024-01-31 11:22:39"
}
}

پاسخ ناموفق به شکل زیر است:

{
"status": -1,
"message": "امضا نامعتبر است",
"data": []
}
{
"status": -1,
"message": "دسترسی نامعتبر",
"data": []
}
{
"status": -7,
"message": "شناسه کیف معتبر نمی باشد",
"data": []
}
{
"status": "error",
"action": "WalletRefreshApiKey",
"tag": "badRequest",
"message": "درخواست نامعتبر است.",
"data": {
"wallet_hashid": [
"فیلد wallet hashid الزامی است."
],
"refresh_token": [
"فیلد refresh token الزامی است."
],
"password": [
"فیلد رمز عبور الزامی است."
],
"sign": [
"فیلد sign الزامی است."
]
},
"api_version": "1.0.0"
}

وبسرویس ایجاد درخواست برداشت#

به منظور ايجاد درخواست برداشت، بايد سرويس زير با متد POST فراخوانی شود:

  • https://core.paystar.ir/api/wallet/create-settlement

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

نام فیلدنوع دادهشرحاجباری
wallet_hashidstringشناسه کیف پولبله
withdraw_typeintegerعدد ثابت 7 ارسال شودبله
transfersarrayآرایه ای از آبجکت ها به شرح جدول زیربله
passwordstringرمز دسترسی کیف پولبله
signstringامضابله

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

عنواننوع دادهشرح
amountintegerمبلغ تراکنش
destination_numberstringشماره حساب مقصد که میتوانید شماره حساب بانکی یا شماره شبا (26 کاراکتر) باشد (اگر حساب شما در بانک شامل کاراکتر اضافه مانند خط تیره میباشد با همان فرمت در پارامتر استفاده کنید)
destination_firstnamestringنام صاحب حساب مقصد (حداقل 2 و حداکثر 30 کاراکتر)
destination_lastnamestringنام خانوادگی صاحب حساب مقصد (حداقل 2 و حداکثر 30 کاراکتر )
track_idstringاین فیلد اختیاری و حداکثر 50 کاراکتر است. میتوانید با track id یکتا، از ایجاد دوباره یک تراکنش جلوگیری کنید. در صورت ورود track id تکراری خطا دریافت میکنید. فقط برای تراکنش های زیر یکصد میلیون تومان میتوانید track id ارسال کنید
payment_idintegerشناسه واریز حساب مقصد (این فیلد اختیاری بوده و فقط مخصوص واریز به حساب های شناسه دار می باشد)

حتی اگر یک درخواست برداشت هم ارسال میکنید باید مطابق مستندات به صورت آرایه یک عضوی ارسال شود، در غیر این صورت خطا دریافت میکنید. لازم به ذکر در صورتی که برداشت آنی برای کیف شما فعال شده باشد، میتوانید با ارسال عدد 8 برای فیلد withdraw_type درخواست برداشت آنی ارسال کنید. در صورت ایجاد برداشت آنی، امکان لغو درخواست برداشت وجود ندارد. برای درخواستهای برداشت محدودیت فاصله زمانی تعریف شده است، لذا درخواستهای برداشت را به صورت گروهی در یک request ارسال کنید.

نمونه کد (php) :
$bearer = 'your_bearer_token'; // your api key
$withdraw_type = 7;
$wallet_hashid = 'your_wallet_hash_id';
$password = 'your_wallet_password';
$sign_key = 'your_sign_key';
$sign_data = $wallet_hashid. '#'. $password;
$sign = hash_hmac('SHA512', $sign_data, $sign_key);
$transfers = [
[
'amount' => 1000000,
'destination_number' => 'destination_account_number',
'destination_firstname' => 'destination_account_first_name',
'destination_lastname' => 'destination_account_last_name',
'track_id' => 'your_unique_track_id',
'payment_id' => 'your_payment_id'
],
[
'amount' => 2000000,
'destination_number' => 'destination_account_number',
'destination_firstname' => 'destination_account_first_name',
'destination_lastname' => 'destination_account_last_name',
'track_id' => 'your_unique_track_id',
'payment_id' => 'your_payment_id'
]
];
$url = 'https://core.paystar.ir/api/wallet/create-settlement';
$body_params = [
'wallet_hashid' => $wallet_hashid,
'transfers' => $transfers,
'password' => $password,
'withdraw_type' => $withdraw_type,
'sign' => $sign,
];
$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 => [
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Bearer '. $bearer
],
]
);
$response = curl_exec($curl);
curl_close($curl);
پاسخ ها

پاسخ موفق به شکل زیر است:

{
"status": 1,
"message": "درخواست برداشت ایجاد شد",
"data": {
"created_settlements": [
{
"id": "e0vq0yy",
"data": {
"amount": 11000,
"destination_number": "IR960160000110000864077734",
"destination_firstname": "امیر",
"destination_lastname": "عقیقی",
"track_id": null,
"payment_id": "",
"collection_id": null,
"transfer_type": 2
},
"amount_with_wage": 16000
}
]
}
}

پاسخ ناموفق به شکل زیر است:

{
"status": "error",
"action": "WalletCreateSettlement",
"tag": "badRequest",
"message": "درخواست نامعتبر است.",
"data": {
"transfers.0.destination_number": [
"شماره شبا معتبر نمی باشد"
],
"transfers.1.destination_number": [
"شماره شبا معتبر نمی باشد"
],
"transfers.0.track_id": [
"شناسه پیگیری تکراری وارد شده است"
],
"transfers.1.track_id": [
"شناسه پیگیری تکراری وارد شده است"
]
},
"api_version": "1.0.0"
}
{
"status": -7,
"message": "دسترسی به کیف، موقتا قفل شده است. این خطا هنگامی رخ میدهد که چند درخواست برداشت یا انتقال هم زمان ارسال شود.",
"data": null
}
{
"status": -1,
"message": "دسترسی نامعتبر",
"data": []
}

وبسرویس لغو درخواست برداشت#

برای لغو درخواست برداشتی که در وضعیت pending (در انتظار) قرار دارد ، باید سرویس زیر را با متد POST فراخوانی کنید:

  • https://core.paystar.ir/api/wallet/cancel-settlement

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

نام فیلدنوع دادهشرحاجباری
settlement_request_idstringشناسه درخواست برداشتبله
wallet_hashidstringشناسه کیف پولبله
passwordstringرمز دسترسی کیف پولبله
signstringامضابله
نمونه کد (php) :
$bearer = 'your_bearer_token'; // your api key
$settlement_request_id = 'your_settlement_request_id';
$wallet_hashid = 'your_wallet_hash_id';
$password = 'your_wallet_password';
$sign_key = 'your_sign_key';
$sign_data = $wallet_hashid. '#'. $password;
$sign = hash_hmac('SHA512', $sign_data, $sign_key);
$url = 'https://core.paystar.ir/api/wallet/cancel-settlement';
$body_params = [
'wallet_hashid' => $wallet_hashid,
'password' => $password,
'settlement_request_id' => $settlement_request_id,
'sign' => $sign,
];
$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 => [
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Bearer '. $bearer
],
]
);
$response = curl_exec($curl);
curl_close($curl);
پاسخ ها

پاسخ موفق به شکل زیر است:

{
"status": 1,
"message": "برداشت لغو شد",
"data": []
}

پاسخ ناموفق به شکل زیر است:

{
"status": -7,
"message": "شناسه تسویه معتبر نمی باشد",
"data": []
}

وبسرویس دریافت لیست درخواستهای برداشت#

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

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

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

نام فیلدنوع دادهشرحاجباری
wallet_hashidstringشناسه کیف پولبله
settlement_request_idstringشناسه درخواست برداشتخیر
track_idstringکد رهگیریخیر
limitintegerتعداد رکوردهای responseدر صورت وارد کردن skip
skipintegerتعداد رکورد هایی که skip شونددر صورت وارد کردن limit
نمونه کد(php):
$bearer = 'your_bearer_token'; // your api key
$settlement_request_id = 'your_settlement_request_id';
$wallet_hashid = 'your_wallet_hash_id';
$url = 'https://core.paystar.ir/api/wallet/settlement-requests';
$body_params = [
'wallet_hashid' => $wallet_hashid,
'settlement_request_id' => $settlement_request_id,
];
$query_params = http_build_query($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 '. $bearer
],
]
);
$response = curl_exec($curl);
curl_close($curl);
پاسخ ها

پاسخ موفق به شکل زیر است:

{
"status": 1,
"message": "اطلاعات با موفقیت دریافت شد",
"data": [
{
"id": "0e49eqx",
"status": "pending",
"amount": 205000,
"wallet": {
"title": "09354508820"
},
"withdraw_type": 7,
"details": {
"amount": 200000,
"destination_number": "IR96226075000000864035867",
"destination_firstname": "علی",
"destination_lastname": "نیکدل",
"track_id": null,
"payment_id": "",
"collection_id": null,
"transfer_type": 2
},
"track_id": null,
"ref_code": "",
"charge_rev_id": "",
"created_at": "1402-11-10 14:34:33"
}
]

فیلد ref_code کد رهگیری بانک می باشد فیلد charge_rev_id در صورت خالی نبودن، شناسه رکورد شارژ اصلاحی می باشد که برای برداشت هایی که برگشت خورده اند، لحاظ می گردد.

پاسخ ناموفق به شکل زیر است:

{
"status": -99,
"message": "رکوردی با اطلاعات مذوکر پیدا نشد",
"data": null
}

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

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

  • https://core.paystar.ir/api/wallet/wallets-balance

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

نام فیلدنوع دادهشرحاجباری
wallet_hashidstringشناسه کیف پولبله

با فراخوانی وبسرویس بالا موجودی کل کیف پول، موجودی قابل برداشت، موجودی در حال شارژ و موجودی در حال برداشت برگردانده میشود. مبلغ موجودی قابل برداشت بدون احتساب کارمزد برداشت ارائه شده است لذا تمام این مبلغ قابل برداشت نخواهد بود.

نمونه کد (php) :
$bearer = 'your_bearer_token'; // your api key
$wallet_hashid = 'your_wallet_hash_id';
$url = 'https://core.paystar.ir/api/wallet/wallets-balance';
$body_params = [
'wallet_hashid' => $wallet_hashid,
];
$query_params = http_build_query($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 '. $bearer
],
]
);
$response = curl_exec($curl);
curl_close($curl);
پاسخ هاپاسخ موفق به شکل زیر است:
{
"status": 1,
"message": "اطلاعات با موفقیت دریافت شد",
"data": {
"id": "AJE4S8O",
"wallet_title": "09994501222",
"logo": null,
"total_amount": "8,238,222",
"available_amount": "9,738,222",
"charge_pending_amount": "-1,500,000",
"blocked_amount": 0,
"status": 1,
"instant_settlement_status": 0,
"should_two_factor_settlement": false
}
}

پاسخ ناموفق به شکل زیر است:

{
"status": "error",
"action": "WalletWalletsBalance",
"tag": "badRequest",
"message": "درخواست نامعتبر است.",
"data": {
"wallet_hashid": [
"فیلد wallet hashid الزامی است."
]
},
"api_version": "1.0.0"
}

وبسرویس دریافت بانک های فعال#

  • https://core.paystar.ir/api/wallet/get-bank-status

برای دریافت لیست بانک ها، سرویس بالا با متد GET فراخوانی شود.

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

نام فیلدنوع دادهشرحاجباری
wallet_hashidstringشناسه کیف پولبله

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

پارامتر های خروجی

عنواننوع دادهشرح
bank namestringوضعیت بانک (active و inactive )
نمونه کد (php) :
$bearer = 'your_bearer_token'; // your api key
$wallet_hashid = 'your_wallet_hashid';
$url = 'https://core.paystar.ir/api/wallet/get-bank-status';
$body_params = [
'wallet_hashid' => $wallet_hashid,
];
$query_params = http_build_query($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 '. $bearer
],
]
);
$response = curl_exec($curl);
curl_close($curl);
پاسخ ها

پاسخ موفق به شکل زیر است:

{
"status": "ok",
"action": "WalletGetBankStatus",
"tag": "getBankStatus",
"message": "اطلاعات وضعیت بانک هایافت شد.",
"data": {
"ayande": "active",
"saderat": "inactive",
"keshavarzi": "active",
"saman": "active",
"pasargad": "active",
"parsian": "active"
},
"api_version": "1.0.0"
}

پاسخ ناموفق به شکل زیر است:

{
"status": -1,
"action": "WalletGetBankStatus",
"tag": null,
"message": "دسترسی نامعتبر",
"data": [],
"api_version": "1.0.0"
}