Python做Web API对接---审核接口
3人赞赏了该文章
4,319次浏览
编辑于2019年04月21日 17:30:03
摘要由AI智能服务提供
本文主要介绍了在Web API中如何操作单据审核接口,包括自动提交+审核的设置方法,并以采购订单为例,详细说明了对接所需的三大利器:URL、Data(请求参数)和Cookies(用户验证),以及如何通过Python代码实现单据的审核操作,包括登录函数和审核请求的编写,最后提供了QQ群号以便用户交流和解决问题。
今天接着来分享一下Web API中的单据审核接口(反审核接口和它的是一模一样的)。实际上,如果需要API写入的单据自动审核的话,在单据保存时就可以让它自动提交审核了,
在保存请求参数里面 IsAutoSubmitAndAudit == true,它就会自动提交+审核了。无需再另外去调用审核接口。
好了,闲话不多说,进入正题:下面我以采购订单为例子进行讲解分析:首先,同样地,我们需要准备好对接的三大利器:1:URL(链接):审核接口的URL是:https://自己企业的登录域名 +K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc (固定不变)举个例子,如果贵公司的登录域名是:https://thisisatest.ik3cloud.com,那么,审核接口的URL就应该是:https://thisisatest.ik3cloud.com/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc顺便说明一下,我上面举例是用https协议的,而有的企业是http协议的,如果是的话,就要使用http协议。尽量复制域名,这样才不会出错,也别多复制一个k3cloud哈。2: Data(即请求参数):打开金蝶的Web API功能,可以看到审核接口的请求参数有,如图所示:这个接口的请求参数是非常少的。同时,你也要记住一个规则,金蝶云的Web API有个特点,非必填的参数是可以不用传的。因此,如果你是想通过单据编号去审核指定单据的话,你的请求参数应该是:post_data={"FormId":"PUR_PurchaseOrder","Data":{"Numbers": ["test"]}},Numbers对应的value是列表,它支持批量审核单据。千万别忘了,"Data"里面的value包数据必须是json格式的,这个需要用到json里面的dumps方法就完胜搞定,下面我会给例子。
3:Cookies(用户验证,基于HTTP协议的)之前的文章已经说了如何通过API登录验证,这里就不多说了,需要看的话,点击链接查看即可:https://vip.kingdee.com/article/45012这里只是说一下,除了登录校验不需要cookies,其他的API接口都需要携带cookies进行操作的。建议写一个登录函数,然后返回 cookies,即可每次携带cookies访问了。可参照我下面的函数。如果没有携带,会出现如下的返回信息:{"Result":{"ResponseStatus":{"ErrorCode":500,"IsSuccess":false,"Errors":[{"FieldName":null,"Message":"Context Is Null","DIndex":0}],"SuccessEntitys":[],"SuccessMessages":[],"MsgCode":1}}}我也看不懂,反正'IsSuccess'==False,我就知道是操作失败了。-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------好了,三大利器准备好了,我就直接上Python代码了:import json,requests
login_url="https://pocknoiral.ik3cloud.com/k3cloud/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc"
audit_url="https://pocknoiral.ik3cloud.com/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc"
login_data={ "acctid":"20180321174312","username":"你的用户名","password":"你的密码","lcid":2052}
def login(): # 定义登录函数
login_response=requests.post(url=login_url,data=login_data)
return login_response.cookies # 返回cookies,方便下次访问时携带
post_data={"FormId":"PUR_PurchaseOrder","Data":json.dumps({"Numbers": ["test"]})}
response=requests.post(url=audit_url,data=post_data,cookies=login())
print(response.text){"Result":{"ResponseStatus":{"IsSuccess":true,"Errors":[],"SuccessEntitys":[{"Id":100006,"Number":"test","DIndex":0}],"SuccessMessages":[],"MsgCode":0}}}返回信息中,"IsSuccess"==true,就说明审核成功了。非常感谢!!!
其他的分享,请关注评论内容,里面有链接。
-----------------------------------------------------------------------------------------------------------------------------------------------------------另外,如果大家有遇到问题,随时可以加我建立的QQ群:712623210 (金蝶云Web API系统集成沟通群) 。只要我能解决的,都会帮忙,毕竟大家都是一个行业的,相互交流,学习。-----------------------------------------------------------------------------------------------------------------------------------------------------------
在保存请求参数里面 IsAutoSubmitAndAudit == true,它就会自动提交+审核了。无需再另外去调用审核接口。
好了,闲话不多说,进入正题:下面我以采购订单为例子进行讲解分析:首先,同样地,我们需要准备好对接的三大利器:1:URL(链接):审核接口的URL是:https://自己企业的登录域名 +K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc (固定不变)举个例子,如果贵公司的登录域名是:https://thisisatest.ik3cloud.com,那么,审核接口的URL就应该是:https://thisisatest.ik3cloud.com/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc顺便说明一下,我上面举例是用https协议的,而有的企业是http协议的,如果是的话,就要使用http协议。尽量复制域名,这样才不会出错,也别多复制一个k3cloud哈。2: Data(即请求参数):打开金蝶的Web API功能,可以看到审核接口的请求参数有,如图所示:这个接口的请求参数是非常少的。同时,你也要记住一个规则,金蝶云的Web API有个特点,非必填的参数是可以不用传的。因此,如果你是想通过单据编号去审核指定单据的话,你的请求参数应该是:post_data={"FormId":"PUR_PurchaseOrder","Data":{"Numbers": ["test"]}},Numbers对应的value是列表,它支持批量审核单据。千万别忘了,"Data"里面的value包数据必须是json格式的,这个需要用到json里面的dumps方法就完胜搞定,下面我会给例子。
3:Cookies(用户验证,基于HTTP协议的)之前的文章已经说了如何通过API登录验证,这里就不多说了,需要看的话,点击链接查看即可:https://vip.kingdee.com/article/45012这里只是说一下,除了登录校验不需要cookies,其他的API接口都需要携带cookies进行操作的。建议写一个登录函数,然后返回 cookies,即可每次携带cookies访问了。可参照我下面的函数。如果没有携带,会出现如下的返回信息:{"Result":{"ResponseStatus":{"ErrorCode":500,"IsSuccess":false,"Errors":[{"FieldName":null,"Message":"Context Is Null","DIndex":0}],"SuccessEntitys":[],"SuccessMessages":[],"MsgCode":1}}}我也看不懂,反正'IsSuccess'==False,我就知道是操作失败了。-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------好了,三大利器准备好了,我就直接上Python代码了:import json,requests
login_url="https://pocknoiral.ik3cloud.com/k3cloud/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc"
audit_url="https://pocknoiral.ik3cloud.com/K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc"
login_data={ "acctid":"20180321174312","username":"你的用户名","password":"你的密码","lcid":2052}
def login(): # 定义登录函数
login_response=requests.post(url=login_url,data=login_data)
return login_response.cookies # 返回cookies,方便下次访问时携带
post_data={"FormId":"PUR_PurchaseOrder","Data":json.dumps({"Numbers": ["test"]})}
response=requests.post(url=audit_url,data=post_data,cookies=login())
print(response.text){"Result":{"ResponseStatus":{"IsSuccess":true,"Errors":[],"SuccessEntitys":[{"Id":100006,"Number":"test","DIndex":0}],"SuccessMessages":[],"MsgCode":0}}}返回信息中,"IsSuccess"==true,就说明审核成功了。非常感谢!!!
其他的分享,请关注评论内容,里面有链接。
-----------------------------------------------------------------------------------------------------------------------------------------------------------另外,如果大家有遇到问题,随时可以加我建立的QQ群:712623210 (金蝶云Web API系统集成沟通群) 。只要我能解决的,都会帮忙,毕竟大家都是一个行业的,相互交流,学习。-----------------------------------------------------------------------------------------------------------------------------------------------------------
推荐阅读