Python

如果使用pip可以在requirements.txt中加入如下依赖:

eagle-sdk==1.0.8

注解

请在python 3环境下使用本sdk

初始化客户端

from baoquan import BaoquanClient

client = BaoquanClient()
// 设置api地址,比如保全网的测试环境地址
client.host = 'https://baoquan.com'
// 设置access key
client.access_key = 'fsBswNzfECKZH9aWyh47fc'
// 设置rsa私钥文件的绝对路径
client.pem_path = 'path/to/rsa_private.pem'

rsa私钥文件应该以 -----BEGIN RSA PRIVATE KEY----- 开头和 -----END RSA PRIVATE KEY----- 结尾,比如:

-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQC0vGnRvfKR0ixKupDk+jxtuRjAc6YkrNaF8Jzy0zlTmGq33xdM
Uge55OcsW6seQbHiTc9jcck6XiTpPBVxCO6k20uqGAIMh/9hzK+QM96Shi0XSIyU
K6bt6qSZM0cPNqhj9jJJlZFGHjpfQWRFKZNRps4sK4Ww9M3CSEwNJp1KpwIDAQAB
AoGAZ3rVD4y03L68M1Eccq2/eYcX3+CXSLpY3TlFc1ZypSVIPNyTh1QULmAb5+7Y
S6uLgKnSSvq0HyIV+iA3mo9lqrDu2HeGKFcRQJX2hyCAiSrq9eSjl7jzKXZt4pWd
HNsgk6ydJt15upqcHeG5Qw0rqZpY+BxF14iJxmYMH06jjQECQQDpV9xMrxNjb82D
Id/cM9dX5jotFIsiL89Ippo3neHYVdGLz48fBo+1xsApM27jcK+7ZZDE2komEfHM
NUM1eEKBAkEAxkjpYACQvKFD9vruB/gPN430i5YUPFygCZ+Q4p/ZAb7OHijEo06S
YgwYAOzVAIVHwqktv5uU4k4kt19yI2SpJwJBANomkAkJLOEr50CPbNBbjxnYXc9D
g4gklm/fghI5AqnUIaHKHI3u/m/9Li3WrfbopQJXw+6l/eh1ok8+BGV61wECQQCf
gm4DJdFJfW3AVLKBxKLxLQhJ9kyHFnhD5ZJXTQH0rnr/tgoh2YZWy6XPsLXVOmK1
DQXZex41Q2mz/ltCb6rHAkEAwaFEfGNzVDnRkXGkoME+erT+SdXGcYNW+Lwsq/mH
73BBkgaxGsRLoA1I8WzjeHrTFX5Yfx90DUr0X+F0OOMEDg==
-----END RSA PRIVATE KEY-----

其它初始化设置

还有些其它可选的初始化设置,比如设置api版本,设置request id生成器,默认情况下你无需进行这些设置:

// 设置api版本
client.version = 'v2'
// 设置request id生成器,生成器必须返回一个长度不超过256位的唯一字符串
// sdk中默认的request id生成器是uuid.uuid4
def custom_request_id_generator():
        pass
client.request_id_generator = custom_request_id_generator

客户端初始化完成后即可调用客户端中的方法发送请求

创建保全

// 调用创建保全接口,如果成功则返回保全号,如果失败则返回失败消息
try:
        response = client.create_attestation({
                // 设置保全唯一码
                'unique_id': 'd310a8f6-6af2-4dc9-baa0-1231cf910dbb',
                // 设置模板id
                'template_id': '5Yhus2mVSMnQRXobRJCYgt',
                // 设置保全所有者的身份标识
                'identities': {
                    'ID': '42012319800127691X',
                    'MO': '15857112383'
                },
                // 陈述对象列表
                'factoids': [
                    {
                        'unique_id': '72aa5bfc-0a62-4e09-9df0-fbf8a4fb7e8f',
                        'type': 'product',
                        'data': {
                            'name': '浙金网',
                            'description': 'p2g理财平台'
                        }
                    },
                    {
                        'unique_id': '4da45cbc-c234-4296-b566-35d03a092f5a',
                        'type': 'user',
                        'data': {
                            'name': '张三',
                            'phone_number': '13234568732',
                            'registered_at': '1466674609',
                            'username': 'tom'
                        }
                    }
                ],
                // 设置陈述是否上传完成,如果设置成true,则后续不能继续追加陈述
                'completed': true
        })
        print(response['data']['no'])
except ServerException as e:
        print(e.message)

如果创建保全时需要给陈述上传对应的附件:

// 创建3个附件,其中product陈述有1个附件,user陈述有两个附件,附件列表的key对应陈述在陈述列表中的角标
// 每个附件由resource、resource_name和resource_content_type组成,resource是字节数组
attachments = {
        0: [
                {
                    'resource': open(os.path.dirname(__file__) + '/resources/seal.png', 'rb').read(),
                    'resource_name': 'seal.png',
                    'resource_content_type': 'image/png'
                }
        ],
        1: [
                {
                    'resource': open(os.path.dirname(__file__) + '/resources/seal.png', 'rb').read(),
                    'resource_name': 'seal.png',
                    'resource_content_type': 'image/png'
                },
                {
                    'resource': open(os.path.dirname(__file__) + '/resources/contract.pdf', 'rb').read(),
                    'resource_name': 'contract.pdf',
                    'resource_content_type': 'application/pdf'
                }
        ]
}
// 调用创建保全接口,如果成功则返回保全号,如果失败则返回失败消息
// 此处省略payload的创建
try:
        response = client.create_attestation(payload, attachments)
        print(response['data']['no'])
except ServerException as e:
        print(e.message)

追加陈述

try:
        response = client.add_factoids({
                // 设置保全号
                'ano': '7F189BBB5FA1451EA8601D0693E36FE7',
                // 陈述对象列表
                'factoids': [
                    {
                        'unique_id': '4da45cbc-c234-4296-b566-35d03a092f5a',
                        'type': 'user',
                        'data': {
                            'name': '张三',
                            'phone_number': '13234568732',
                            'registered_at': '1466674609',
                            'username': 'tom'
                        }
                    }
                ]
                })
        print(response['data']['success'])
except ServerException as e:
        print(e.message)

追加陈述的时候同样能为陈述上传附件,跟创建保全为陈述上传附件一样。

获取保全数据

try:
        response = client.get_attestation('DB0C8DB14E3C44C7B9FBBE30EB179241')
        print(response['data'])
except ServerException as e:
        print(e.message)

get_attestation有两个参数,第1个参数ano是保全号,第二个参数fields是一个数组用于设置可选的返回字段

下载保全文件

try:
        response = client.download_attestation('DB0C8DB14E3C44C7B9FBBE30EB179241')
        with open(response['file_name'], 'wb') as f:
                f.write(response['file_content'])
except ServerException as e:
        print(e.message)

返回的response有两个字段,file_name表示文件名,file_content是以字节形式表示的文件内容

申请ca证书

申请个人ca证书:

try:
        response = client.apply_ca({
                'type': 'PERSONAL',
                'link_name': '张三',
                'link_id_card': '330184198501184115',
                'link_phone': '13378784545',
                'link_email': '123@qq.com',
        })
        print(response['data']['no'])
except ServerException as e:
        print(e.message)

三证合一情况,申请企业证书:

try:
        response = client.apply_ca({
                'type': 'ENTERPRISE',
                'name': 'xxx有限公司',
                'ic_code': '91332406MA27XMXJ27',
                'link_name': '张三',
                'link_id_card': '330184198501184115',
                'link_phone': '13378784545',
                'link_email': '123@qq.com',
        })
        print(response['data']['no'])
except ServerException as e:
        print(e.message)

非三证合一情况,申请企业证书:

try:
        response = client.apply_ca({
                'type': 'ENTERPRISE',
                'name': 'xxx有限公司',
                'ic_code': '419001000033792',
                'org_code': '177470403',
                'tax_code': '419001177470403',
                'link_name': '张三',
                'link_id_card': '330184198501184115',
                'link_phone': '13378784545',
                'link_email': '123@qq.com',
        })
        print(response['data']['no'])
except ServerException as e:
        print(e.message)