GuanYiCloud.php 9.0 KB
<?php
/**
 * Created by PhpStorm.
 * User: 86132
 * Date: 2020/12/1
 * Time: 14:03
 */

namespace app\api\controller;

use app\common\controller\Api;


/**
 * 管易云API
 */
class GuanYiCloud extends Api
{
    protected $noNeedLogin = ['*'];
    protected $noNeedRight = ['*'];


//获取店铺信息
    function getShops()
    {
        $data = array();
        $data['appkey'] = APPKEY;
        $data['sessionkey'] = SESSIONKEY;
        $data['method'] = 'gy.erp.shop.get';
        $data['page_no'] = '1';
        $data['page_size'] = '100';
        $data['sign'] = $this->sign($data, SECRET);
        $this->success('成功', json_decode($this->mycurl(URL, $data)));
    }

// 会员查询
    function getVip()
    {
        $data = array();
        $data['appkey'] = APPKEY;
        $data['sessionkey'] = SESSIONKEY;
        $data['method'] = 'gy.erp.vip.get';
        $data['page_no'] = '1';
        $data['page_size'] = '10';
        $data['sign'] = $this->sign($data, SECRET);
        $this->success('成功', json_decode($this->mycurl(URL, $data)));
    }

    // 会员新增
    function addVip()
    {
        $data = array();
        $data['appkey'] = APPKEY;
        $data['sessionkey'] = SESSIONKEY;
        $data['method'] = 'gy.erp.vip.add';
        //会员代码
        $data['code'] = 'bronettest111';
        //会员名称
        $data['name'] = '百荣测试会员新增';
        //所属店铺
        $data['shop_code'] = 'ZCZXCX';
        //地址列表
        $receive_infos = array();
        $receive_infos[] = array(
            //名称
            'name' => '地址',
            //收货人
            'receiver' => '收货人',
            //收获手机
            'mobile' => 13292442918,
            //收货详细地址
            'address' => '收货详细地址'
        );
        $data['receive_infos'] = $receive_infos;


        $data['sign'] = $this->sign($data, SECRET);
        $this->success('成功', json_decode($this->mycurl(URL, $data)));
    }

//获取仓库信息
    function getWarehouses()
    {
        $data = array();
        $data['appkey'] = APPKEY;
        $data['sessionkey'] = SESSIONKEY;
        $data['method'] = 'gy.erp.warehouse.get';
        $data['page_no'] = '1';
        $data['page_size'] = '10';
        // $data['code'] = '001';
        $data['sign'] = $this->sign($data, SECRET);
        $this->success('成功', json_decode($this->mycurl(URL, $data)));
    }

// 商品查询
    function getGoods()
    {
        $data = array();
        $data['appkey'] = APPKEY;
        $data['sessionkey'] = SESSIONKEY;
        $data['method'] = 'gy.erp.items.get';
        $data['page_no'] = '1';
        $data['page_size'] = '10';
        // $data['code'] = 'ZZLN000005';
        $data['sign'] = $this->sign($data, SECRET);
        $this->success('成功', json_decode($this->mycurl(URL, $data)));
    }


//获取订单 $OrderSn 平台单号
    public function getOrders()
    {
        $data = array();
        $data['appkey'] = APPKEY;
        $data['sessionkey'] = SESSIONKEY;
        $data['method'] = 'gy.erp.trade.get';
        $data['platform_code'] = 'Brone1t81881';
        // $date['receiver_mobile']='15928552965';
        $data['sign'] = $this->sign($data, SECRET);
        $Array = json_decode(json_encode(json_decode($this->mycurl(URL, $data))), true);
        //验证
        if (empty($Array['orders'])) {
            $this->error('获取订单失败:单号' . '231');
        }
        $delivery_state = $Array['orders'][0]['delivery_state'];
        $refund = $Array['orders'][0]['details'][0]['refund'];
        $platform_code = $Array['orders'][0]['platform_code'];
        if (!empty($Array['orders'][0]['deliverys'])) {
            $express_name = $Array['orders'][0]['deliverys'][0]['express_name'];
            $express_code = $Array['orders'][0]['deliverys'][0]['express_code'];
            $mail_no = $Array['orders'][0]['deliverys'][0]['mail_no'];
        } else {
            $express_name = '';
            $express_code = '';
            $mail_no = '';
        }
        $Return = [
            //发货状态 0-未发货//1-部分发货//2-全部发货
            'delivery_state' => $delivery_state,
            //平台单号
            'platform_code' => $platform_code,
            //快递公司名称
            'express_name' => $express_name,
            //快递公司代码
            'express_code' => $express_code,
            //快递单号
            'mail_no' => $mail_no
        ];
        $Json = json_encode($Return);
        return $Json;
    }


//新增订单
    function addOrder()
    {
        $data = array();
        $data['appkey'] = APPKEY;
        $data['sessionkey'] = SESSIONKEY;
        $data['method'] = 'gy.erp.trade.add';
        //订单类型 //Sales-销售订单//Return-换货订单//Charge-费用订单//Delivery-补发货订单//Invoice-补发票订单
        $data['order_type_code'] = 'Sales';
        //退款状态 //0:未退款//1:退款完成//2:退款中
        $data['refund'] = 0;
        //仓库代码 未提供时,根据系统仓库匹配规则自动分配仓库,若内部服务调用超时,调用多次无果,相关项留空进行订单新增,调用结果按创建成功返回
//        $data['warehouse_code'] = 'CK001';
        //店铺代码
        $data['shop_code'] = 'ZCZXCX';
        //未提供时,根据系统快递公司匹配规则自动分配快递公司,若内部服务调用超时,调用多次无果,相关项留空进行订单新增,调用结果按创建成功返回
//        $data['express_code'] = 'sto';
        $random_code = time(); //获取当前时间戳,以时间戳做平台单号可以防止重复,避免出错,此方式仅为测试
        //平台单号
        $data['platform_code'] = 'Brone1t81881';
        //下单时间
        $data['deal_datetime'] = '2020-12-01 14:39:23';
        //支付时间
        $data['pay_datetime'] = '2015-09-09 10:47:00';
        //会员代码
        $data['vip_code'] = 'bronettest';
        //买家留言
        $data['buyer_memo'] = '这是买家留言';
        //收货人
        $data['receiver_name'] = '王叨叨';
        $data['receiver_mobile'] = '13292442918';
        $data['receiver_address'] = '鑫茂科技园F座412';
        $data['receiver_province'] = '天津';
        $data['receiver_city'] = '天津市';
        $data['receiver_district'] = '南开区';
        $details = array();
        $details[] = array(
            //商品代码
            'item_code' => '4060250152',
            //规格代码
//            'sku_code' => 'A002012',
            //实际单价
            'price' => 9.99,
            //商品数量
            'qty' => 2,
            //0:未退款//1:退款完成//2:退款中
//            'refund' => 0
        );
        $data['details'] = $details;
        $payments = array();
        $payments[] = array(
            //支付放视
            'pay_type_code' => 'WechatPay',
            //支付金额
            'payment' => 22.03,
            //交易号
            'pay_code' => 9.99,
            //支付时间
            'paytime' => $random_code * 1000
        );
        $data['payments'] = $payments;
        $invoices = array();
        $invoices[] = array(
            //发票部分
            'invoice_type' => 1,
            'invoice_title' => '上海管易云计算软件有限公司kkkkk',
            'invoice_content' => '明细',
            'invoice_amount' => '88.90'
        );
        $data['invoices'] = $invoices;
        $data['sign'] = $this->sign($data, SECRET);
        echo 'response: ' . $this->mycurl(URL, $data);
//        $Array = json_decode(json_encode(json_decode($this->mycurl(URL, $data))), true);
        //订单单据编号
        //SO285064111288
//        dump($Array['code']);
    }

    /*Config*/
    function mycurl($url, $data)
    {
        $data_string = $this->json_encode_ch($data);
        $data_string = urlencode($data_string);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type:text/json;charset=utf-8',
            'Content-Length:' . strlen($data_string)
        ));
        $content = curl_exec($ch);
        curl_close($ch);
        return $content;
    }

    function sign($data, $secret)
    {
        if (empty($data)) {
            return "";
        }
        unset($data['sign']); //可选,具体看传参
        $data = $this->json_encode_ch($data);
        $sign = strtoupper(md5($secret . $data . $secret));
        return $sign;
    }

    function json_encode_ch($arr)
    {
        return urldecode(json_encode($this->url_encode_arr($arr)));
    }

    function url_encode_arr($arr)
    {
        if (is_array($arr)) {
            foreach ($arr as $k => $v) {
                $arr[$k] = $this->url_encode_arr($v);
            }
        } elseif (!is_numeric($arr) && !is_bool($arr)) {
            $arr = urlencode($arr);
        }
        return $arr;
    }
}