您的位置:首页 > 其它

NuSOAP详细项目案例

2016-03-15 17:47 246 查看
最近对一个中型网站进行二次开中,碰到关于nusoap的使用。本人有幸参考原来前辈写的案例:特此拿出来分享。

基础问题直接跳过,下面有

NuSOAP webservice接口使用详解

的网址。

好了。上代码。

服务端的代码如下:

<?php

/**

* Created by JetBrains PhpStorm.

* User: Administrator

* Date: 16-3-11

* Time: 下午1:52

* To change this template use File | Settings | File Templates.

* OLOCrm 会员信息yuCRM系统同步,内容包括,人员,订单等信息同步,发送站内信三个功能

*/

// add some library - start

require_once("../../index_service.php");

// - end

require_once("../lib/nusoap.php");

//订单信息参数

function order_info($data){

// $dbConnection = new PDO('mysql:dbname= ;host=localhost;charset=utf8', 'root', 'yang');

// $dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

// $dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//

// $stmt = $dbConnection->prepare('select order_sn,store_name,buyer_name,add_time,order_amount,shipping_fee,payment_name,order_state,store_id,seller_id,buyer_id,buyer_email from derytech_order where add_time >= :sku');

// $stmt->execute(array('data' => $data));

// $row= $stmt->fetchAll();

$row =Model()->query("select * from derytech_order where add_time >= {$data}");

return $row;

}

//参数方法

function OrderDataToCrm($data){

$OrderData = array();

try{

$list= order_info($data);

$index = 0 ;

foreach($list as $val){

$OrderData[$index]=array(

//订单号

'order_sn' => $val['order_sn'],

//店铺

'store_name' => $val['store_name'],

//买家

'buyer_name' => $val['buyer_name'],

//下单时间

'add_time' => $val['add_time'],

//订单总额

'order_amount' => $val['order_amount'],

//运费

'shipping_fee' => $val['shipping_fee'],

//支付方式

'payment_name' => $val['payment_name'],

//订单状态

'order_state' => $val['order_state'],

//店铺ID

'store_id' => $val['store_id'],

//卖家ID

'seller_id' => $val['seller_id'],

//买家ID

'buyer_id' => $val['buyer_id'],

//买家Email

'buyer_email'=>$val['buyer_email'],

);

$index++;

}

}catch(Exception $ex){

return null;

}

return $OrderData;

}

//初始化服务对象

//AppsBrandCarInfo('30');

$server = new nusoap_server();

$server->soap_defencoding = 'UTF-8';

$server->decode_utf8 = false;

$server->xml_encoding = 'UTF-8';

$server->configureWSDL('OrderDataToCrmwsdl');

$server->wsdl->addComplexType(

'orderInfo',

'complexType',

'struct',

'all',

'',

array(

'order_sn'=>array('name'=>'order_sn', 'type'=>'xsd:string'),

'store_name'=>array('name'=>'store_name', 'type'=>'xsd:string'),

'buyer_name'=>array('name'=>'buyer_name', 'type'=>'xsd:string'),

'add_time'=>array('name'=>'add_time', 'type'=>'xsd:string'),

'youhao'=>array('goods_name'=>'youhao', 'type'=>'xsd:string'),

'order_amount'=>array('name'=>'order_amount', 'type'=>'xsd:float'),

'shipping_fee'=>array('name'=>'shipping_fee', 'type'=>'xsd:float'),

'payment_name'=>array('name'=>'payment_name', 'type'=>'xsd:string'),

'order_state'=>array('name'=>'order_state', 'type'=>'xsd:int'),

'store_id'=>array('name'=>'store_id', 'type'=>'xsd:int'),

'seller_id'=>array('name'=>'seller_id', 'type'=>'xsd:int'),

'buyer_id'=>array('name'=>'buyer_id', 'type'=>'xsd:int'),

'buyer_email'=>array('name'=>'buyer_email', 'type'=>'xsd:string'),

));

$server->wsdl->addComplexType(

'orderInfoArray',

'complexType',

'array',

'',

'SOAP-ENC:Array',

array(),

array(

array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:orderInfo[]')

),

'tns:orderInfo'

);

//$server->register('OrderDataToCrm',array('data'=>'xsd:sting'), array('return'=>'tns:parameterInfo'));

$server->register('OrderDataToCrm',array('data'=>'xsd:string'),array('return'=>'tns:orderInfoArray'));

//最后一步,把客户端通过 post 方式提交的数据,传递给服务对象的 service 方法。

//service 方法处理输入的数据,调用相应的函数或方法,并且生成正确的反馈,传回给客户端。

// Use the request to (try to) invoke the service

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';

$server->service($HTTP_RAW_POST_DATA);

这是对于SHOPNC的二次开发。所以数据库查询方面有PDO和SHOPNC的两种查询方式,可以直接忽略。

最关键的部分已经用红色字体标注了。如果是一维数组可以直接屏蔽掉红色代码,简单修改可以使用。

如果是二维数组的化,(对未接触过nusoap的我,可是头疼了两天)。不过好在可以照抄前辈的。

客户端:

require_once("lib/nusoap.php");

$client = new soapclient('http://localhost/souce/public_html/api/samples/MemberDataToCrm.php?wsdl',true);

//$proxy=$client -> getProxy(); // 创建代理对象 (soap_proxy 类 )

//$str=$proxy->MemberDataToCrm(); // 直接调用 WEB 服务

$result = $client->call('MemberDataToCrm');

print_r($result);

OL,不懂的慢慢看吧,看不懂的直接复制粘帖 ,简单修改就可以运行了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: