دوست عزیز، من فکر کردم موقع پرداخت با پیغام خطا واسه شناسه پرداخت مواجه میشین چون مخابرات چنین کدی رو توی صفحه پرداخت میگذاره ولی گویا ISP شما لازم نداره. کافیه قسمت شناسه پرداخت رو خالی بگذارین.
موفق باشید.
Printable View
دوست عزیز، من فکر کردم موقع پرداخت با پیغام خطا واسه شناسه پرداخت مواجه میشین چون مخابرات چنین کدی رو توی صفحه پرداخت میگذاره ولی گویا ISP شما لازم نداره. کافیه قسمت شناسه پرداخت رو خالی بگذارین.
موفق باشید.
پس مثل اینکه پست اولی که من دادم رو مطالعه نفرمودید
من اشاره کرده بودم که وقتی اون گزینه رو خالی میگذارم پرداخت انجام نمیشه و میگه باید پرش کنم..عکس رو هم که گذاشتم
به هر حال ممنون
توی این صفحه آخر وقتی Next رو میزنین، چه صفحه ای میاد؟
اینم گفتم که...صفحه درگاه پرداخت ملت میاد که باید اطلاعات کارتت رو بدی
و مشکل همینجاست که شناسه پرداخت کننده ندارم
خوب پس با این اوصاف تنها راه باقیمانده، تماس با پشتیبانی هست. شاید هم توی سایتشون در قسمت پشتیبانی یا راهنما، توضیح داده باشن که چه کدی باید وارد کنید.
دوستان کسی میتونه مشکل درگاه ملت را برام پیدا کنه
تو این تاپیک توضیح دادم
درخواست اشکال یابی اسکریپت پرداخت ملت
اینم این نمونه در گاه پرداختبانکمات کسی خواست بگه http://ebanking.mokhtarein-esf.ir/default.htm
لطفا این درگاه رو بزارید.منم دقیقا یه چیزی مثل همین میخوام
سلام
من هم ممنون میشم بگذاری
دوستان اینجا مشکل حل شده:
https://barnamenevis.org/showthread.p...=1#post1485091
با تشکر از آقا رضا
سلام
چند وقتی هست از درگاه بانک ملت استفاده میکنم
بعضی وقتها بدون هیچ مشکلی کلیه مراحل خیلی خوب انجام میشه
ولی بعضی وقتها هم موقع ارتباط با بانک به مشکل میخورم ، خیلی کند عمل میکنه یا ارور fault میده
بنظرتون مشکل از کجاست؟
ممکنه مشکل از سرور باشه ؟ چون در مقایسه با خیلی از سایتا ريال سایت من خیلی کند از بانک جواب ریکوئست هارو میگیره
مشکل سرور دارید . به دنبال یه سرور قویتر باشید
حاج رضا ، پست نطلبیده مراده >> https://barnamenevis.org/showthread.p...DB%8C%D9%86-92)
سلام من توی سایتم پرداخت الکترونیکی بانک ملت دارم.در صفحه پرداخت الکترونیکی زمان اتصال به درگاه بانک ملت خطای زیر میده.
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://pgws.bpm.bankmellat.ir/pgwchannel/services/pgw?wsdl=IPaymentGateway.wsdl' : failed to load external entity "https://pgws.bpm.bankmellat.ir/pgwchannel/services/pgw?wsdl=IPaymentGateway.wsdl" in D:\HostingSpaces\m-ayn.com\m-ayn.com\wwwroot\help\save_help.php:166 Stack trace: #0 D:\HostingSpaces\m-ayn.com\m-ayn.com\wwwroot\help\save_help.php(166): SoapClient->SoapClient('https://pgws.bp...') #1 {main} thrown in D:\HostingSpaces\m-ayn.com\m-ayn.com\wwwroot\help\save_help.php on line 166
اینم تکه کد که گذاشتم توی صفحه پرداخت الکترونیکی
require_once("./lib/nusoap.php");
//curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
//$page = curl_exec ($ch);
$client = new soapclient('https://pgws.bpm.bankmellat.ir/pgwchannel/services/pgw?wsdl');
$namespace='http://interfaces.core.sw.bps.com/';
///////////////// PAY REQUEST
if (isset($_POST['PayRequestButton']))
{
$terminalId = $_POST['TerminalId'];
$userName = $_POST['UserName'];
$userPassword = $_POST['UserPassword'];
$orderId = $_POST['PayOrderId'];
$amount = $_POST['PayAmount'];
//$date = date("YYMMDD");
//$time = date("HHIISS");
$localDate = $_POST['PayDate'];
$localTime = $_POST['PayTime'];
$additionalData = $_POST['PayAdditionalData'];
$callBackUrl = $_POST['PayCallBackUrl'];
$payerId = $_POST['PayPayerId'];
// Check for an error
$err = $client->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
die();
}
$parameters = array(
'terminalId' => $terminalId,
'userName' => $userName,
'userPassword' => $userPassword,
'orderId' => $orderId,
'amount' => $amount,
'localDate' => $localDate,
'localTime' => $localTime,
'additionalData' => $additionalData,
'callBackUrl' => $callBackUrl,
'payerId' => $payerId);
// Call the SOAP method
$result = $client->call('bpPayRequest', $parameters, $namespace);
از آخرین خط error میگیره.ممنون میشم کسی بتونه کمکم کنه
به این ارور برخوردم :
Error
HTTP Error: cURL ERROR: 7: couldn't connect to host
url: https://pgws.bpm.bankmellat.ir:443/pgwchannel/services/pgw?wsdl
content_type:
http_code: 0
header_size: 0
request_size: 0
filetime: -1
ssl_verify_result: 0
redirect_count: 0
total_time: 3.488695
namelookup_time: 0.238467
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
certinfo: Array
redirect_url:
curl هم فعال هست ...
چطور باید برطرفش کنم ؟
طبق اعلام خود بانک، سیستم به پرداخت گویا موقتاً قطعه. بخاطر اختلالاتی که اخیراً توی سیستم SSL در ایران پیش اومده.
هرچند که کدتور رو قرار ندادین ولی احتمالا باید این:
https://pgws.bpm.bankmellat.ir:443/pgwchannel/services/pgw?wsdl
رو به این تبدیل کنید:
https://pgwsf.bpm.bankmellat.ir:443/pgwchannel/services/pgw?wsdl
ولی پرداخت های ما مشکلی ندارند.نقل قول:
طبق اعلام خود بانک، سیستم به پرداخت گویا موقتاً قطعه. بخاطر اختلالاتی که اخیراً توی سیستم SSL در ایران پیش اومده.
این هم کد :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php
date_default_timezone_set('Asia/Tehran');
?>
<html>
<head>
<meta http-equiv="Content-Language" content="fa">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>.: آسان پرداخت :.</title>
<link href="Css/Style.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript">
function postRefId (refIdValue) {
var form = document.createElement("form");
form.setAttribute("method", "POST");
form.setAttribute("action", "https://pgw.bpm.bankmellat.ir/pgwchannel/startpay.mellat");
form.setAttribute("target", "_self");
var hiddenField = document.createElement("input");
hiddenField.setAttribute("name", "RefId");
hiddenField.setAttribute("value", refIdValue);
form.appendChild(hiddenField);
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
}
</script>
</head>
<body>
<form name="form1" method="post" preservedata="true">
<div style="text-align:center; direction:ltr; font:bold 14px/28px tahoma; direction:rtl">
مبلغ تراکنش (به ريال):<br>
<input type="text" name="PayAmount" style="width:300px; padding:6px 5px; font:bold 28px Tahoma; color:#ad0000; direction:ltr; border:1px solid #ad0000">
<br>
<input type="submit" CssClass="PublicButton" name="PayRequestButton" value="ارسال" style="padding:6px 30px; font:bold 20px Tahoma; color:#fff; background:#ad0000"/>
</div>
</form>
</body>
<?php
require_once("lib/nusoap.php");
//curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
//$page = curl_exec ($ch);
$client = new nusoap_client('https://pgws.bpm.bankmellat.ir:443/pgwchannel/services/pgw?wsdl');
$namespace='http://interfaces.core.sw.bps.com/';
///////////////// PAY REQUEST
if (isset($_POST['PayRequestButton']))
{
$terminalId = '؟؟؟؟؟؟؟';
$userName = '؟؟؟؟؟؟';
$userPassword = '؟؟؟؟؟؟؟';
$orderId = rand();
$amount = $_POST['PayAmount'];
$localDate = date("Ymd");
$localTime = date("His");
$additionalData = '';
$callBackUrl = 'http://pay.manahost.ir/Bank/callback.php';
$payerId = 0;
// Check for an error
$err = $client->getError();
if ($err) {
echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
die();
}
$parameters = array(
'terminalId' => $terminalId,
'userName' => $userName,
'userPassword' => $userPassword,
'orderId' => $orderId,
'amount' => $amount,
'localDate' => $localDate,
'localTime' => $localTime,
'additionalData' => $additionalData,
'callBackUrl' => $callBackUrl,
'payerId' => $payerId);
// Call the SOAP method
$result = $client->call('bpPayRequest', $parameters, $namespace);
// Check for a fault
if ($client->fault) {
echo '<h2>Fault</h2><pre>';
print_r($result);
echo '</pre>';
die();
}
else {
// Check for errors
$resultStr = $result;
$err = $client->getError();
if ($err) {
// Display the error
echo '<h2>Error</h2><pre>' . $err . '</pre>';
die();
}
else {
// Display the result
$res = explode (',',$resultStr);
echo "<script>alert('Pay Response is : " . $resultStr . "');</script>";
echo "Pay Response is : " . $resultStr;
$ResCode = $res[0];
if ($ResCode == "0") {
// Update table, Save RefId
echo "<script language='javascript' type='text/javascript'>postRefId('" . $res[1] . "');</script>";
}
else {
// log error in app
// Update table, log the error
// Show proper message to user
}
}// end Display the result
}// end Check for errors
}
?>
</html>
خب حتما آی پی که به شرکت به پرداخت دادین با آی پی فعلی سرورتون یکی نیست. چک کنید.نقل قول:
این کار رو انجام دادم میگه ای پی معتبر نیست .
پاسخ دریافت شده از بانک ملت اینه که آی پی مشکل داره. پس شما باید با خود بانک صحبت کنید کسی نمیتونه کمکی کنه چونکه مربوط به پاسخ دریافت شده از بانک هست.نقل قول:
آی پی رو مطمئنم درست دادم ...
الان این ارور رو میده : با کدی که شما دادین
HTTP Error: cURL ERROR: 28: SSL connection timeout
url: https://pgwsf.bpm.bankmellat.ir:443/pgwchannel/services/pgw
content_type:
http_code: 0
header_size: 0
request_size: 0
filetime: -1
ssl_verify_result: 0
redirect_count: 0
total_time: 1.721738
namelookup_time: 0.464276
connect_time: 1.721799
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
certinfo: Array
redirect_url:
به به پرداخت ایمیل زدم ببینم چی میگن ... حالا تا شنبه باید صبر کنم ببینم چی میشه .
ممنون بایت اینکه پاسخ سوالاتمو دادین .
با تشکر
با تشکر ...
مشکل از آی پی بود که حل شد ...
چند سوال کلی و عمومی دارم ...
1- امکان تعریف چند IP برای یک درگاه وجود دارد ؟
2- امکان درخواست چند درگاه برای یک حساب چطور ؟
دو تا سایت دارم که نیاز به درگاه بانک دارم ... که بطور مستقل کار میکنن ... جواب تلفن رو که به پرداخت نمیده ... گفتم از تجربیات دوستان استفاده کنم و بپرسم .
ممنون
سلام
خطای 418 رو چطور می تونم برطرف کنم ،
اشكال در تعريف اطلاعات مشتري 418
از اسکریپت نمونه خود بانک استفاده می کنم .
ممنون دوستان
دوستان ممنون میشم خطای 418 و21 را توضیح بدین..؟
من قبلا در چندین سایت از پرداخت الکترونیک به روش soap استفاده کردم
نموه زیر یکی از اونهاست.
<?php
include 'class/modelslist.php';
$MerchantID = 'secret';
$Password = 'secret';
if (isset($_REQUEST['openpay']))
{
$ReturnPath = 'http://kaniaw.ir/verify.html?openpay';
}
else { $ReturnPath = 'http://kaniaw.ir/verify.html'; }
$ResNumber = $_REQUEST['orderid'];// Order Id In Your System
$Price = $_REQUEST['price']; //Price As Toman
$Description = $_REQUEST['discrib'];
$Paymenter = $_REQUEST['name'];
$Email = $_REQUEST['email'];
$Mobile = $_REQUEST['phone'];
$client = new SoapClient('http://merchant.parspal.com/WebService.asmx?wsdl');
$res = $client->RequestPayment(array("MerchantID" => $MerchantID , "Password" =>$Password , "Price" =>$Price, "ReturnPath" =>$ReturnPath, "ResNumber" =>$ResNumber, "Description" =>$Description, "Paymenter" =>$Paymenter, "Email" =>$Email, "Mobile" =>$Mobile));
$PayPath = $res->RequestPaymentResult->PaymentPath;
$Status = $res->RequestPaymentResult->ResultStatus;
if($Status == 'Succeed')
{
if (isset($_REQUEST['openpay']))
{
$temp=new temppayment();
$temp->datamembers=array(
oid=>$ResNumber,
price=>$Price
);
$temp->save();
}
echo "<html><head><title>Connecting ....</title><meta charset='utf-8'><head><body onload=\"javascript:window.location='$PayPath'\" style=\"font-family:tahoma; text-align:center;font-waight:bold;direction:rtl\">درحال اتصال به درگاه پرداخت پارس پال ...</body></html>";
}
else
{
echo "<p>خطای زیر روی داده است.</p></br>".$Status;
}
?>
منم تازه دارم درگاه بانک ملت رو نصب می کنم. توی فایل راهنماشون چند بار از saleOrderId , SaleReferenceId و orderId استفاده کردن که کمی مبهم هست.
برای ارسال درخواست باید orderId یکتا برای بانک بفرستیم که احتمالا با استفاده از تابع rand این کار رو می شه انجام داد
موقع برگشت از بانک saleOrderId برگردونده می شه
موقع تایید پرداخت به orderId و saleOrderId نیاز هست
پس از تایید و برای درخواست واریز باید دوباره orderId و saleOrderId رو برای بانک بفرستید.
سوالم اینه که:
1- در مرحله تایید پرداخت orderId و saleOrderId رو چطور ایجاد کنم و برای بانک بفرستم؟
2- در مرحله درخواست واریز orderId و saleOrderId رو چطور ایجاد کنم و برای بانک بفرستم؟
3- عدد saleReferenceId که بغیر از مرحله اول در بقیه مراحل وجود داره آیا یکسانه یا تغییر می کنه؟
این عدد نباید به هیچ وجه رندوم باشه و باید به صورت یکتا در سیستم برنامه شما ایجاد بشه و برای بانک ارسال بشه. شما قبل از راه اندازی به صورت واقعی برای مشتری باید برای بانک درخواست تست ارسال کنید حتی در این مرحله هم باید اعداد واقعی بفرستید یعنی وقتی بانک اجازه راه اندازی به صورت نهایی به شما داد باید اعدادی که می فرستید اعداد زمان تست نباشه
این عدد برای هر درخواستی که شما به سمت بانک ارسال می کنید باید یکتا باشه برای همین نباید رندوم باشه
برای بقیه سوال هاتون هم به بانک زنگ بزنید از همه بهتر راهنماییتون می کنند. برای هر قرارداد یک کارمند مخصوص داره که حتی دو ساعت هم لازم باشه با تلفن جوابگو هست چو در آن واحد تعداد محدودی پرونده در دست داره
به هرحال باید عدد تصادفی باشه، می شه از تابع time هم استفاده کردنقل قول:
این عدد نباید به هیچ وجه رندوم باشه و باید به صورت یکتا در سیستم برنامه شما ایجاد بشه و برای بانک ارسال بشه. شما قبل از راه اندازی به صورت واقعی برای مشتری باید برای بانک درخواست تست ارسال کنید حتی در این مرحله هم باید اعداد واقعی بفرستید یعنی وقتی بانک اجازه راه اندازی به صورت نهایی به شما داد باید اعدادی که می فرستید اعداد زمان تست نباشه
فکر کنم الان داری بازی فوتبال تماشا می کنن:چشمک:نقل قول:
برای بقیه سوال هاتون هم به بانک زنگ بزنید از همه بهتر راهنماییتون می کنند. برای هر قرارداد یک کارمند مخصوص داره که حتی دو ساعت هم لازم باشه با تلفن جوابگو هست چو در آن واحد تعداد محدودی پرونده در دست داره
توی درگاه بانک ملت ظاهرا باید 3 بار این عدد یکتا رو ایجاد کنیم (موقع درخواست تراکنش، موقع تایید و موقع درخواست واریز)، ایا این کار لازمه یا فقط باید از همون عددی که برای درخواست انجام تراکنش استفاده شده مجددا استفاده کرد؟
عدد تصادفی یکبار تولید میشه (درخواست تراکنش) و در مراحل تأیید و درخواست واریز باید همون عدد قبلی رو بدین.
1. بله شما میتونید آی پی ها رو با دامنه به ایمیل به پرداخت که فک کنم این sales@behpardakht.ir هست ارسال کنید و درخواست خودتون رو مطرح کنید!
2. خیر برای هر حساب یه درگاه تخصیص میدن!
شما میتونید هر دوسایت رو به یه درگاه وصل کنید و هیچ مشکلی هم نداره من الان دارم چندین سایت رو با یه درگاه راه میبرم!
یا علی
سلام دوستان یه سوال در این اسکریپت به جای نمایش خطا یا نتیجه به صورت عدد چهجوری پیغام نمایش بدیم؟
مثلا پرداخت موفق بود 0 نشون نده . بزنه موفق بوده .
یا پرداخت کنسل شده 17 نزنه بزنه کنسل شده .
ممنون میشم راهنمایی کنید
دوستان کسی با زبان asp سمپل داره ? Php سمپل خیلی زیاده ولی asp هیچی نیست بانکم نداره
خواهشا اگه کسی میتونه کمک کنه
ممنون
بهتره توی تالار ASP.NET این سؤال رو مطرح کنید. اینجا همه PHP کار هستن. البته معمولاً خود بانک نمونه کد ASPX رو همراه با مستندات، بهتون ارائه میکنه.
خدا خیرت بده.
دمت گرم
سلام آقا رضا
اسکریپتتون عالیه
فقط مشکل اینه که وقتی صفحه اجرا می شه کل سشن های سایت رو پاک می کنه.
پس از این اسکریپت فقط می شه تو صفحات بیرونی سایت استفاده کرد و نه صفحات پنل هر یوزر
لطفا مشکا رو حل بفرمایید
با سپاس
سلام
بعد از اجرای متد درخواست تراکنش پرداخت بعد اینکه گزینه پرداخا میزنیم نتیجه همراه با پارامتر ها به سایت پذیرنده با متد پست ارسال میشن که طبق گفته داکیومنت به پرداخت باید اینها باشن
RefId
ResCode
saleOrderId
SaleReferenceId
الان مشکل من اینجاست که همه موارد فوق درست ارسال میکنه به غیر از saleOrderId که مقدارش null هست ! و به خاطر همین نمیتونم متد تایید تراکنش اجرا کنم چون به این پارامتر نیاز داره
از دوستان کسی تا حالا همچین مشکلی داشته ؟ ممنون میشم راهنماییم کنید
متشکرم
سلام . شما باید کدsaleOrderId رو به همراه RefId توی دیتابیست ذخیره کرده باشی و برای وریفای کردن ازش استفاده کنی. کافیه یک تابع بنویسی که کد saleOrderId رو از طریق RefId بدست بیاری. مثلا:
function GetOrderIDByRefId($RID){ $sql = "SELECT * FROM orders where au = '".secure($RID)."' limit 1"; $q = mysql_query($sql); while ($record = mysql_fetch_assoc($q)) { return($record["ORDERID"]); }}
سلام دوستان
در سایت موردنظر من، ابتدا کاربر یکسری اطلاعات را پر می کنه سپس بایستی مبلغی پرداخت کنه و در صورت تایید پرداخت از سمت بانک، اطلاعات کاربر در پایگاه داده ذخیره بشه. آیا چنین چیزی امکان پذیر هست؟ لطفا راهنمایی کنید.
بله. در فرایند پرداخت سایت شما باید در بانک اطلاعات خود یک کد سفارش یکتا تولید کرده و نگهداری می کند. درخواستی با پارامتر هایی مثل: اطلاعات احراز هویت (نام کاربری و کلمه عبور و شماره ترمینال) ، آدرس درخواست و بازگشت از سایت ، مبلغ ، زمان و ... از طریق پروتکل SOAP به سایت بانک ارسال میکنید. اگر همه ی پارامتر های ارسالی مشکلی نبود بانک یک کد RefId برای آن سفارش تولید می کند و کاربر را به سمت صفحه ی پرداخت هدایت می کند و پس از انجام تراکنش کاربر به سایت شما بازگشت داده خواهد شد و شما باید کد یکتایی که در بانک خود ذخیره کرده اید را با کدی که بانک به شما می دهد مقایسه کنید و نسبت به کدی بازگشتی که به کاربر داده است برای آن پیغامی چاپ می کنید.
این توضیحات کلی و فقط جهت آشنایی شما با روال کار بود . اگر درگاهی درخواست بدهید بانک موظف است مستنداتی که اطلاعات آن به صورت کامل است را در اختیار شما قرار دهد.
امید وارم که مفید واقع شود
سلام من از این کد میخوام استفاده کنم البته برای یک افزونه vip
تا اینجا پیش رفتم که وقتی کاربر میخواد خرید کنه و دکمه خرید رو میزنه Pay Response is : 0,A2E6D5281EDA5712 این کد نمایش داده میشه البته بگم که من کدها رو از فایل اینکسی که توی انجمن بود خارج کردم و در قسمتی از افزونه که مربوط به پرداخت هست قرار دادم و اطلاعات بانکی و مبلغ رو از افزونه مورد نظر میگیره اما بعد از گرفتن کدPay Response is : 0,A2E6D5281EDA5712 به سمت دروازه پرداخت نمیره و احتمال میدم که کد جاوا اسکریپش کار نکنه چون اونو اجباری داخل $html='';قرار بدم تا برنامه از کد نویسی php خطا نگیره کسی میتونه کمک کنه