PDA

View Full Version : خطای شماره 31 بانک ملت در متد bpPayRequest



Muhammad-Ali
یک شنبه 08 تیر 1393, 19:35 عصر
روی لوکال دارم تست میکنم. خطای شماره 31 (پاسخ نامعتبر است) بانک ملت در متد bpPayRequest میتونه مربوط به ولید نبودن IP باشه؟
در چه شرایطی کد 31 به عنوان برگشت میاد؟



<?php
require_once('lib/nusoap.php');

class Mellat {
const terminalID = 123;
const username = 'user';
const password = pass;
const webService = 'https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl';

public function request($price = NULL , $order_id = NULL , $callback = NULL)
{
$parameters = array(
'terminalId' => self::terminalID ,
'userName' => self::username ,
'userPassword' => self::password ,
'orderId' =>1250 ,
'amount' => 10000 ,
'localDate' => '' ,
'localTime' => '' ,
'additionalData' => '' ,
'callBackUrl' => '' ,
'payerId' => '0' ,
);

try
{
$client = new nusoap_client(self::webService);
$err = $client->getError();
}
catch(Exception $e)
{
echo $e->getMessage();
}

$result = $client->call('bpPayRequest', $parameters, 'http://interfaces.core.sw.bps.com/');
print_r($result);
$res = explode (',', $result);
if( ! isset($res[0]) or $res[0] != "0" or ! isset($res[1]))
return -6;

else
{
return strip_tags($res[1]);
}
}
}

Muhammad-Ali
دوشنبه 09 تیر 1393, 05:25 صبح
کسی نمیدونه خطای شماره 31 بانک ملت در چه شرایطی اتفاق میفته؟

MMSHFE
دوشنبه 09 تیر 1393, 07:45 صبح
31 یعنی پاسخ نامعتبر است. دلیلش میتونه IP باشه که اینطور که میگین دارین روی لوکال هاست تست میکنید، قطعاً پاسخ نامعتبر دریافت خواهید کرد. درگاه بانکی روی لوکال کار نمیکنه (البته فکر کنم بجز بانک ملی که به IP حساس نیست)

Muhammad-Ali
دوشنبه 09 تیر 1393, 09:55 صبح
31 یعنی پاسخ نامعتبر است. دلیلش میتونه IP باشه که اینطور که میگین دارین روی لوکال هاست تست میکنید، قطعاً پاسخ نامعتبر دریافت خواهید کرد. درگاه بانکی روی لوکال کار نمیکنه (البته فکر کنم بجز بانک ملی که به IP حساس نیست)

البته رو سرور هم امتحان کردم همین اشکال رو داشت. احتمال داره ای پی از سمت بانک هنوز ست نشده باشه؟ به جز IP چیز دیگه ای میتونه باشه؟
امکان داره دلیلش بسته بودن پورت باشه؟ مثل پورت 443.

Muhammad-Ali
دوشنبه 09 تیر 1393, 16:31 عصر
شرکت به پرداخت که تماس گرفتم گفتند مشکل از سینتکس هستش. سینتکس که مشکلی نداره :متفکر:

Muhammad-Ali
دوشنبه 09 تیر 1393, 20:55 عصر
با این حل شد:

$parameters = array(
'terminalId' => 123,
'userName' => 'username',
'userPassword' => '123',
'orderId' => time().mt_rand(1111,9999),
'amount' => 1000,
'localDate' => '20140630',
'localTime' => '201500',
'additionalData' => '',
'callBackUrl' => 'www.example.com',
'payerId' => 0,
);

callBackUrl و localDate و localTime رو ست نکرده بودم. فکر نمی کردم اجباری باشن !!!

MMSHFE
سه شنبه 10 تیر 1393, 10:50 صبح
اتفاقاً اجباریه (تاریخ و زمان رو مطمئن نیستم ولی مسیر بازگشت که بانک باید نتیجه تراکنش رو براش بفرسته لازمه).