کد نمونه شامل ٢ فايل می باشد که به سادگی قابل استفاده می باشند. توصيه می شود جهت استفاده از webservice ابتدا راهنمای استفاده از وب سرويس زرين پال را مطالعه نماييد.
نمونه ی کد ایجاد شناسه ی پرداخت و ارجاع کاربر به درگاه پرداخت زرین پال :
<?php
$data = array("merchant_id" => "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"amount" => 1000,
"callback_url" => "http://www.yoursite.com/verify.php",
"description" => "خرید تست",
"metadata" => [ "email" => "info@email.com","mobile"=>"09121234567"],
);
$jsonData = json_encode($data);
$ch = curl_init('https://api.zarinpal.com/pg/v4/payment/request.json');
curl_setopt($ch, CURLOPT_USERAGENT, 'ZarinPal Rest Api v1');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($jsonData)
));
$result = curl_exec($ch);
$err = curl_error($ch);
$result = json_decode($result, true, JSON_PRETTY_PRINT);
curl_close($ch);
if ($err) {
echo "cURL Error #:" . $err;
} else {
if (empty($result['errors'])) {
if ($result['data']['code'] == 100) {
header('Location: https://www.zarinpal.com/pg/StartPay/' . $result['data']["authority"]);
}
} else {
echo'Error Code: ' . $result['errors']['code'];
echo'message: ' . $result['errors']['message'];
}
}
?>
نمونه کد تصدیق اصالت پس از پرداخت :
<?php
$Authority = $_GET['Authority'];
$data = array("merchant_id" => "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "authority" => $Authority, "amount" => 1000);
$jsonData = json_encode($data);
$ch = curl_init('https://api.zarinpal.com/pg/v4/payment/verify.json');
curl_setopt($ch, CURLOPT_USERAGENT, 'ZarinPal Rest Api v4');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($jsonData)
));
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result, true);
if ($err) {
echo "cURL Error #:" . $err;
} else {
if ($result['data']['code'] == 100) {
echo 'Transation success. RefID:' . $result['data']['ref_id'];
} else {
echo'code: ' . $result['errors']['code'];
echo'message: ' . $result['errors']['message'];
}
}
?>
کد مربوط به request دو تا ایراد داره. نام پارامتر ارسالی به توابع curl_error و curl_close باید از curl$ به ch$ تغییر کنه.
بله این موارد اصلاح شده اند.
سلام .میشه کاری کرد که از سسمت بانک موارد ارسالی به صورت post برگردند
سلام
خیر
از nusoap میشه استفاده کرد؟
بله در آزمایشگاه نمونه کد موجود است.
سلام سرویس sandbox برای rest api موجود نیست ؟
ُسلام
برای Rest هم به همین ترتیب میتونید استفاده کنید. لینک ها به شکل زیر خواهند بود»
https://sandbox.zarinpal.com/pg/rest/WebGate/PaymentRequest.json
https://sandbox.zarinpal.com/pg/StartPay/
https://sandbox.zarinpal.com/pg/rest/WebGate/PaymentVerification.json
با سلام زمانی که پرداخت رو انجام میدم پیغام پرداخت با موفقیت انجام شد رو نمایش میده اما مقدار زیر رو برمیگردونه
Transation failed. Status:-33
مشکل از کجا هست ؟
سلام
رقم تراکنش با رقم پرداخت شده مطابقت ندارد. مستندات فنی را مطالعه کنید.
سلام ببخشید من الان در فایل اول با $_GET قیمت رو از کاربر دریافت میکنم
در فایل دوم که وریفای یا Verify.php هست چطور بهش متغیر رو بدم ؟
خیلی ممنون !
سلام
میتوانید در ابتدای پرداخت، مبلغ را به صورت کوئری استرینگ به لینک callback اضافه کنید. البته این روش صحیح نیست و باید مبلغ را در برگشت از پرداخت، از دیتابیس خود دریافت کنید و تراکنش را وریفای کنید.
سلام
آدرس زرین گیت برای rest چیه؟
سلام
کافیست در انتهای لینک پرداخت، بعد از اتوریتی عبارت ZarinGate را اضافه کنید. (/ZarinGate)
زمانی که تابع payment را فراخوانی میکنم ، Authority , status به عنوان resualt برگردانده میشوند اما
Location:https://www.zarinpal.com/pg/StartPay/‘.$result[“Authority”] این ادرس لود نمیشود و پیغام زیر ظاهر میشود .
Failed to load https://www.zarinpal.com/pg/StartPay/000000000000000000000000000077601382: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://mysite.com’ is therefore not allowed access.
لطفا برای رفع مشکل راهنمایی کنید.
سلام
صدا کردن متدهای پرداخت زرین پال می بایست از داخل سرور باشد و نمیتوانید در سمت کلاینت با جاوا اسکریپت یا روشهای دیگر، متدهای پرداخت را فراخوانی کنید؛ چون این محدودیت از سمت زرین پال برای وبسرویسها درنظر گرفته شده است و باید از زبانهای تحت سرور نظیر net ، php و یا nodejs استفاده نمایید. برای مثال میتوانید در سمت سرور با php، متد PaymentRequest را اجرا کرده و اتوریتی را دریافت کنید و سپس به صورت Ajax به صفحه کلاینت ارسال کنید و جهت ریدایرکت یا انتقال کاربر به لینک پرداخت از آن استفاده کنید.
سلام و خسته نباشید.
api token تست برای برنامه نویسان کجا نوشته شده و اگر ممکنه بگید چه چیزی هست؟
سلام تشکر
جهت تست میتوانید از سندباکس استفاده کنید.
برای کددرگاه هم میتوانید 00 قرار دهید.