مشکل در رابطه با اتصال به بانک پارسیان

babak869

Member
سلام

من بتازگی با بانک پارسیان و سایت پرداخت قرارداد خرید آنلاین بستم و برای هر دو به مشکل برخوردم

برای بانک پارسیان اونا به من یه فایل پی اچ پی دادند که باید در زمان خرید نهایی در صفحه مورد نظر بزارم و کاربر رو به بانک پارسیان هدایت کنم
البته فایل راهنما هم فرستادند اما متاسفانه نتونستم ازش استفاده کنم
متن فایلها رو در زیر آوردم :
===================================
راهنماي اتصال به سرويس دروازه پرداخت: (نسخه1.2 )

 نکات عمومي
• در هر عمليات بانکي از سوي فروشنده، يک کد unique (واحد براي همان فروشنده) تحت نام OrderId، ميبايست به دروازه پرداخت ارسال گردد، جزئيات ارسال آن در توضيحات هر تراکنش بيان خواهد شد.
• پين (pin) فروشنده، شناساگر و نيز کد رمز وي بوده و فروشنده آنلاين ملزم به نگهداري امن اين کد ميباشد، اين کد براي اجراي هر عمليات لازم است.
• پس از اجراي هر عمليات يک کد وضعيت (status) به معني وضعيت فراخواني آن متد، به eShop برگردانده ميشود، که بسته به آن کد فرايند هاي خاص آن بايد صورت گيرد. کد صفر به معني موفقيت آميز بودن عمليات است، ساير کدها براي هر متد در توضيحات متد آمده است.

 پرداخت مشتري (Sale)
با انجام اين تراکنش پول از حساب مشتري کم شده و پس از عمليات تسويه حساب به حساب فروشنده واريز ميشود. انجام کامل اين تراکنش مستلزم طي کامل چرخه پرداخت بوده و چنانچه اين روند به آخرين وضعيت (موفقيت و پايان عمليات) منجر نشود، کل عمليات Rollback خواهد شد.
مراحل پرداخت مشتري:
1- پس از پايان فاز انتخاب کالا، مشتري آمادگي خود را براي پرداخت پول از طريق حساب بانک پارسيان اعلام ميکند، در اين زمان eShop متد زير را از وب سرويس دروازه پرداخت صدا ميزند:

PinPaymentRequest(pin,amount,orderId,callbackUrl,r ef authority,ref status)
Pin (string): پين فروشنده
Amount (integer): رقم پرداخت
OrderId (integer): کد عمليات
CallbackUrl (string): صفحه بازگشت مشتري، پس از انجام عمل پرداخت
Authority (long integer): کد عملياتي دروازه پرداخت که يک کد تصادفي و واحد براي تمامي عمليات آنلاين با
سايتها ميباشد، فروشگاه آنلاين ملزم به ثبت و نگهداري اين کد ميباشد.
Status (byte): کد وضعيت
0: موفق
20, 22: پين فروشنده درست نميباشد
30: عمليات قبلا با موفقيت انجام شده است
34: شماره تراکنش فروشنده درست نميباشد
2- در صورت موفقيت آميز بودن متد فوق، eShop کاربر را به سايت دروازه پرداخت redirect ميکند، authority بعنوان پارامتر Query String با نام au، بايد در انتهاي URL سايت دروازه پرداخت قرار گيرد، بعنوان مثال:
https://www.pec24.com/pecpaymentgate...u=791684761124

از زمان ارسال کاربر به سايت پرداخت، زمان محدودي (حدود 10 دقيقه) مشتري مهلت دارد که عمليات پرداخت خود را در سايت پرداخت بانک، انجام دهد، در غير اينصورت authority کد expire ميشود و در صورت درخواست مجدد، eShop مجددا براي وي درخواست authority کد ميکند.





3- پس از انجام عمليات و يا انصراف، کاربر توسط دروازه پرداخت به سايت فروشگاه آنلاين بازميگردد و کد authority و status عمليات بعنوان Query String به eShop ارسال ميشود. در صورتي که status صفر باشد، eShop ميبايست مجددا از سرور دروازه پرداخت صحت انجام عمليات را سئوال نمايد.

PinPaymentEnquiry(pin, authority, ref status)

چنانچه تا قبل از فراخواني اين متد ارتباط اينترنتي کاربر قطع شود، دروازه پرداخت بصورت اتوماتيک پرداخت وي را ابطال ميکند.


 ابطال عمليات (Void)
فروشنده (merchant) ميتواند عمليات پرداخت را تا قبل از تسويه حساب ابطال کند، بدون آنکه هيچگونه بار مالي براي مشتري داشته باشد.
PinVoidPayment(pin, orderId, orderToVoid, ref status)


 برگشت عمليات (Reversal)
در صورت بروز اتفاقات ناخواسته، که عمدتا ناشي از نقايص فني و يا قطع ارتباط کاربر با فروشگاه آنلاين، ميباشد، فروشنده ملزم به برگشت عمليات خواهد بود، همانطور که در عمليات Sale توضيح داده شد، در آخرين مرحله eShop از دروازه پرداخت استعلام عمليات خواهد کرد؛ از اين لحظه به بعد چنانچه فروشنده متوجه شود به هر دليلي مشتريش نتيجه عمليات پرداخت خود را مشاهده نکرده، فروشنده عمليات برگشت را انجام ميدهد.

PinReversal(pin, orderId, orderToReversal, ref status)

 برگرداندن تمام يا بخشی از مبلغ عمليات (Refund)
فروشنده (merchant) ميتواند در صورت نياز تمام يا بخشي از مبلغ عمليات انجام شده را به حتی بعد از تسويه حساب به مشتری برگرداند، به همين دليل فروشنده بايد دقت مضاعفی به اين مساله داشته باشد.

PinRefundPayment(pin, orderId, orderToRefund, amount, ref status)

 تسويه حساب (Settlement)
تسویه حساب به صورت اتوماتیک و روزانه انجام می گیرد. و صورتحساب از طریق بخش مالی و طبق قرارداد به فروشگاه تحویل می گردد.

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

کد:
<?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

}


?>

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

کدهاش برای تک محصول به شکل زیره :

:نمونه مثال براي مشاهده سبد خريد
<a href="http://tehran.Pardakht.com/ShoppingCart/Cart.cfm?
ID=babak_ahadi&ref=http://www.Delphi-Magic.com"> مشاهده سبد خريد </a>

============

: نمونه مثال از اضافه کردن محصول به سبد خريد
<a href="http://tehran.Pardakht.com/ShoppingCart/Cart.cfm?
ID=babak_ahadi&ref=http://www.Delphi-Magic.com&ProdID=001"> Magic Collection 2007 </a>


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

=====
اگه بتونید منو راهنمایی کنید یه دنیا ازتون سپاسگزاری میکنم


با آرزوی موفقیت و سربلندی
 

HotHost.ir

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

babak869

Member
سلام
ببخشید در مورد مشکل بالا میتونید منو راهنمایی کنید؟
متشکرم
 

IranPardakht

Well-Known Member
یعنی وقعا برای اتصال این راهنما رو خوند و دستی عمل کرد :)

محاله برم سمت پارسیان..... چیه بابا این... خجالت آوره...
 

ziXet

مدیر انجمن PHP/MYSQL
اما نمیدونم چطور میشه همزمان چندتا پارامتر با سایت ارسال کرد و کاربر مجبور نباشه برای انتخاب هر کالا یه بار سایت پرداخت بره و برگرده
خب شاید همچین امکانی تو سیستمشون تعریف نشده باشه اگر همچین امکانی داشته باشه تو راهنماش میگه.
درباره اون پارسیان هم دنگ وفنگش زیاده من برای سامانو نوشتم 50 گرفتم البته خیلی کار داره.
 

siavashmusic

Active Member
دقیقا شما میخواید که کل پروژه رو اینجا توضیح بدیم !؟ این چیزی که شما میخوای کل کاره شما مشکلتون رو بصورت کلی تعریف کردید و کسی نمیتونه کل کار رو توضیح بده
هرچند فکر نمیکنم مشکلی باشه و بعید میدونم خودتون با این اوصاف بتونین انجامش بدید و اصلا توصیه هم نمیکنم که چنین کار رو هم انجام بدید
فکر میکنم منطقی و سریع ترین راه ممکن اینه که به کسی که توانایش رو داره سفارش بدید تا براتون انجام بدن
 

babak869

Member
آیا کسی که تواناییش رو داره در این فروم پیدا میشه کمک کنه؟ هزینه ش رو تقبل میکنم
 

zfarhad2003

Member
من فکر می کردم با اون تعداد پیغام خصوصی که بین ما رد و بدل شد مشکل شما حل شده ولی نمی دونم تویه کدوم مرحله از کار گیر افتاده اید.
 

wink

New Member
سلام من یه مشکلی توی ارتباط با دروازه بانک پارسیان دارم، قسمت درج توی databasam، من کدش رو آماده کردم، و همه چیزش درسته فایلش رو هم گذاشتم اگر می تونید راهنماییم کنید گیر کردم توش دیگه تا اگر مشکل حل نشد این قسمت رو out source کنم . ممنون می شم

  • :rose:

مشاهده پیوست bank.rar

اینم جدول دیتابیسم

CREATE TABLE IF NOT EXISTS `parsian` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`au` varchar(200) NOT NULL,
`rand` int(10) unsigned NOT NULL,
`time_stamp` int(10) unsigned NOT NULL,
`status` varchar(10) NOT NULL DEFAULT 'ordered',
`price` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

 

wink

New Member
سلام من یه مشکلی توی ارتباط با دروازه بانک پارسیان دارم، قسمت درج توی databasam، من کدش رو آماده کردم، و همه چیزش درسته فایلش رو هم گذاشتم اگر می تونید راهنماییم کنید گیر کردم توش دیگه تا اگر مشکل حل نشد این قسمت رو out source کنم . ممنون می شم
 

جدیدترین ارسال ها

بالا