نمونه کد PHP
بخش دانلود
<?php
//ابتدا متغیر های لازم جهت ارسال درخواست به بانک که از پنل پکپی دریافت کرده اید را مقدار دهی کنید
$client_id="";
$secret_id="";
$refresh_token="";
//سپس درخواست توکن را ارسال کنید
$token = refresh_token($refresh_token,$secret_id,$client_id);
if (!$token){
//خطا در دریافت توکن رخ داده دوباره تلاش کنید یا پارامتر های ورودی را بررسی کنید
echo "خطا در دریافت توکن";
return; //your error
}
/*
* ارسال به بانک
*/
$data = [
'access_token' => $token,
'amount' => 50000, //مبلغ به ریال
'callback_url' => 'https://test.com/verify/', //آدرس بازگشت به سایت شما بعد از اتمام عملیات پرداخت
'payer_id' => '09101111111',//فیلد اختیاری شماره تلفن پرداخت کننده
'payer_name' => 'محمد محمدی',//فیلد اختیاری نام پرداخت کننده
'verify_on_request' => true
];
$send_to_bank_result = send_to_bank($data,$secret_id,$client_id);
if ($send_to_bank_result['status']=="0"){
$reference_code = $send_to_bank_result['reference_code'];
//کاربر را به آدرس زیر هدایت کنید
//redirect user to this url
echo $redirect_url ="https://dashboard.packpay.ir/bank/purchase/send/?RefId=${reference_code}";
}else{
//خطا رخ داده و این خطا را به صلاح دید خود هندل کنید
echo $send_to_bank_result['message'];
return;
}
/*
* تایید بانک
*/
//دریافت توکن
$token = refresh_token($refresh_token,$secret_id,$client_id);
$reference_code = $_GET['reference_code']; //کد رفرنس دریافتی از طریق درخواست get
$data = [
'access_token' => $token,
'reference_code' => $reference_code,
];
$verify_result = verify($data,$secret_id,$client_id);
if ($verify_result['status']=="0"){
echo $verify_result['message'];
//در اینجا عملیات پردات موفقیت آمیز بوده و میتوانید پردازش مربوطه را انجام دهید
}else{
//خطا رخ داده و این خطا را به صلاح دید خود هندل کنید
//یکی از اتفاقات رایج انصراف کاربر از بانک است
echo $verify_result['message'];
return;
}
function request($method, $secret_id,$client_id)
{
try {
$ch = curl_init("https://dashboard.packpay.ir/" . $method);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, []);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, $client_id . ":" .$secret_id );
curl_setopt(
$ch,
CURLOPT_HTTPHEADER,
array(
'Content-Type: application/json',
)
);
$result = curl_exec($ch);
return json_decode($result, true);
} catch (Exception $ex) {
return false;
}
}
function refresh_token($token,$secret_id,$client_id)
{
$data = [
'grant_type' => 'refresh_token',
'refresh_token' => $toke
];
$method = 'oauth/token?' . http_build_query($data);
$result = request($method, $secret_id,$client_id);
if (!array_key_exists('access_token',$result)) return false;
return $result['access_token'];
}
function send_to_bank($request,$secret_id,$client_id){
$method = 'developers/bank/api/v2/purchase?' . http_build_query($request);
return $response = request($method, $secret_id,$client_id);
}
function verify($request,$secret_id,$client_id){
$method = 'developers/bank/api/v2/purchase/verify?' . http_build_query($request);
return $response = request($method, $secret_id,$client_id);
}