ishahin
سه شنبه 29 اردیبهشت 1394, 12:57 عصر
با سلام ،
من چند هفته هست تلاش میکنم با استفاده از آموزشی که در این لینک (http://phpro.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%85%D8%AA%D8%AF%D9%87%D8%A7%DB%8C-%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4%DA%AF%DB%8C%D8%B1%D B%8C-%D8%AF%D8%B1%DA%AF/) داده شده، از درگاه پرداخت بانک ملی گزارش روزانه تهیه کنم. که نشد. متاسفانه بدلیل مبتدی بودن نتونستم ایراد کار رو متوجه بشم.
تلاش من و تغییراتی که اعمال کرده ام به صورت زیر است:
<?php
include_once ('libs/nusoap.php');
class ReportSadad {
private $_merchant_id = 'کد پذیرندگی';
private $_terminal_id = 'کد ترمینال';
private $_transactionKey = 'کلید تراکنش';
private $_url = 'https://sadad.shaparak.ir/services/MerchantUtility.asmx?wsdl';
private function generate_fp($time) {
$string = $time.$this->_merchant_id.$this->_terminal_id.$this->_transactionKey;
$hash = strtoupper(md5($string));
$len = strlen($hash);
$i = 0;
$fp = '';
while($i < $len) {
$fp.=substr($hash,$i,2).'-';
$i += 2;
}
$fp = substr($fp,0,-1);
return $fp;
}
private function getClient() {
$client = new nusoap_client($this->_url,'wsdl');
if($client !== FALSE) {
return $client->getProxy();
}
throw new Exception('در اتصال به وب سرویس بانک خطایی رخ داده است.');
}
public function transactions($date,$page = 1) {
$client = $this->getClient();
$time = $client->CalcTimeStamp();
$time = $time['CalcTimeStampResult'];
$result = $client->GetTransactionReportByPageNumber($this->_merchant_id,$this->_terminal_id,$time,$this->generate_fp($time),$date,$page,XML);
$output = array();
if(isset($result['GetTransactionReportByPageNumberResult'])){
$xml = simplexml_load_string($result['GetTransactionReportByPageNumberResult']);
foreach($xml->InternetTransaction as $transaction) {
$output['transaction'] = objectToArray($transaction);
}
$output['total_page'] = $xml['TotalPage'];
}
return $output;
}
}
function objectToArray( $object )
{
if( !is_object( $object ) && !is_array( $object ) ) {
return $object;
}
if( is_object( $object ) ) {
$object = get_object_vars( $object );
}
return array_map( 'objectToArray', $object );
}
$report = new ReportSadad();
echo '<pre>';
print_r($report->transactions('13940222',1));
echo '</pre>';
?>
خروجی اجرای کد با اطلاعات پذیرندگی صحیح :
Array
(
)
بنظر شما ایراد از کجاست؟! آیا این کد با فریم ورک خاصی اجرا می شود؟
من چند هفته هست تلاش میکنم با استفاده از آموزشی که در این لینک (http://phpro.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%85%D8%AA%D8%AF%D9%87%D8%A7%DB%8C-%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4%DA%AF%DB%8C%D8%B1%D B%8C-%D8%AF%D8%B1%DA%AF/) داده شده، از درگاه پرداخت بانک ملی گزارش روزانه تهیه کنم. که نشد. متاسفانه بدلیل مبتدی بودن نتونستم ایراد کار رو متوجه بشم.
تلاش من و تغییراتی که اعمال کرده ام به صورت زیر است:
<?php
include_once ('libs/nusoap.php');
class ReportSadad {
private $_merchant_id = 'کد پذیرندگی';
private $_terminal_id = 'کد ترمینال';
private $_transactionKey = 'کلید تراکنش';
private $_url = 'https://sadad.shaparak.ir/services/MerchantUtility.asmx?wsdl';
private function generate_fp($time) {
$string = $time.$this->_merchant_id.$this->_terminal_id.$this->_transactionKey;
$hash = strtoupper(md5($string));
$len = strlen($hash);
$i = 0;
$fp = '';
while($i < $len) {
$fp.=substr($hash,$i,2).'-';
$i += 2;
}
$fp = substr($fp,0,-1);
return $fp;
}
private function getClient() {
$client = new nusoap_client($this->_url,'wsdl');
if($client !== FALSE) {
return $client->getProxy();
}
throw new Exception('در اتصال به وب سرویس بانک خطایی رخ داده است.');
}
public function transactions($date,$page = 1) {
$client = $this->getClient();
$time = $client->CalcTimeStamp();
$time = $time['CalcTimeStampResult'];
$result = $client->GetTransactionReportByPageNumber($this->_merchant_id,$this->_terminal_id,$time,$this->generate_fp($time),$date,$page,XML);
$output = array();
if(isset($result['GetTransactionReportByPageNumberResult'])){
$xml = simplexml_load_string($result['GetTransactionReportByPageNumberResult']);
foreach($xml->InternetTransaction as $transaction) {
$output['transaction'] = objectToArray($transaction);
}
$output['total_page'] = $xml['TotalPage'];
}
return $output;
}
}
function objectToArray( $object )
{
if( !is_object( $object ) && !is_array( $object ) ) {
return $object;
}
if( is_object( $object ) ) {
$object = get_object_vars( $object );
}
return array_map( 'objectToArray', $object );
}
$report = new ReportSadad();
echo '<pre>';
print_r($report->transactions('13940222',1));
echo '</pre>';
?>
خروجی اجرای کد با اطلاعات پذیرندگی صحیح :
Array
(
)
بنظر شما ایراد از کجاست؟! آیا این کد با فریم ورک خاصی اجرا می شود؟