PDA

View Full Version : مبتدی: گزارش گیری از درگاه پرداخت سداد



ishahin
سه شنبه 29 اردیبهشت 1394, 11: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
(
)

بنظر شما ایراد از کجاست؟! آیا این کد با فریم ورک خاصی اجرا می شود؟

siamakhadadi
جمعه 12 تیر 1394, 16:42 عصر
ظاهرا کدها درست می باشد
متاسفانه بنده هم نتیجه نگرفته
از دوستان برنامه نویس کسی نمی تونه کمک کنه؟
ویا کد دیگه ای رو معرفی کنه برای مثال بتونیم همه ی تراکنش های یک روز خواص یا یک بازه زمانی را گزارش گیری کنیم
باتشکر از

ishahin
دوشنبه 22 تیر 1394, 12:35 عصر
به گیرنده های خود دست نزنید، مشکل از فرستنده است...
مشکل از شرکت داده ورزی سداد می باشد.