PDA

View Full Version : سوال: نحوه بازگشت اطلاعات پرداختی ussd در زرین پال



mamadcity
سه شنبه 29 مهر 1393, 12:06 عصر
سلام خدمت دوستان عزیز این نمونه کد هایی هست که خود زرین پال برای پرداخت گذاشته :

request



<?php

$MerchantID = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'; //Required
$Amount = 1000; //Amount will be based on Toman - Required
$Description = 'توضیحات تراکنش تستی'; // Required
$Email = 'UserEmail@Mail.Com'; // Optional
$Mobile ='09123456789'; // Optional
$CallbackURL = 'http://www.m0b.ir/verify.php'; // Required


// URL also Can be https://ir.zarinpal.com/pg/services/WebGate/wsdl
$client = new SoapClient('https://de.zarinpal.com/pg/services/WebGate/wsdl', array('encoding' => 'UTF-8'));

$result = $client->PaymentRequest(
array(
'MerchantID' => $MerchantID,
'Amount' => $Amount,
'Description' => $Description,
'Email' => $Email,
'Mobile' => $Mobile,
'CallbackURL' => $CallbackURL
)
);

//Redirect to URL You can do it also by creating a form
if($result->Status == 100)
{
Header('Location: https://www.zarinpal.com/pg/StartPay/'.$result->Authority);
} else {
echo'ERR: '.$result->Status;
}
?>


و این هم کد دریافت اطلاعات بازگشتی verify :




<?php

$MerchantID = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX';
$Amount = 1000; //Amount will be based on Toman
$Authority = $_GET['Authority'];

if($_GET['Status'] == 'OK'){
// URL also Can be https://ir.zarinpal.com/pg/services/WebGate/wsdl
$client = new SoapClient('https://de.zarinpal.com/pg/services/WebGate/wsdl', array('encoding' => 'UTF-8'));

$result = $client->PaymentVerification(
array(
'MerchantID' => $MerchantID,
'Authority' => $Authority,
'Amount' => $Amount
)
);

if($result->Status == 100){
echo 'Transation success. RefID:'. $result->RefID;
} else {
echo 'Transation failed. Status:'. $result->Status;
}

} else {
echo 'Transaction canceled by user';
}


?>


این کدها بدون مشکل اجرا میشن ولی متاسفانه فقط برای درخواست از طریق وب کار میکنه ولی اگر درخواست کاربر برای پرداخت توسط ussd انجام بشه

توسط کد های verify اطلاعات پرداختی نشون داده نمیشه لطفا دوستانی که تجربه دارن کمک کنند سپاس

mamadcity
چهارشنبه 30 مهر 1393, 23:58 عصر
دوستان نظری ندارن ؟؟؟

ahadgd
شنبه 03 آبان 1393, 09:53 صبح
در کد request
این قسمت رو به این صورت تغییر بده

if($result->Status == 100) {
echo '<p>ussd code:*770*97*2*'.(int)$authority.'#</p>';
} else {
echo'ERR: '.$result->Status;
}
قسمت اطلاعات بازگشتی رو تست نکردم

ruhy
یک شنبه 25 آبان 1393, 13:59 عصر
من تو قسمت اطلاعات بازگشتی مشکل دارم دوستان اگر بتونن همت کنن راهنمایی بفرمایند ممنون میشم

rambod18
یک شنبه 25 آبان 1393, 14:20 عصر
شما کل اطلاعات برگشتی رو چاپ کن ببین چی برمیگردونه یا اصلا چیزی به سایت شما بر می گردونه

ruhy
یک شنبه 25 آبان 1393, 17:01 عصر
شما این اطلاعات مشکل دارم نمیدونم چیز برگشت میخوره و اصلا چجوری باید چاپ کنمش


لطفا دوستان راهنمایی کنن و کد رو کامل بذارید همه دوستان استفاده کنیم

abbas27
یک شنبه 25 آبان 1393, 17:17 عصر
چنتا تاپیک گذشته رو نگاه کنی فیلم آموزش زرین پال هست میتونی استفاده کنی

ruhy
یک شنبه 25 آبان 1393, 17:25 عصر
همه کار هاش رو انجام دادم فیلم ها رو هم دیدم ولی این اخرش رو درک نمیکنم

ruhy
دوشنبه 26 آبان 1393, 13:45 عصر
دوستان کسی نیست کمک کنه ؟

ruhy
سه شنبه 27 آبان 1393, 17:37 عصر
من متاسفم برای دوستان سایت برنامه نویس
این سایت به عنوان مرجع ازش یاد میشه
دوستان برنامه نویس حرفه ای تو سایت فعالیت میکنن
اما اینجا کلا شده محل کاسبی و ندادن اطلاعات
واقعا دوستان اینجا بهش میگن انجمن
یعنی اگر میایی داخلش باید وقت بذاری و اطلاعاتت رو در اختیار بذاری
دوستان کد رو میذارم ازش استفاده کنید اما این رسم انجمن برنامه نویس نیست این رفتارا



<?php

$merchantID = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX';

// log GET & SERVER parameters For Test
file_put_contents('test.txt', 'Server:' . PHP_EOL . print_r($_SERVER, true) . PHP_EOL . ' Get:' . PHP_EOL . print_r($_GET, true), FILE_APPEND);

if (strlen($_GET['Authority']) == 36 && $_GET['Status'] == 'OK') {
$amount = $_SERVER['HTTP_X_PAY_AMOUNT'];
$payerCell = $_SERVER['HTTP_X_PAY_MOBILE'];
if (!empty($amount) && !empty($payerCell)) {
// URL also Can be https://de.zarinpal.com/pg/services/WebGate/wsdl
$client = new SoapClient('https://ir.zarinpal.com/pg/services/WebGate/wsdl', array('encoding' => 'UTF-8'));

$result = $client->PaymentVerification(array(
'MerchantID' => $merchantID,
'Authority' => $_GET['Authority'],
'Amount' => $amount
));

if ($result->Status == 100) {
echo 'Transation success. RefID:'. $result->RefID;
} else {
echo 'Transation failed. Status:'. $result->Status;
}
}
}
?>

ghadimi59
پنج شنبه 24 دی 1394, 01:46 صبح
سلام دوستان

در سطر

if($result->Status == 100){ echo 'Transation success. RefID:'. $result->RefID;
} else {
echo 'Transation failed. Status:'. $result->Status;
}

} else {
echo 'Transaction canceled by user';
}



وقتی تراکنش با موفقیت انجام میشه و به صفحه سایت ما باز میگرده شماره تراکنش RefID چاپ میشه
من میخواستم RefID رو توی دیتابیس ذخیره کنم . من الان جطور میتونم محتویات RefID رو به یک متغییر
مثلا" $trakonesh نسبت بدهم و داخل دیتابیسم اینزرت کنم .

ممنون




سلام خدمت دوستان عزیز این نمونه کد هایی هست که خود زرین پال برای پرداخت گذاشته :

request



<?php

$MerchantID = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'; //Required
$Amount = 1000; //Amount will be based on Toman - Required
$Description = 'توضیحات تراکنش تستی'; // Required
$Email = 'UserEmail@Mail.Com'; // Optional
$Mobile ='09123456789'; // Optional
$CallbackURL = 'http://www.m0b.ir/verify.php'; // Required


// URL also Can be https://ir.zarinpal.com/pg/services/WebGate/wsdl
$client = new SoapClient('https://de.zarinpal.com/pg/services/WebGate/wsdl', array('encoding' => 'UTF-8'));

$result = $client->PaymentRequest(
array(
'MerchantID' => $MerchantID,
'Amount' => $Amount,
'Description' => $Description,
'Email' => $Email,
'Mobile' => $Mobile,
'CallbackURL' => $CallbackURL
)
);

//Redirect to URL You can do it also by creating a form
if($result->Status == 100)
{
Header('Location: https://www.zarinpal.com/pg/StartPay/'.$result->Authority);
} else {
echo'ERR: '.$result->Status;
}
?>


و این هم کد دریافت اطلاعات بازگشتی verify :




<?php

$MerchantID = 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX';
$Amount = 1000; //Amount will be based on Toman
$Authority = $_GET['Authority'];

if($_GET['Status'] == 'OK'){
// URL also Can be https://ir.zarinpal.com/pg/services/WebGate/wsdl
$client = new SoapClient('https://de.zarinpal.com/pg/services/WebGate/wsdl', array('encoding' => 'UTF-8'));

$result = $client->PaymentVerification(
array(
'MerchantID' => $MerchantID,
'Authority' => $Authority,
'Amount' => $Amount
)
);

if($result->Status == 100){
echo 'Transation success. RefID:'. $result->RefID;
} else {
echo 'Transation failed. Status:'. $result->Status;
}

} else {
echo 'Transaction canceled by user';
}


?>


این کدها بدون مشکل اجرا میشن ولی متاسفانه فقط برای درخواست از طریق وب کار میکنه ولی اگر درخواست کاربر برای پرداخت توسط ussd انجام بشه

توسط کد های verify اطلاعات پرداختی نشون داده نمیشه لطفا دوستانی که تجربه دارن کمک کنند سپاس