返回信息流帮公司做的东西,公司里除了业务处理以外也没什么价值了,其中有xml的解析接口,感兴趣的自己玩一玩吧。用得着的更好了。
<?php
$debug = 1;
//0 - no debug;
//1 - simple debug;
//2 - verbose debug;
$mysql_host="localhost";
$mysql_user="mysql";
$mysql_password="mysql";
$mysql_database="users";
$mysql_table="users";
function connect_and_select_db() {
global $mysql_host, $mysql_user, $mysql_password, $mysql_database;
$mysql_link = mysql_connect($mysql_host, $mysql_user, $mysql_password)
or die('Could not connect: ' . mysql_error());
mysql_select_db($mysql_database) or die('Could not select database');
}
function close_db() {
//mysql_close();
;
// the below is from php manual, becaose of it, i would better leave the above alone, do nothing:
/*mysql_close() closes the connection to the MySQL server that's associated with the specified
link identifier. If link_identifier isn't specified, the last opened link is used.
Using mysql_close() isn't usually necessary, as non-persistent open links are automatically
closed at the end of the script's execution.
*/
/*Be careful when using multiple links to connect to same database (with same username).
Unless you specify explicitly in mysql_connect() to create a new link, it will return
an already open link. If that would be closed by mysql_close(), it will also (obviously)
close the other connection, since the link is the same.
Had lot of trouble figuring it out, since in <=4.3.6 there was a bug which didn't close
the connection, but after the patch to >=4.3.7, all my application broke down because of
a single script that did this.*/
}
$log = "";
/********************************************************************************
样本SOAP请求
sample.xml
<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header>
<TransactionID xmlns="http://10.1.2.122/misc/dsmp.xsd">00110100037392</TransactionID>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<SyncOrderRelationReq xmlns="http://10.1.2.122/misc/dsmp.xsd">
<Version>1.5.0</Version>
<MsgType>SyncOrderRelationReq</MsgType>
<Send_Address>
<DeviceType>0</DeviceType>
<DeviceID>0011</DeviceID>
</Send_Address>
<Dest_Address>
<DeviceType>400</DeviceType>
<DeviceID>0</DeviceID>
</Dest_Address>
<FeeUser_ID>
<UserIDType>2</UserIDType>
<MSISDN></MSISDN>
<PseudoCode>00116000000286</PseudoCode>
</FeeUser_ID>
<DestUser_ID>
<UserIDType>2</UserIDType>
<MSISDN></MSISDN>
<PseudoCode>00116000000286</PseudoCode>
</DestUser_ID>
<LinkID>SP</LinkID>
<ActionID>1</ActionID>
<ActionReasonID>1</ActionReasonID>
<SPID>919102</SPID>
<SPServiceID>0000000064</SPServiceID>
<AccessMode>2</AccessMode>
<FeatureStr></FeatureStr>
</SyncOrderRelationReq>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
********************************************************************************/
/*******************************************************************************
利用浏览器POST数据的简单HTML页面,测试用。
<html>
<body>
<h1>Put your information here!</h1><br>
<form name="go" method="post" action="provision.php">
Text :<br>
<textarea name="provision" rows="30" cols="100"></textarea><br>
<input name="enter" type="submit" value="go">
</form>
</body>
<html>
********************************************************************************/
if (!headers_sent()) {
header("Content-type: text/html; charset=utf-8");
}
if ($debug > 0) {
/*
$sample_file_name = dirname (__FILE__)."/"."sample.xml";
$sample_fp = fopen ($sample_file_name, "r");
$raw_provision_xml_data = fread ($sample_fp, filesize($sample_file_name));
fclose ($sample_fp);
*/
$raw_provision_xml_data = urldecode($HTTP_POST_VARS["provision"]);
$raw_provision_xml_data = eregi_replace("[\/][\"]", "\"", $raw_provision_xml_data);
$log .= $raw_provision_xml_data."\n";
}
else {
$raw_provision_xml_data = rawurldecode($HTTP_RAW_POST_DATA);
}
$SyncOrderRelationReq = array ("TransactionID" => "",
"Version" => "",
"MsgType" => "",
"Send_Address" => array ("DeviceType" => "", "DeviceID" => ""),
"Dest_Address" => array ("DeviceType" =>"", "DeviceID" =>""),
"FeeUser_ID" => array ("UserIDType" => "", "MSISDN" => "", "PseudoCode" => ""),
"DestUser_ID" => array ("UserIDType" => "", "MSISDN" => "", "PseudoCode" => ""),
"LinkID" => "",
"ActionID" => "",
"ActionReasonID" => "",
"SPID" => "",
"SPServiceID" => "",
"AccessMode" => "",
"FeatureStr" => "" );
$xml_parser = xml_parser_create ();
xml_parser_set_option ($xml_parser, XML_OPTION_CASE_FOLDING, 0);
$current_xml_element = "";
$xml_element_array = array ();
function start_element_handler ($xml_parser, $name, $attributes) {
global $debug, $SyncOrderRelationReq, $current_xml_element, $xml_element_array, $log;
array_push ($xml_element_array, $name);
$current_xml_element = $name;
if ($debug > 1) {
$log .= "Parsering XML start tag \"".$current_xml_element."\" with its attributes as belows:\n";
for ($i = 0; $i < count ($attributes); $i++) {
$log .= "Name: ".key ($attributes)." Value:".current($attributes)."\n";
next($attributes);
}
}
else {
;
}
}
function end_element_handler ($xml_parser, $name) {
global $debug, $SyncOrderRelationReq, $current_xml_element, $xml_element_array, $log;
array_pop ($xml_element_array);
$current_xml_element = $name;
if ($debug > 0) {
if ($debug >1) {
$log .= "Parsing XML end tag \"".$current_xml_element."\".\n";
}
if (strcmp ($current_xml_element, "SyncOrderRelationReq") == 0) {
$log .= "<".date ("Y-m-j G:i:s")."> SyncOrderRelationReq XML parsing done, the below is the result:\n";
for ($i = 0; $i < count ($SyncOrderRelationReq); $i++) {
if (is_array (current ($SyncOrderRelationReq))) {
$tmp_array = current ($SyncOrderRelationReq);
for ($j = 0; $j < count ($tmp_array); $j++) {
$log .= key ($SyncOrderRelationReq)."-->";
$log .= key ($tmp_array)."-->".current ($tmp_array)."\n";
next ($tmp_array);
}
}
else {
$log .= key ($SyncOrderRelationReq)."-->".current ($SyncOrderRelationReq)."\n";
}
next($SyncOrderRelationReq);
}
}
}
else {
;
}
}
function character_data_handler ($xml_parser, $data) {
global $debug, $SyncOrderRelationReq, $current_xml_element, $xml_element_array, $log;
$size = count ($xml_element_array);
switch ($current_xml_element) {
case "TransactionID":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
$SyncOrderRelationReq["TransactionID"] = $data;
}
break;
case "Version":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
$SyncOrderRelationReq["Version"] = $data;
}
break;
case "MsgType":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
$SyncOrderRelationReq["MsgType"] = $data;
}
break;
case "DeviceType":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
if (strcmp ("Send_Address", $xml_element_array[($size-2)] ) == 0) {
$SyncOrderRelationReq["Send_Address"]["DeviceType"] = $data;
}
elseif (strcmp ("Dest_Address", $xml_element_array[($size-2)] ) == 0) {
$SyncOrderRelationReq["Dest_Address"]["DeviceType"] = $data;
}
}
break;
case "DeviceID":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
if (strcmp ("Send_Address", $xml_element_array[($size-2)] ) == 0) {
$SyncOrderRelationReq["Send_Address"]["DeviceID"] = $data;
}
elseif (strcmp ("Dest_Address", $xml_element_array[($size-2)] ) == 0) {
$SyncOrderRelationReq["Dest_Address"]["DeviceID"] = $data;
}
}
break;
case "UserIDType":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
if (strcmp ("FeeUser_ID", $xml_element_array[($size-2)] ) == 0) {
$SyncOrderRelationReq["FeeUser_ID"]["UserIDType"] = $data;
}
elseif (strcmp ("DestUser_ID", $xml_element_array[($size-2)] ) == 0) {
$SyncOrderRelationReq["DestUser_ID"]["UserIDType"] = $data;
}
}
break;
case "MSISDN":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
if (strcmp ("FeeUser_ID", $xml_element_array[($size-2)] ) == 0) {
$SyncOrderRelationReq["FeeUser_ID"]["MSISDN"] = $data;
}
elseif (strcmp ("DestUser_ID", $xml_element_array[($size-2)] ) == 0) {
$SyncOrderRelationReq["DestUser_ID"]["MSISDN"] = $data;
}
}
break;
case "PseudoCode":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
if (strcmp ("FeeUser_ID", $xml_element_array[($size-2)] ) == 0) {
$SyncOrderRelationReq["FeeUser_ID"]["PseudoCode"] = $data;
}
elseif (strcmp ("DestUser_ID", $xml_element_array[($size-2)] ) == 0) {
$SyncOrderRelationReq["DestUser_ID"]["PseudoCode"] = $data;
}
}
break;
case "LinkID":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
$SyncOrderRelationReq["LinkID"] = $data;
}
break;
case "ActionID":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
$SyncOrderRelationReq["ActionID"] = $data;
}
break;
case "ActionReasonID":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
$SyncOrderRelationReq["ActionReasonID"] = $data;
}
break;
case "SPID":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
$SyncOrderRelationReq["SPID"] = $data;
}
break;
case "SPServiceID":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
$SyncOrderRelationReq["SPServiceID"] = $data;
}
break;
case "AccessMode":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
$SyncOrderRelationReq["AccessMode"] = $data;
}
break;
case "FeatureStr":
if (strcmp ($current_xml_element, $xml_element_array[($size-1)] ) == 0) {
$SyncOrderRelationReq["FeatureStr"] = $data;
}
break;
default:
;
}
if ($debug > 1) {
for ($i = 0; $i < count ($xml_element_array); $i++) {
$log .= "\t\t\t".$xml_element_array[$i]."\n";
}
}
}
/*
function notation_decl_handler ($xml_parser, $notation_name, $base, $systemID, $publicID) {
;
}
function processing_instruction_handler ($xml_parser, $target, $data) {
;
}
function default_handler ($xml_parser, $data) {
;
}
*/
xml_set_element_handler ($xml_parser,"start_element_handler", "end_element_handler");
xml_set_character_data_handler ($xml_parser, "character_data_handler");
/*
xml_set_notation_decl_handler ($xml_parser, "notation_decl_handler");
xml_set_processing_instruction_handler ($xml_parser, "processing_instruction_handler");
xml_set_default_handler ($xml_parser, "default_handler");
*/
if (!xml_parse ($xml_parser, $raw_provision_xml_data)) {
sprintf ("<%s> XML error on line %d and column %d with error code %d and error string %s !\n", date("Y-m-j G:i:s"), xml_get_current_line_number ($xml_parser), xml_get_current_column_number ($xml_parser), xml_get_error_code ($xml_parser), xml_error_string (xml_get_error_code ($xml_parser)));
$log .= "<".date("Y-m-j G:i:s")."> XML error on line ".xml_get_current_line_number ($xml_parser)." and column ".xml_get_current_column_number ($xml_parser)." with error code ".xml_get_error_code ($xml_parser)." and error string ".xml_error_string (xml_get_error_code ($xml_parser))." !\n";
$log .= "==================================================================================\n";
$log_fp = fopen ("provision.log", "a+");
fwrite ($log_fp, $log);
fclose ($log_fp);
exit (1);
}
/*
TransactionID-->00110100037392
Version-->1.5.0
MsgType-->SyncOrderRelationReq
Send_Address-->DeviceType-->0
Send_Address-->DeviceID-->0011
Dest_Address-->DeviceType-->400
Dest_Address-->DeviceID-->0
FeeUser_ID-->UserIDType-->2
FeeUser_ID-->MSISDN-->
FeeUser_ID-->PseudoCode-->00116000000286
DestUser_ID-->UserIDType-->2
DestUser_ID-->MSISDN-->
DestUser_ID-->PseudoCode-->00116000000286
LinkID-->SP
ActionID-->1
ActionReasonID-->1
SPID-->919102
SPServiceID-->0000000064
AccessMode-->2
FeatureStr-->
*/
/*
DROP TABLE IF EXISTS `users`;
CREATE TABLE IF NOT EXISTS `users` (
`ID` bigint(20) unsigned NOT NULL auto_increment,
`LoginDate` datetime NOT NULL default NULL,
`LogoutDate` datetime default NULL,
`TransactionID` varchar(100) default NULL,
`Version` varchar(100) default NULL,
`MsgType` varchar(100) default NULL,
`Send_DeviceType` varchar(100) default NULL,
`Send_DeviceID` varchar(100) default NULL,
`Dest_DeviceType` varchar(100) default NULL,
`Dest_DeviceID` varchar(100) default NULL,
`Fee_UserIDType` varchar(100) default NULL,
`Fee_MSISDN` varchar(100) default NULL,
`Fee_PseudoCode` varchar(100) default NULL,
`Dest_UserIDType` varchar(100) default NULL,
`Dest_MSISDN` varchar(100) default NULL,
`Dest_PseudoCode` varchar(100) default NULL,
`LinkID` varchar(100) default NULL,
`ActionID` varchar(100) default NULL,
`ActionReasonID` varchar(100) default NULL,
`SPID` varchar(100) default NULL,
`SPServiceID` varchar(100) default NULL,
`AccessMode` varchar(100) default NULL,
`FeatureStr` varchar(100) default NULL,
`Updated` varchar(10) default NULL,
PRIMARY KEY (`ID`),
KEY `TransactionID` (`TransactionID`,`Fee_MSISDN`,`Fee_PseudoCode`,`Dest_MSISDN`,`Dest_PseudoCode`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
*/
function validate_version ($str) {
$str = trim ($str);
if ( strlen ($str) > 0) {
return $str;
}
return 0;
}
function validate_acessmode ($str) {
/*
服务的访问方式
1:WEB
2:WAP
3:SMS
*/
$str = trim ($str);
if ( strlen ($str) ==1 && ereg("[1-3]{1}", $str)) {
return $str;
}
return 0;
}
function validate_msgtype ($str) {
$str = trim ($str);
if ( strlen ($str) > 0) {
return $str;
}
return 0;
}
function validate_actionid ($str) {
/*
服务状态管理动作代码,具
体值如下:
1: 开通服务;
2: 停止服务;
3: 激活服务;
4: 暂停服务;
*/
$str = trim ($str);
if ( strlen ($str) ==1 && ereg("[1-4]{1}", $str)) {
return $str;
}
return 0;
}
function validate_action_reasonid ($str) {
/*
产生服务状态管理动作原因
的代码,具体值如下:
1:用户发起行为
2:系统发起行为
3:扣费失败导致的服务取消
4:其他
*/
$str = trim ($str);
if ( strlen ($str) ==1 && ereg("[1-4]{1}", $str)) {
return $str;
}
return 0;
}
function validate_transactionid ($str) {
/*
移动没有提供格式说明,所以这里也没发验证有效性,删除首尾空符号原值返回。
*/
$str = trim ($str);
if ( strlen ($str) > 0) {
return $str;
}
return 0;
}
function validate_deviceid ($str) {
/*
移动没有提供格式说明,所以这里也没发验证有效性,删除首尾空符号原值返回。
*/
$str = trim ($str);
if ( strlen ($str) > 0) {
return $str;
}
return 0;
}
function validate_devicetype($str) {
/*
移动没有提供格式说明,所以这里也没发验证有效性,删除首尾空符号原值返回。
*/
$str = trim ($str);
if ( strlen ($str) > 0) {
return $str;
}
return 0;
}
function validate_userid_type($str) {
/*
用户标识
1 手机号码
2 伪码
*/
$str = trim ($str);
if ( strlen ($str) == 1 && ereg("[1-2]{1}", $str)) {
return $str;
}
return 0;
}
function validate_user_msisdn ($str) {
/*
用户11位手机号
*/
$str = trim ($str);
if ( strlen ($str) == 11 && ereg("13[0-9]{9}", $str)) {
return $str;
}
return 0;
}
function validate_user_mid ($str) {
/*
用户伪码,移动的说明格式为:
XXXX+XXXXXXXXXX
前四位为省份(包括中央0999)的编号,
正则表达式中以此为依据过滤。
*/
$str = trim ($str);
if ( strlen ($str) == 14 && ereg("0(0|9)(0|1|2|3|9)(0|1|2|3|4|9)[0-9]{10}", $str)) {
return $str;
}
return 0;
}
function validate_spid ($str) {
/*
SP ID,目前只要不为空且为纯数字即判断合法。
*/
$str = trim ($str);
if ( strlen ($str) > 0 && !ereg("[^0-9]", $str)) {
return $str;
}
return 0;
}
function validate_sp_serviceid ($str) {
/*
SP Sevice_ID,长度为8(?)且为纯数字即判断合法。
*/
$str = trim ($str);
if ( strlen ($str) >0 && !ereg("[^0-9]", $str)) {
return $str;
}
return 0;
}
function validate_linkid($str) {
/*
移动没有提供格式说明,所以这里也没发验证有效性,删除首尾空符号原值返回。
*/
$str = trim ($str);
if ( strlen ($str) > 0) {
return $str;
}
return 0;
}
function validate_featurestr($str) {
/*
移动没有提供格式说明,所以这里也没发验证有效性,删除首尾空符号原值返回。
*/
$str = trim ($str);
if ( strlen ($str) > 0) {
return $str;
}
return 0;
}
function get_user_current_status($mid, $sp_serviceid) {
// 0 -> 数据库里没有用户记录。
// 其它可能返回值为:
// 1 2 3 4
global $mysql_table;
$mid = validate_user_mid ($mid);
$sp_serviceid = validate_sp_serviceid ($sp_serviceid);
connect_and_select_db();
$mysql_query = "select * from ".$mysql_table." where Fee_PseudoCode='".$mid."' and SPServiceID='".$sp_serviceid."' and Updated='yes'";
$mysql_result = mysql_query ($mysql_query);
if ($mysql_row=mysql_fetch_array($mysql_result,MYSQL_ASSOC)) {
$status = $mysql_row["ActionID"];
return $status;
close_db();
}
else {
return 0;
close_db();
}
}
function get_hret($SyncOrderRelationReq) {
/*
0 : 成功
1 : 未知错误
2-99:保留
4000-4999 为DSMP 与SP 之间的接口消息中的错误代码:
4000: 无效的msgtype
4001: 无效的action_id;
4002: 无效的action_reasonid;
4003: 无效的SP ID
4004: 无效的serviceID
4005: 无效的pseudocode
4006: 无效的accessmode
4007: MISC 同步开通服务,但SP 端已存在订购关系,且状态为开通
4008: MISC 同步开通服务,且SP 端不存在订购关系,但开通服务失败
4009: MISC 同步开通服务,但SP 端已存在订购关系, 且状态为暂停
4010: MISC 同步停止服务, 且SP 端存在订购关系, 但取消服务失败
4011: MISC 同步停止服务, 但SP 端不存在订购关系
4012: MISC 同步暂停服务, 且SP 端存在订购关系, 但暂停服务失败
4013: MISC 同步暂停服务, 但SP 端不存在订购关系
4014: MISC 同步暂停服务, 但SP 端已存在订购关系, 且状态为暂停
4015: MISC 同步激活服务, 但SP 端已存在订购关系, 且状态为开通
4016: MISC 同步激活服务, 但SP 端不存在订购关系
4017: MISC 同步激活服务, 且SP 端存在订购关系, 但激活服务失败
*/
global $mysql_table;
connect_and_select_db();
$now = date("Y-m-j G:i:s");
$TransactionID = validate_transactionid($SyncOrderRelationReq["TransactionID"]);
$Version = validate_version($SyncOrderRelationReq["Version"]);
$MsgType = validate_msgtype($SyncOrderRelationReq["MsgType"]);
$Send_DeviceType = validate_devicetype($SyncOrderRelationReq["Send_Address"]["DeviceType"]);
$Send_DeviceID = validate_deviceid($SyncOrderRelationReq["Send_Address"]["DeviceID"]);
$Dest_DeviceType = validate_devicetype($SyncOrderRelationReq["Dest_Address"]["DeviceType"]);
$Dest_DeviceID = validate_deviceid($SyncOrderRelationReq["Dest_Address"]["DeviceID"]);
$Fee_UserIDType = validate_userid_type($SyncOrderRelationReq["FeeUser_ID"]["UserIDType"]);
$Fee_MSISDN = validate_user_msisdn($SyncOrderRelationReq["FeeUser_ID"]["MSISDN"]);
$Fee_PseudoCode = validate_user_mid($SyncOrderRelationReq["FeeUser_ID"]["PseudoCode"]);
$Dest_UserIDType = validate_userid_type($SyncOrderRelationReq["DestUser_ID"]["UserIDType"]);
$Dest_MSISDN = validate_user_msisdn($SyncOrderRelationReq["DestUser_ID"]["MSISDN"]);
$Dest_PseudoCode = validate_user_mid($SyncOrderRelationReq["DestUser_ID"]["PseudoCode"]);
$LinkID = validate_linkid($SyncOrderRelationReq["LinkID"]);
$ActionID = validate_actionid($SyncOrderRelationReq["ActionID"]);
$ActionReasonID = validate_action_reasonid($SyncOrderRelationReq["ActionReasonID"]);
$SPID = validate_spid($SyncOrderRelationReq["SPID"]);
$SPServiceID = validate_sp_serviceid($SyncOrderRelationReq["SPServiceID"]);
$AccessMode = validate_acessmode($SyncOrderRelationReq["AccessMode"]);
$FeatureStr = validate_featurestr($SyncOrderRelationReq["FeatureStr"]);
if (!$MsgType) {
return 4000;
}
elseif (!$ActionID) {
return 4001;
}
elseif (!$ActionReasonID) {
return 4002;
}
elseif (!$SPID) {
return 4003;
}
elseif (!$SPServiceID) {
return 4004;
}
elseif (!$Fee_PseudoCode) {
return 4005;
}
elseif (!$AccessMode) {
return 4006;
}
else {
$user_current_service_status = intval (get_user_current_status($Fee_PseudoCode, $SPServiceID));
switch ($user_current_service_status) {
case 0: //尚无定购关系
switch ($ActionID) {
case 1:
$mysql_query = "insert into ".$mysql_table." ( LoginDate, ".
"TransactionID, ".
"Version, ".
"MsgType, ".
"Send_DeviceType, ".
"Send_DeviceID, ".
"Dest_DeviceType, ".
"Dest_DeviceID, ".
"Fee_UserIDType, ".
"Fee_MSISDN, ".
"Fee_PseudoCode, ".
"Dest_UserIDType, ".
"Dest_MSISDN, ".
"Dest_PseudoCode, ".
"LinkID, ".
"ActionID, ".
"ActionReasonID, ".
"SPID, ".
"SPServiceID, ".
"AccessMode, ".
"FeatureStr, ".
"Updated ) ".
"values ( '".$now."', ".
"'".$TransactionID."', ".
"'".$Version."', ".
"'".$MsgType."', ".
"'".$Send_DeviceType."', ".
"'".$Send_DeviceID."', ".
"'".$Dest_DeviceType."', ".
"'".$Dest_DeviceID."', ".
"'".$Fee_UserIDType."', ".
"'".$Fee_MSISDN."', ".
"'".$Fee_PseudoCode."', ".
"'".$Dest_UserIDType."', ".
"'".$Dest_MSISDN."', ".
"'".$Dest_PseudoCode."', ".
"'".$LinkID."', ".
"'".$ActionID."', ".
"'".$ActionReasonID."', ".
"'".$SPID."', ".
"'".$SPServiceID."', ".
"'".$AccessMode."', ".
"'".$FeatureStr."', ".
"'yes' ) ";
if (mysql_query ($mysql_query)) {
return 0;
}
else {
return 4008; //4008: MISC 同步开通服务,且SP 端不存在订购关系,但开通服务失败
}
break;
case 2:
return 4011; //4011: MISC 同步停止服务, 但SP 端不存在订购关系
break;
case 3:
return 4016; //4016: MISC 同步激活服务, 但SP 端不存在订购关系
break;
case 4:
return 4013; //4013: MISC 同步暂停服务, 但SP 端不存在订购关系
break;
default:
return 1;
}
break;
case 1: //已有定购关系,且服务在开通中
switch ($ActionID) {
case 1;
return 4007;
break;
case 2:
//先标志以前的同步记录Updated属性为'no'。
$mysql_query = "update ".$mysql_table." set Updated='no' where Fee_PseudoCode='".$Fee_PseudoCode."' and SPServiceID='".$SPServiceID."'";
//再将新的交易信息录入。
if (!mysql_query ($mysql_query)) {
return 4010; //4010: MISC 同步停止服务, 且SP 端存在订购关系, 但取消服务失败
}
$mysql_query = "insert into ".$mysql_table." ( LogoutDate, ".
"TransactionID, ".
"Version, ".
"MsgType, ".
"Send_DeviceType, ".
"Send_DeviceID, ".
"Dest_DeviceType, ".
"Dest_DeviceID, ".
"Fee_UserIDType, ".
"Fee_MSISDN, ".
"Fee_PseudoCode, ".
"Dest_UserIDType, ".
"Dest_MSISDN, ".
"Dest_PseudoCode, ".
"LinkID, ".
"ActionID, ".
"ActionReasonID, ".
"SPID, ".
"SPServiceID, ".
"AccessMode, ".
"FeatureStr, ".
"Updated ) ".
"values ( '".$now."', ".
"'".$TransactionID."', ".
"'".$Version."', ".
"'".$MsgType."', ".
"'".$Send_DeviceType."', ".
"'".$Send_DeviceID."', ".
"'".$Dest_DeviceType."', ".
"'".$Dest_DeviceID."', ".
"'".$Fee_UserIDType."', ".
"'".$Fee_MSISDN."', ".
"'".$Fee_PseudoCode."', ".
"'".$Dest_UserIDType."', ".
"'".$Dest_MSISDN."', ".
"'".$Dest_PseudoCode."', ".
"'".$LinkID."', ".
"'".$ActionID."', ".
"'".$ActionReasonID."', ".
"'".$SPID."', ".
"'".$SPServiceID."', ".
"'".$AccessMode."', ".
"'".$FeatureStr."', ".
"'yes' ) ";
if (mysql_query ($mysql_query)) {
return 0;
}
else {
return 4010; //4010: MISC 同步停止服务, 且SP 端存在订购关系, 但取消服务失败
}
break;
case 3:
return 4015; //4015: MISC 同步激活服务, 但SP 端已存在订购关系, 且状态为开通
break;
case 4:
//先标志以前的同步记录Updated属性为'no'。
$mysql_query = "update ".$mysql_table." set Updated='no' where Fee_PseudoCode='".$Fee_PseudoCode."' and SPServiceID='".$SPServiceID."'";
//再将新的交易信息录入。
if (!mysql_query ($mysql_query)) {
return 4012; //4012: MISC 同步暂停服务, 且SP 端存在订购关系, 但暂停服务失败
}
$mysql_query = "insert into ".$mysql_table." ( LogoutDate, ".
"TransactionID, ".
"Version, ".
"MsgType, ".
"Send_DeviceType, ".
"Send_DeviceID, ".
"Dest_DeviceType, ".
"Dest_DeviceID, ".
"Fee_UserIDType, ".
"Fee_MSISDN, ".
"Fee_PseudoCode, ".
"Dest_UserIDType, ".
"Dest_MSISDN, ".
"Dest_PseudoCode, ".
"LinkID, ".
"ActionID, ".
"ActionReasonID, ".
"SPID, ".
"SPServiceID, ".
"AccessMode, ".
"FeatureStr, ".
"Updated ) ".
"values ( '".$now."', ".
"'".$TransactionID."', ".
"'".$Version."', ".
"'".$MsgType."', ".
"'".$Send_DeviceType."', ".
"'".$Send_DeviceID."', ".
"'".$Dest_DeviceType."', ".
"'".$Dest_DeviceID."', ".
"'".$Fee_UserIDType."', ".
"'".$Fee_MSISDN."', ".
"'".$Fee_PseudoCode."', ".
"'".$Dest_UserIDType."', ".
"'".$Dest_MSISDN."', ".
"'".$Dest_PseudoCode."', ".
"'".$LinkID."', ".
"'".$ActionID."', ".
"'".$ActionReasonID."', ".
"'".$SPID."', ".
"'".$SPServiceID."', ".
"'".$AccessMode."', ".
"'".$FeatureStr."', ".
"'yes' ) ";
if (mysql_query ($mysql_query)) {
return 0;
}
else {
return 4012; //4012: MISC 同步暂停服务, 且SP 端存在订购关系, 但暂停服务失败
}
break;
default:
return 1;
}
break;
case 2: // 目前为退订状态,虽然数据库中有记录,但实际上不存在定购关系。
switch ($ActionID) {
case 1:
//先标志以前的同步记录Updated属性为'no'。
$mysql_query = "update ".$mysql_table." set Updated='no' where Fee_PseudoCode='".$Fee_PseudoCode."' and SPServiceID='".$SPServiceID."'";
//再将新的交易信息录入。
if (!mysql_query ($mysql_query)) {
return 1;
}
$mysql_query = "insert into ".$mysql_table." ( LoginDate, ".
"TransactionID, ".
"Version, ".
"MsgType, ".
"Send_DeviceType, ".
"Send_DeviceID, ".
"Dest_DeviceType, ".
"Dest_DeviceID, ".
"Fee_UserIDType, ".
"Fee_MSISDN, ".
"Fee_PseudoCode, ".
"Dest_UserIDType, ".
"Dest_MSISDN, ".
"Dest_PseudoCode, ".
"LinkID, ".
"ActionID, ".
"ActionReasonID, ".
"SPID, ".
"SPServiceID, ".
"AccessMode, ".
"FeatureStr, ".
"Updated ) ".
"values ( '".$now."', ".
"'".$TransactionID."', ".
"'".$Version."', ".
"'".$MsgType."', ".
"'".$Send_DeviceType."', ".
"'".$Send_DeviceID."', ".
"'".$Dest_DeviceType."', ".
"'".$Dest_DeviceID."', ".
"'".$Fee_UserIDType."', ".
"'".$Fee_MSISDN."', ".
"'".$Fee_PseudoCode."', ".
"'".$Dest_UserIDType."', ".
"'".$Dest_MSISDN."', ".
"'".$Dest_PseudoCode."', ".
"'".$LinkID."', ".
"'".$ActionID."', ".
"'".$ActionReasonID."', ".
"'".$SPID."', ".
"'".$SPServiceID."', ".
"'".$AccessMode."', ".
"'".$FeatureStr."', ".
"'yes' ) ";
if (mysql_query ($mysql_query)) {
return 0;
}
else {
return 4008; //4008: MISC 同步开通服务,且SP 端不存在订购关系,但开通服务失败
}
case 2:
return 4011; //4011: MISC 同步停止服务, 但SP 端不存在订购关系
break;
case 3:
return 4016; //4016: MISC 同步激活服务, 但SP 端不存在订购关系
break;
case 4:
return 4013; //4013: MISC 同步暂停服务, 但SP 端不存在订购关系
break;
default:
return 1;
}
break;
case 3: // 已存在定购关系,且现在的状态为激活。
switch ($ActionID) {
case 1:
return 4007; //4007: MISC 同步开通服务,但SP 端已存在订购关系,且状态为开通
break;
case 2:
//先标志以前的同步记录Updated属性为'no'。
$mysql_query = "update ".$mysql_table." set Updated='no' where Fee_PseudoCode='".$Fee_PseudoCode."' and SPServiceID='".$SPServiceID."'";
//再将新的交易信息录入。
if (!mysql_query ($mysql_query)) {
return 4010; //4010: MISC 同步停止服务, 且SP 端存在订购关系, 但取消服务失败
}
$mysql_query = "insert into ".$mysql_table." ( LogoutDate, ".
"TransactionID, ".
"Version, ".
"MsgType, ".
"Send_DeviceType, ".
"Send_DeviceID, ".
"Dest_DeviceType, ".
"Dest_DeviceID, ".
"Fee_UserIDType, ".
"Fee_MSISDN, ".
"Fee_PseudoCode, ".
"Dest_UserIDType, ".
"Dest_MSISDN, ".
"Dest_PseudoCode, ".
"LinkID, ".
"ActionID, ".
"ActionReasonID, ".
"SPID, ".
"SPServiceID, ".
"AccessMode, ".
"FeatureStr, ".
"Updated ) ".
"values ( '".$now."', ".
"'".$TransactionID."', ".
"'".$Version."', ".
"'".$MsgType."', ".
"'".$Send_DeviceType."', ".
"'".$Send_DeviceID."', ".
"'".$Dest_DeviceType."', ".
"'".$Dest_DeviceID."', ".
"'".$Fee_UserIDType."', ".
"'".$Fee_MSISDN."', ".
"'".$Fee_PseudoCode."', ".
"'".$Dest_UserIDType."', ".
"'".$Dest_MSISDN."', ".
"'".$Dest_PseudoCode."', ".
"'".$LinkID."', ".
"'".$ActionID."', ".
"'".$ActionReasonID."', ".
"'".$SPID."', ".
"'".$SPServiceID."', ".
"'".$AccessMode."', ".
"'".$FeatureStr."', ".
"'yes' ) ";
if (mysql_query ($mysql_query)) {
return 0;
}
else {
return 4010; //4010: MISC 同步停止服务, 且SP 端存在订购关系, 但取消服务失败
}
break;
case 3:
return 4015; //4015: MISC 同步激活服务, 但SP 端已存在订购关系, 且状态为开通
break;
case 4:
//先标志以前的同步记录Updated属性为'no'。
$mysql_query = "update ".$mysql_table." set Updated='no' where Fee_PseudoCode='".$Fee_PseudoCode."' and SPServiceID='".$SPServiceID."'";
//再将新的交易信息录入。
if (!mysql_query ($mysql_query)) {
return 4012; //4012: MISC 同步暂停服务, 且SP 端存在订购关系, 但暂停服务失败
}
$mysql_query = "insert into ".$mysql_table." ( LogoutDate, ".
"TransactionID, ".
"Version, ".
"MsgType, ".
"Send_DeviceType, ".
"Send_DeviceID, ".
"Dest_DeviceType, ".
"Dest_DeviceID, ".
"Fee_UserIDType, ".
"Fee_MSISDN, ".
"Fee_PseudoCode, ".
"Dest_UserIDType, ".
"Dest_MSISDN, ".
"Dest_PseudoCode, ".
"LinkID, ".
"ActionID, ".
"ActionReasonID, ".
"SPID, ".
"SPServiceID, ".
"AccessMode, ".
"FeatureStr, ".
"Updated ) ".
"values ( '".$now."', ".
"'".$TransactionID."', ".
"'".$Version."', ".
"'".$MsgType."', ".
"'".$Send_DeviceType."', ".
"'".$Send_DeviceID."', ".
"'".$Dest_DeviceType."', ".
"'".$Dest_DeviceID."', ".
"'".$Fee_UserIDType."', ".
"'".$Fee_MSISDN."', ".
"'".$Fee_PseudoCode."', ".
"'".$Dest_UserIDType."', ".
"'".$Dest_MSISDN."', ".
"'".$Dest_PseudoCode."', ".
"'".$LinkID."', ".
"'".$ActionID."', ".
"'".$ActionReasonID."', ".
"'".$SPID."', ".
"'".$SPServiceID."', ".
"'".$AccessMode."', ".
"'".$FeatureStr."', ".
"'yes' ) ";
if (mysql_query ($mysql_query)) {
return 0;
}
else {
return 4012; //4012: MISC 同步暂停服务, 且SP 端存在订购关系, 但暂停服务失败
}
break;
default:
return 1;
}
break;
case 4: // 存在用户定购关系,现在为暂停服务状态。
switch ($ActionID) {
case 1:
return 4009; //4009: MISC 同步开通服务,但SP 端已存在订购关系, 且状态为暂停
break;
case 2:
return 4010; //4010: MISC 同步停止服务, 且SP 端存在订购关系, 但取消服务失败
break;
case 3:
//先标志以前的同步记录Updated属性为'no'。
$mysql_query = "update ".$mysql_table." set Updated='no' where Fee_PseudoCode='".$Fee_PseudoCode."' and SPServiceID='".$SPServiceID."'";
//再将新的交易信息录入。
if (!mysql_query ($mysql_query)) {
return 4017; //4017: MISC 同步激活服务, 且SP 端存在订购关系, 但激活服务失败
}
$mysql_query = "insert into ".$mysql_table." ( LoginDate, ".
"TransactionID, ".
"Version, ".
"MsgType, ".
"Send_DeviceType, ".
"Send_DeviceID, ".
"Dest_DeviceType, ".
"Dest_DeviceID, ".
"Fee_UserIDType, ".
"Fee_MSISDN, ".
"Fee_PseudoCode, ".
"Dest_UserIDType, ".
"Dest_MSISDN, ".
"Dest_PseudoCode, ".
"LinkID, ".
"ActionID, ".
"ActionReasonID, ".
"SPID, ".
"SPServiceID, ".
"AccessMode, ".
"FeatureStr, ".
"Updated ) ".
"values ( '".$now."', ".
"'".$TransactionID."', ".
"'".$Version."', ".
"'".$MsgType."', ".
"'".$Send_DeviceType."', ".
"'".$Send_DeviceID."', ".
"'".$Dest_DeviceType."', ".
"'".$Dest_DeviceID."', ".
"'".$Fee_UserIDType."', ".
"'".$Fee_MSISDN."', ".
"'".$Fee_PseudoCode."', ".
"'".$Dest_UserIDType."', ".
"'".$Dest_MSISDN."', ".
"'".$Dest_PseudoCode."', ".
"'".$LinkID."', ".
"'".$ActionID."', ".
"'".$ActionReasonID."', ".
"'".$SPID."', ".
"'".$SPServiceID."', ".
"'".$AccessMode."', ".
"'".$FeatureStr."', ".
"'yes' ) ";
if (mysql_query ($mysql_query)) {
return 0;
}
else {
return 4017; //4017: MISC 同步激活服务, 且SP 端存在订购关系, 但激活服务失败
}
break;
case 4:
return 4014; //4014: MISC 同步暂停服务, 但SP 端已存在订购关系, 且状态为暂停
break;
default:
return 1;
}
break;
default:
return 1;
}
}
}
$log .="<".date("Y-m-j G:i:s")."> XML SyncOrderRelationResponse constructed as below:\n";
$hret = get_hret ($SyncOrderRelationReq);
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
$log .= "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
echo "<SOAP-ENV:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\">\n";
$log .= "<SOAP-ENV:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\">\n";
echo "<SOAP-ENV:Header>\n";
$log .= "<SOAP-ENV:Header>\n";
echo "<TransactionID xmlns=\"http://www.monternet.com/dsmp/schemas/\">".$SyncOrderRelationReq["TransactionID"]."</TransactionID>\n";
$log .= "<TransactionID xmlns=\"http://www.monternet.com/dsmp/schemas/\">".$SyncOrderRelationReq["TransactionID"]."</TransactionID>\n";
echo "</SOAP-ENV:Header>\n";
$log .= "</SOAP-ENV:Header>\n";
echo "<SOAP-ENV:Body>\n";
$log .= "<SOAP-ENV:Body>\n";
echo "<SyncOrderRelationResp xmlns=\"http://www.monternet.com/dsmp/schemas/\">\n";
$log .= "<SyncOrderRelationResp xmlns=\"http://www.monternet.com/dsmp/schemas/\">\n";
echo "<Version>1.5.0</Version>\n";
$log .= "<Version>1.5.0</Version>\n";
echo "<MsgType>SyncOrderRelationResp</MsgType>\n";
$log .= "<MsgType>SyncOrderRelationResp</MsgType>\n";
echo "<hRet>".$hret."</hRet>\n";
$log .= "<hRet>".$hret."</hRet>\n";
echo "</SyncOrderRelationResp>\n";
$log .= "</SyncOrderRelationResp>\n";
echo "</SOAP-ENV:Body>\n";
$log .= "</SOAP-ENV:Body>\n";
echo "</SOAP-ENV:Envelope>\n";
$log .= "</SOAP-ENV:Envelope>\n";
$log .= "==================================================================================\n";
$log_fp = fopen ("provision.log", "a+");
fwrite ($log_fp, $log);
fclose ($log_fp);
?>
这是一条镜像帖。来源:北邮人论坛 / linux / #3796同步于 1 周前
Linux机器人发帖
移动的MISC接口,PHP实现的SOAP解析的Provision计费平台。
jerrytian
1 周前镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。