به کمک این سرویس، مبلغ هر تراکنش دقیقا در همان لحظهی پرداخت خریدار، به صورت خودکار و بر اساس نسبتهایی که در زمان تراکنش به زرینپال ارائه نمودهاید تقسیم شده و بعد از انجام تراکنش در اولین دورهای که برای تسویهحساب در پنل خود انتخاب کردهاید، به حساب شرکای تجاری واریز میشود. برای استفاده از این روش باید مشخصات درخواست به همراه تسویه حسابهای مدنظر خود را را با فراخوانی متد Request به زرینپال اعلام کنید.
{
"wages": [
{
"iban": "IR123456789123456478945165",
"amount": "1000",
"description": "تسهیم سود فروش از محصول به علیرضا"
}
]
}
پارامترهای ورودی متد Request
به شرح زیر است و سپس به آن پارامترهای تقسیم نیز اضافه میشود.
نام | نوع | الزام | توضیحات |
---|---|---|---|
merchant_id | String | بله | كد ۳۶ كاراكتری اختصاصی پذیرنده |
amount | Integer | بله | مبلغ تراكنش به (ریال) |
description | String | بله | توضیحات مربوط به تراکنش |
wages | Array | ححسابهای بانکی مورد نظر جهت تسهیم | |
callback_url | String | بله | صفحه بازگشت پذیرنده پس از انجام عمل پرداخت |
metadata | Array | دارای مقدار های mobile و email و order_id | |
mobile | String | خیر | شماره تماس خریدار |
String | خیر | ایمیل خریدار |
همچنین بایدعلاوه بر پارامتر های ارسالی در متد Request , پارامتر wages را نیز بر اساس توضیحات زیر ارسال نماید و هر تقسیم باید در یک آرایه جدا قرار بگیرد.
به نوع داده ها و نام فیلد توجه کنید
نام | نوع | الزام | توضیحات |
---|---|---|---|
iban | String | بله | شماره شبا ۲۶ کارکتری که با IR شروع میشود. |
amount | Integer | بله | مبلغ تقسیم شده تراکنش به (ریال) |
description | String | بله | توضیحات مربوط به تقسیم |
در صورتی که در مرحله ارسال دیتا، اطلاعات ارسالی صحیح باشه و دو مقدار code و authority رو دریافت کرده باشید باید کاربر رو به درگاه پرداخت انتقال دهید. برای اینکار باید مقدار authority که در مرحله اول دریافت کردید رو در اخر ادرس قرار بدید و کاربر رو به URL ایجاد شده ریدایرکت کنید تا بلافاصله کاربر به درگاه پرداخت هدایت بشه و سپس مرحله سوم رو انجام بدید.
نمونه کد زیر بدين معناست كه در صورت موفقيت آميز بودن تراكنش مبلغ 1000 ریال از تراكنش اصلي به شماره شبا IR123456789123456478945165 با توضيح مشخص و مبلغ 5000 ریال از تراكنش به شبا IR567891234564789451651234 با توضيح مربوطه ثبت خواهد شد.
سقف تعداد قابل تقسیم ۵ و نوع تقسيم تا ۹۹٪ مبلغ تراکنش تعيين گردیده است.
نمونه کد یک درخواست با تسویه اشتراکی به دو شخص
curl -X POST \
https://payment.zarinpal.com/pg/v4/payment/request.json \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-d '{
"merchant_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"amount": 20000,
"callback_url": "http://yoursite.com/verify",
"description": "Transaction description.",
"metadata": {
"mobile": "091212334567",
"email": "info.test@gmail.com"
},
"wages": [
{
"iban": "IR123456789123456478945165",
"amount": 1000,
"description": "تسهیم سود فروش از محصول به مسعود"
},
{
"iban": "IR567891234564789451651234",
"amount": 5000,
"description": "تسهیم سود فروش از محصول به علی"
}
]
}'
Location: https://payment.zarinpal.com/pg/StartPay/ . $result['data']["authority"]
پس از پرداخت موفق - بازگشت به صفحه مشخص شده از سمت پذیرنده در callback_url انجام می شود که باید مانند مرحله بازگشت به سایت پذیرنده طی شود که اینجا نیز مجددا توضیح داده میشود
بعد از پايان عمليات درسمت زرين پال، زرين پال وظيفه دارد كاربر را به سايت پذيرنده كه از طريق callback_url مشخص شده است بازگرداند.
این مرحله زمانی انجام میشه که کاربر از درگاه پرداخت بر میگرده. در این مرحله با توجه به نتیجه تراکنش و وضعیت اون ، ما کاربر رو به آدرس کالبک شما که در ارسال اطلاعات با پارامتر callback_url
ارسال کرده بودید هدایت میکنیم.
نكته: توجه داشته باشيد كه يك Status
به صورت QueryString
به سايت پذيرنده ارسال ميگردد كه دو مقدار ثابت دارد ”OK“ و”NOK“ ؛ در صورتي كه اين مقدار برابر ”NOK“ بود به اين معنا بوده كه تراكنش نا موفق بوده و يا توسط كاربر لغو شده است؛ پس در صورتي verify استفاده شود كه با QueryString
مقدار Status برابر با ”OK“ باشد.
پارامتر
نام | نوع | توضیحات |
---|---|---|
merchant_id | String | كد 36 كاراكتري اختصاصي پذيرنده |
amount | Integer | مبلغ تراكنش به (ریال) |
authority | String | كد يكتاي شناسه مرجع درخواست. |
در صفحه بازگشت می بایست با متد verify اطلاعات ارسالی را چک نمایید و در صورت موفق بودن پرداخت را ثبت و شماره تراکنش را به کاربر نمایش دهید
در غير اينصورت پذيرنده موظف اسـت كـه بـا توجه به كد خطايي كه توسط متد verify دريافت ميكند كاربر را از خطاي رخ داده مطلع سازد.
در این مرحله اگر مقدار پارامتر code برابر 100 بود به معنای موفق بودن تراکنش است و با پارامتر ref_id شماره تراکنش را به کاربر نمایش میدهید
مقاديري كه توسط متد verify برگشت داده ميشود در تسویه اشتراکی به شرح زير ميباشد.
نام | نوع | توضیحات |
---|---|---|
code | Integer | عددي كه نشان دهنده موفق بودن يا عدم موفق بودن پرداخت ميباشد. |
ref_id | Integer | در صورتي كه پرداخت موفق باشد؛ شماره تراكنش پرداخت انجام شده را بر ميگرداند. |
wages | Array | مقادیری که در ارسال درخواست اشتراکی به سمت زرینپال فرستاده شدند جهت دیده شدن توسط شما برگردانده می شوند |
card_pan | String | شماره کارت به صورت Mask |
card_hash | String | هش کارت به صورت SHA256 |
fee_type | String | پرداخت کننده کارمزد که در پنل قابل انتخاب است کاربر و یا خود پذیرنده |
fee | Integer | کارمزد |
https://payment.zarinpal.com/pg/v4/payment/verify.json
http://www.yoursite.ir/?Authority=A0000000000000000000000000000wwOGXpd&Status=OK
نمونه کد وریفای
curl -X POST \
https://payment.zarinpal.com/pg/v4/payment/verify.json \
-H 'accept: application/json' \
-H 'content-type: application/json' \
-d '{
"merchant_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"amount": 20000,
"authority": "A0000000000000000000000000000wwOGXpd"
}'