تایید پرداخت
تایید پرداخت¶
بعد مشخص شدن وضعیت پرداخت، کاربر به آدرس callback_url مشخص شده در سرویس ایجاد پرداخت منتقل می شود، در این مرحله لازم است با استفاده از سرویس تایید پرداخت وضعیت پرداخت بررسی شود.
ارسال درخواست به API:¶
هدرهای درخواست¶
نمونه کد درخواست¶
<?php
// 1. Example using curl:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://app.sama.ir/api/pg/v2/payment/verify.json/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"amount": "12000000","merchant_id": "GXyXvV72.woCX6cvclOvIvFB0KkR5OUbLMadMlIqg","authority": "94b56de0-164d-4e8d-bfe9-21ec59247bcd"
}');
$response = curl_exec($ch);
curl_close($ch);
// 2. Example using Guzzle:
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->post('https://app.sama.ir/api/pg/v2/payment/verify.json/', [
'headers' => [
'Content-Type' => 'application/json'
],
'json' => [
'amount' => '12000000',
'merchant_id' => 'GXyXvV72.woCX6cvclOvIvFB0KkR5OUbLMadMlIqg',
'authority' => '94b56de0-164d-4e8d-bfe9-21ec59247bcd'
]
]);
بدنه درخواست¶
Field | Type | Description |
---|---|---|
amount | integer | مبلغ کل پرداخت |
merchant_id | string | توکن احراز هویت فروشگاه (API Key) |
authority | uuid4 | شناسه منحصر به فرد معامله |
پاسخ دریافتی از API:¶
بدنه پاسخ¶
{
"data": {
"code": 101,
"message": "Verified",
"card_hash": "1EBE3EBEBE35C7EC0F8D6EE4F2F859107A87822CA179BC9528767EA7B5489B69",
"card_pan": "502229******5995",
"ref_id": "1361082284",
"fee_type": "buyer",
"fee": 150000
},
"errors": []
}
Field | Type | Description |
---|---|---|
data | dataObject | اطلاعات پاسخ (در صورت بروز خطا، خالی برمیگردد) |
errors | errorsObject | خطاها (در صورت عدم بروز خطا، خالی برمیگردد) |
dataObject:
Field | Type | Description |
---|---|---|
code | integer | کد وضعیت پرداخت |
message | string | پیغام وضعیت پرداخت |
card_hash | string | شماره کارت هش شده |
card_pan | string | شماره کارت |
ref_id | string | کد رهگیری |
fee_type | string | شخص پرداخت کننده کارمزد (merchant -buyer -both -none ) |
fee | integer | مبلغ کارمزد |
نکته: درصورت موفقیت آمیز بودن تراکنش، فقط برای بار اول کد 100 رخ میدهد و در دفعات بعدی verify همان تراکنش، کد 101 اتفاق میافتد. در نتیجه کد 101 به معنای آن است که تراکنش موفق بوده و قبلا عملیات تایید پرداخت بر روی آن انجام شده است.
errorsObject:
در صورت پاسخ دهی صحیح و عدم بروز خطا (status code 201)، این فیلد خالی برمیگردد در غیر اینصورت شامل اطلاعات زیر خواهد بود:
Field | Type | Description |
---|---|---|
code | string | کد خطا |
message | string | پیغام خطا |
validations | validationsObject | فیلدی که باعث بروز خطا شده است |
خطاها¶
خطای احراز توکن فروشگاه (مربوط به فیلد merchant_id):
{
"data": [],
"errors": {
"code": "not_authenticated",
"message": "اطلاعات برای اعتبارسنجی ارسال نشده است.",
"validations": []
}
}
اگر پرداخت انجام نشده باشد یا ناموفق باشد خطای 400 زیر برگشت داده میشود.
{
"data": [],
"errors": {
"code": "40131",
"message": "پرداخت انجام نشده است",
"validations": []
}
}
اگر فیلد authority معتبر نباشد
{
"data": [],
"errors": {
"code": "-9",
"message": "The input params invalid, validation error.",
"validations": [
{
"authority": "Must be a valid UUID."
}
]
}
}
اگر فیلد مبلغ (amount) بیش از سقف مجاز باشد:
{
"data": [],
"errors": {
"code": "-9",
"message": "The input params invalid, validation error.",
"validations": [
{
"amount": "مطمئن شوید این مقدار کوچکتر و یا مساوی 50000000 است."
}
]
}
}
اگر فیلد مبلغ (amount) کمتر از کف مجاز باشد: