tp框架 thinkphp对接金蝶云星空系统

thinkphp对接金蝶云星空系统,金蝶系统是强大的财务系统,可对公司的财务进行整理,为金蝶系统生成各种单据。下面是php对接金蝶的流程。

金蝶系统是强大的财务系统,可对公司的财务进行整理,为金蝶系统生成各种单据。下面是php对接金蝶的流程。

各种方法已经封装好,直接可以调用就行了。

1、如果是用的TP框架,请将下面的方法放在common.php中,方便系统调用。

 /*****=======================================对接金蝶需要用到的方法==========================================================******/

 /**

  * 利用curl函数来获取接口数据

  * @param $url

  * @param $post_content

  * @param $cookie_jar

  * @param $isLogin

  * @return bool|string

  */

 function invoke_post($url,$post_content,$cookie_jar,$isLogin)

 {

     $ch = curl_init($url);

     $this_header = array(

         'Content-Type: application/json',

         'Content-Length: '.strlen($post_content)

     );

     curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');

     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

     curl_setopt($ch, CURLOPT_HTTPHEADER, $this_header);

     curl_setopt($ch, CURLOPT_POSTFIELDS, $post_content);

     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

     if($isLogin){

         curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);

     }

     else{

         curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_jar);

     }

     curl_setopt($ch, CURLOPT_TIMEOUT, 30);

     $result = curl_exec($ch);

     curl_close($ch);

     return $result;

 }

 //构造Web API请求格式

 function create_postdata($args) {

     $postdata = array(

         'format'=>1,

         'useragent'=>'ApiClient',

         'rid'=>create_guid(),

         'parameters'=>$args,

         'timestamp'=>date('Y-m-d'),

         'v'=>'1.0'

     );

     return json_encode($postdata);

 }

 //生成guid

 function create_guid() {

     $charid = strtoupper(md5(uniqid(mt_rand(), true)));

     $hyphen = chr(45);// "-"

     $uuid = chr(123)// "{"

         .substr($charid, 0, 8).$hyphen

         .substr($charid, 8, 4).$hyphen

         .substr($charid,12, 4).$hyphen

         .substr($charid,16, 4).$hyphen

         .substr($charid,20,12)

         .chr(125);// "}"

     return $uuid;

 }

 //登陆

 function invoke_login($cloudUrl,$post_content,$cookie_jar)

 {

     $loginurl = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc';

     return invoke_post($loginurl,$post_content,$cookie_jar,TRUE);

 }

 //保存

 function invoke_save($cloudUrl,$post_content,$cookie_jar)

 {

     $invokeurl = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc';

     return invoke_post($invokeurl,$post_content,$cookie_jar,FALSE);

 }

 //审核

 function invoke_audit($cloudUrl,$post_content,$cookie_jar)

 {

     $invokeurl = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc';

     return invoke_post($invokeurl,$post_content,$cookie_jar,FALSE);

 }

 //查看

 function invoke_view($cloudUrl,$post_content,$cookie_jar)

 {

     $invokeurl = $cloudUrl.'Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.View.common.kdsvc';

     return invoke_post($invokeurl,$post_content,$cookie_jar,FALSE);

 }

 /*****************************************对接金蝶的方法结束************************************************************/

2、将一些配置项直接在类里面定义好,避免重复多次的书写

//类的创建根据自己的需要来自行创建

class OrderController extends BaseController

{

    protected  $cloudUrl    = '自己金蝶的域名或者是IP地址/K3Cloud/';

    protected  $login       = array('套账id','账号','密码',2052);

    public function index(){

    /*方法内部*/

}

}

3、金蝶的所有操作都需要在登录的状态下进行操作 ,所以就需要先进行登录操作。在你需要生成金蝶报表的时候添加如下的代码:

/*对接金蝶系统,先做登录,在登录的会话下进行其他操作*/

            $cookie_jar = tempnam('./tmp','CloudSession');//保存登录后的session

            $post_content = create_postdata($this->login);

            /*返回登录信息如果 LoginResultType == 1 说明登录成功*/

            $result = json_decode(invoke_login($this->cloudUrl,$post_content,$cookie_jar),true);

            /*判断成功之后在进行其他操作*/

            if($result['LoginResultType'] == 1){

            /*在这里面进行金蝶报表的生成操作*/

}

4、登录成功之后就可以进行报表的操作了,金蝶报表的操作主要靠json来操作,这个json一定要生成正确。这里给大家讲一下怎样做能尽量避免问题。

4.1 首先以开发者的身份登录到金蝶账号中,在右面的菜单中找到webAPI菜单

tp框架 thinkphp对接金蝶云星空系统

4.2 然后再左侧选择你要生成的报表的名称,在右面选择你要调用的接口,就会有相应的说明。

tp框架 thinkphp对接金蝶云星空系统

4.3 然后点击上面的 在线测试webAPI 按钮,出现调试框:

tp框架 thinkphp对接金蝶云星空系统

4.4然后选择自己要调用的接口,来填写测试数据。

tp框架 thinkphp对接金蝶云星空系统

4.5 填写完成测试数据之后点击返回数据就可以

4.6 返回的数据最好验证下,避免有必填项遗漏掉。

5、数据格式没问题之后就可以用代码来生成金蝶订单了。具体操作如下:

 /*判断成功之后在进行其他操作*/

 if($result['LoginResultType'] == 1){

 $data_model = '{

     "Creator": "",

     "NeedUpDateFields": [],

     "NeedReturnFields": [],

     "IsDeleteEntry": "true",

     "SubSystemId": "",

     "IsVerifyBaseDataField": "false",

     "IsEntryBatchFill": "true",

     "ValidateFlag": "true",

     "NumberSearch": "true",

     "InterationFlags": "",

     "IsAutoSubmitAndAudit": "false",

     "Model": {

         "FID": 0,

         "FBillTypeID": {

             "FNUMBER": "DKSKD000001"

         },

         "FDATE": "2020-05-14 00:00:00",

         "FCONTACTUNITTYPE": "BD_Customer",

         "FPAYUNITTYPE": "BD_Customer",

         "FCURRENCYID": {

             "FNumber": "PRE001"

         },

         "FPAYORGID": {

             "FNumber": "100"

         },

         "FSETTLERATE": 1.0,

         "FSETTLEORGID": {

             "FNumber": "100"

         },

         "FSALEORGID": {

             "FNumber": "100"

         },

         "FDOCUMENTSTATUS": "Z",

         "FBUSINESSTYPE": "1",

         "FISINIT": false,

         "FEXCHANGERATE": 1.0,

         "FCancelStatus": "A",

         "FSETTLECUR": {

             "FNUMBER": "PRE001"

         },

         "FISB2C": false,

         "FIsWriteOff": false,

         "FSETTLEMAINBOOKID": {

             "FNUMBER": "PRE001"

         },

         "FISCARRYRATE": false,

         "FRECEIVEBILLENTRY": [

             {

                 "FPURPOSEID": {

                     "FNumber": "SFKYT01_SYS"

                 },

                 "FPOSTDATE": "2020-05-14 00:00:00"

             }

         ]

     }

 }';

 $kingdee_info = array(

                             '你要操作订单的表单号,测试的时候那个蓝框里的内容',//业务对象标识FormId 报表不同 表单号不同,切记

                             $data_model//具体Json字串

                         );

  $post_content = create_postdata($kingdee_info);

 $res = json_decode(invoke_save($this->cloudUrl,$post_content,$cookie_jar),true) ;

 //可以打印$res来查看自己的报表生成结果

 }

6、到此,金蝶的报表生成就结束了,需要注意的是$data_model 的json中的数据 需要换成自己的数据。注意:金蝶里好多字段都是金蝶的编码,要做好本地系统和金蝶系统的编码对应。

转载作品,原作者:心平氣和,文章来源:https://www.toutiao.com/article/7117452599141483041

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年7月7日 17:24
下一篇 2022年7月11日 10:22

相关推荐

  • PHP对接chatgpt使用方法

    PHP对接chatgpt使用方法,教大家如何对接chatgpt 使用curl请求官方api

    2023年2月25日
    09520
  • PHP使用http_build_query()构造URL字符串的方法

    1、明确需求 实战工作中经常会请求各种各样的接口,例如 • 微信网页授权接口 • 高德周边检索接口 • 发现:下图是根据接口文档开发后的代码,发现代码可读性差(ps. 参数的作用不…

    2021年12月5日 Php
    02220
  • HarmonyOS鸿蒙开发环境配置

    HarmonyOS鸿蒙配置开发环境,应用/服务支持API Version 4至9,首次使用DevEco Studio,工具的配置向导会引导您下载SDK及工具链。配置向导默认下载 API Version 9的SDK及工具链,如需下载API Version 4至8,可在工程配置完成后,进入HarmonyOS SDK界面手动下载,方法如下

    2024年1月19日 编程语言
    0900
  • PHP为任意页面设置访问密码源代码

    PHP为任意页面设置访问密码源代码

    Php 2024年8月28日
    0510
  • PHPStorm和ThinkPHP 的使用

    PHPStorm和ThinkPHP 的使用,thinkPHP完全开发手册,安装ThinkPHP框架

    Php 2022年4月21日
    05680
  • 使用PHP处理RabbitMQ消息队列的应用

    使用PHP处理RabbitMQ消息队列的应用,消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。

    2024年9月5日
    0620

发表回复

登录后才能评论
分享本页
返回顶部