简道云框架搭建之插件开发(三)对接阿里云云市场api

前言:

        简道云的插件市场提供了丰富的插件功能,但实际开发过程中,并不能满足需求,本文以笔者的获取企业工商信息为例,讲解如何利用简道云自定义插件来对接阿里云云市场提供的API来实现需求功能。

正文内容:

        一、  需求分析:

        通过企业的名称为参数,接入阿里云云市场的API来获取到企业的开票资料,核心是获取到开户行、银行账号、联系电话、地址、税号这几个值 。简道云的插件市场有提供企业信息获取的插件,但是不能满足我的需求,所以只能是做自定义插件开发来实现。简道云提供的API能够查询的信息已经是比较全面了。价格一毛钱一次,比自己 手搓对接阿里要贵一丢丢,但也没太多,如果官方提供的服务能够满足你的需求,首先当然是使用官方的功能了。

        二、阿里云云市场上去开通相应的API功能

        当然这个是需要付费的,如何去开通以及阿里云的账号注册,付费机制这些问题,就不是本文需要叙述的主要内容,默认读者已经知晓这块的内容,如果不知道,百度以下也很容易操作的。

        作者使用的杭州快证签科技有限公司 这家公司提供的API服务,在云市场搜索【快证API】企业开票信息查询 。

        费用还可以,我买的450元/5k次,折合9分钱一次,算不上便宜,中等了,作者的使用量不大,所以还可以接受。如果实际工作如果使用量大,可以跟买更多数量的,或者其他服务商,这里不是本文的重点。开通后,在阿里云的后台能够查到 AppKey,AppSecret,AppCode 注意这三项切勿泄露出去,后续代码中做API访问权限身份验证用。作者这里直接使用了最简单的AppCode来做验证。

        三、如何调试阿里云云市场API

        阿里云提供了各种开发语言的示例代码,简道云自定义插件使用的是python,这里重点关注了。but这里又要遇到坑了,后面会做阐述。但不得不说阿里云代码调试复用都是很方便的。

import urllib, urllib3, sys, uuid
import ssl
host = 'https://kzkp.market.alicloudapi.com'
path = '/api/company/invoice_search'
method = 'POST'
appcode = '你自己的AppCode'
querys = ''
bodys = {}
url = host + path
http = urllib3.PoolManager()
headers = {
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Authorization': 'APPCODE ' + appcode
}
bodys['keyword'] = '''keyword'''
post_data = urllib.parse.urlencode(bodys).encode('utf-8')
response = http.request('POST', url, body=post_data, headers=headers)
content = response.data.decode('utf-8')
if (content):
    print(content)

        代码很清晰,只需要appcode替换为你自己的,keyword就是需要查询的内容,这里可以是公公司的名称但要求是准确的全称,商事登记号都可以。content就是接口返回的结果字符串。

{
  "msg": "成功",
  "success": true,
  "code": 200,
  "data": {
    "bankAccount": "866180198510001",
    "bank": "招商银行北京分行大屯路支行",
    "orderNo": "202510011741205478226",
    "phone": "59922888",
    "name": "北京百度网讯科技有限公司",
    "addr": "北京市海淀区上地十街10号百度大厦2层",
    "taxNo": "91110000802100433B"
  }
}

以上是查询百度的返回的结果,返回的字符串格式是json格式,那么就只需要提取出对应的字段就可以了。如果查询结果有问题返回的结果如下

{
  "msg": "企业名/统一信用代码/注册号不能为空",
  "success": false,
  "code": 400,
  "data": null
}

        四、插件的开发

        上一篇文章介绍了开发自定义插件的过程,在这里就不重复叙述了,作者的请求参数和返回参数如下:

        请求参数: 文本类型 客户名称

        返回参数: 银行账号、银行、地址、电话、税号  类型全部any就好了。

        这里再次提醒下返回的参数需要代码里面的json键值与定义的参数的ID相对应。

        五、 遇到的坑

        原本以为阿里云提供了python代码,那么直接copy过去,只需要处理好输入参数和返回参数就好了。哪想到出现了幺蛾子。保存提示语法不正确。

        鼠标放过去,有提示,Module named ‘urllib3’ is  unsafe 

    估计由于一些第三方模块存在安全风险,简道云的平台是不允许使用。那就不能直接使用阿里云的代码了,只能是自己手搓了,不过也能借鉴一些。 作者这里直接放出来写好的代码。需要把appcode替换为自己的。

# 可以引用一些第三方库.
import json
import requests
customerName =  triggerConf.get('CustomerName')
host = 'https://kzkp.market.alicloudapi.com'
path = '/api/company/invoice_search'
method = 'POST'
appcode = ''
url = host + path
headers = {
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Authorization': 'APPCODE ' + appcode
}
payload = {'keyword': customerName}
response = requests.post(url, data=payload, json=json, headers=headers)
response.raise_for_status()
body = response.json()
bankAccount = body.get('data').get('bankAccount')
bank = body.get('data').get('bank')
phone = body.get('data').get('phone')
addr = body.get('data').get('addr')
taxNo =   body.get('data').get('taxNo')
return {
    "bankAccount": bankAccount,
    "bank": bank,
    "phone":phone,
    "addr":addr,
    "taxNo":taxNo,
}

   可以保存测试,简道云提供的测试也是比较方便的。

小结:

         回顾下,整个插件的实现功能的步骤首先是开通好阿里云云市场的api功能,其实就是付费使用。拿到appcode后,代码实现就是通过request库发送post请求,返回的结果转换为json格式,然后按照返回的实例提取出需要的字段值,最后组装成json输出。

posted @ 2025-10-27 16:31  clnchanpin  阅读(1)  评论(0)    收藏  举报