PDA

View Full Version : پرداخت بانك پارسيان و خطاي cURL



دنیای دلفی
جمعه 16 بهمن 1388, 11:37 صبح
سلام به همه دوستان

چند وقتی هست که دارم روی سایت بازار پارس (http://www.bazarpars.ir) کار می کنم http://www.bazarpars.ir

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

این مقدمه اون بود.
حالا اصل سوال:

برای اینکه بتونیم در خواست خود را جهت پرداخت با پارسیان ارسال کنیم از کد زیر استفاد می شود که البته باید او رو با توجه به نوع سایت و فعالیت تغییر و کامل کنیم .



<?php


// this function is to get proper authority key from Parsian
function gotoParsian () {

include("nusoap/nusoap.php");

$soapclient = new soapclient('https://www.pec24.com/pecpaymentgateway/eshopservice.asmx?wsdl','wsdl');
if (!$err = $soapclient->getError())
$soapProxy = $soapclient->getProxy() ;

if ( (!$soapclient) OR ($err = $soapclient->getError()) ) {
$error .= $err . "<br />" ;
echo $error ;
} else {
$amount = intval($_POST['Amount']) ; // here is the posted amount
$orderId = getResNum( .... ) ; // this function is internal which will get order id
$authority = 0 ; // default authority
$status = 1 ; // default status
$callbackUrl = "payment/paid_parsian/" ; // site call back Url

$params = array(
'pin' => ... , // this is our PIN NUMBER
'amount' => $amount,
'orderId' => $orderId,
'callbackUrl' => $callbackUrl,
'authority' => $authority,
'status' => $status
);
$sendParams = array($params) ;
$res = $soapclient->call('PinPaymentRequest', $sendParams);

$authority = $res['authority'];
$status = $res['status'];

if ( ($authority) and ($status==0) ) {
// this is a succcessfull connection
...
...
...

$parsURL = "https://www.pec24.com/pecpaymentgateway/?au=" . $authority ;
redirectToURL ($parsURL) ;

exit() ;
die() ;
return;

} else {
// this is unsucccessfull connection
echo "<p dir=LTR>";
if ($err=$soapclient->getError()) {
echo "ERROR = $err <br /> " ;
}
echo "$authority <br />" ;
echo "$status <br />" ;
echo "$orderId <br />" ;
echo "Couldn't get proper authority key from Parsian" ;
echo "</p>";

}

}
.... // SHOW HTML PART

}

// this function is to Validate Payment
function check_Payment_Parsian () {

include("nusoap/nusoap.php");

$authority = $_REQUEST['au'];
$status = $_REQUEST['rs'];

if ($authority) {
// here we update our database
...
}

if ( ($status==0) and (checkDataBase(...)) ) {
$soapclient = new soapclient('https://www.pec24.com/pecpaymentgateway/eshopservice.asmx?wsdl','wsdl');

if ( (!$soapclient) OR ($err = $soapclient->getError()) ) {
// this is unsucccessfull connection
echo $err . "<br />" ;

} else {
$status = 1 ; // default status
$params = array(
'pin' => ... , // this is our PIN NUMBER
'authority' => $authority,
'status' => $status ) ; // to see if we can change it
$sendParams = array($params) ;
$res = $soapclient->call('PinPaymentEnquiry', $sendParams);
$status = $res['status'];

if ($status==0) {
// this is a succcessfull payment
// we update our DataBase

} else {

// this is a UNsucccessfull payment
// we update our DataBase

echo "Couldn't Validate Payment with Parsian " ;

}

}


} else {
// this is a UNsucccessfull payment

}

.... // SHOW HTML PART

}


?>

خوب من با توجه به سایت تغییرات مورد نظر را انجام دادم .

حالا وقتی می خواهیم شروع به پرداخت کنیم نیاز به کلاس nusoap.php داریم که یک سری بررسی ها را در ابتدای کار قبل و بعد از اتصال انجام می دهند.

در اولین مرحله با استفاده از تابع زیر یک تست و بررسی انجام می شود



$soapclient = new soapclient('https://www.pec24.com/pecpaymentgateway/eshopservice.asmx?wsdl','wsdl');


حالا تا این بررسی انجام می شود خطای زیر برای من و خریدار ظاهر می شود متن خطا به صورت زیر است .



wsdl error: HTTP ERROR: cURL ERROR: 1: Protocol https not supported or disabled in libcurl
url: https://www.pec24.com:443/pecpaymentgateway/eshopservice.asmx?wsdl
content_type:
http_code: 0
header_size: 0
request_size: 0
filetime: -1
ssl_verify_result: 0
redirect_count: 0
total_time: 0
namelookup_time: 0
connect_time: 0
pretransfer_time: 0
size_upload: 0
size_download: 0
speed_download: 0
speed_upload: 0
download_content_length: -1
upload_content_length: -1
starttransfer_time: 0
redirect_time: 0


بعد از بررسی های بعمل آمده از طریق برادر google.com و تماس مکرر با سرویس انفورماتیک بانک پارسیان به دو نتیجه رسیدم.

سرویس بانک : ما اطلاع زیادی نداریم ولی احتمالا اشکال از نسخه nusoap.php شماست .
من نسخه های مختلف قدیمی ها و جدید ها را امتحان کردم هیچ ربطی نداشت .

جستجو گر ها : با جستجو کردن این خطا که در اینترنت نیز بسیار بود تقریبا همه گفتند که این خطا به دلیل عدم نصب و کامپایل شدن cURL در curlssl است .

خوب باز هم بررسی کردم و در سایتهای مختلف با نحوه نصب و کامپایل cURL مطالبی پیدا کردم ولی نمی دونم به چه صورت باید cURL را در HOST کامپایل کنم.


با مدیریت WEB HOSTING هم که تماس می گیرم اونها هم ظاهرا بلد نیستند . اگر کسی تجربه یا نحوه نصب و کامپایل cURL را در HOST و PHP دارد لطف کند به صورت گام به گام شرح دهد تا مشکل بنده و سایر دوستان در این زمینه برطرف گردد.

نحوه نصب و کامپایل cURL در HOST مربوط به Linux با برنامه نویسی php

لطف می کنید

امیـرحسین
جمعه 16 بهمن 1388, 12:00 عصر
دو حالت داره: یا این اکستنژن misconfigure هست و اگر دوباره نصب بشه درست میشه که این وظیفه هاستینگه و یا شاید این امکان توسط سرور (نه هاستینگ) بسته شده که یا با هزینه یا با درخواست هاستینگ فعال میشه.
به هر حال این به هاستینگ مربوط میشه. از اونها بخواهید که مشکل رو حل کنند یا سرور رو عوض کنید.

دنیای دلفی
شنبه 17 بهمن 1388, 12:54 عصر
با تشكر از دوستان با هماهنگي HOST حل شد