NuSOAP详细项目案例

最近对一个中型网站进行二次开中,碰到关于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,不懂的慢慢看吧,看不懂的直接复制粘帖 ,简单修改就可以运行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值