慧穗云开放平台 CDK 开票对接
慧穗云开放平台 CDK 开票对接
一、前期准备
开通慧穗云账户,登录地址:https://huisuiyun.cn
维护企业基础信息、电子税局账户信息维护、激活、授权 参考 https://kdocs.cn/l/cgyD47lZKCDZ
开发参考官方文档:https://cdk5.smarttax.net/
二、创建秘钥
1、 登录:https://huisuiyun.cn
2、打开系统设置
3、打开秘钥管理
4、创建秘钥,配置回调地址。
5、配置主动回调(事件成功后回调,业务操作选择,并添加适用组织,不添加则无主动回调)
如果回调接收接口有白名单安全设置,请配置以下IP: 47.103.101.22
三、代码开发
1、创建密钥对接接口 获取token—同步
令牌有效期为 35 天,令牌更新后 25 天内不允许再次更新令牌,建议设置 25 - 35 天范围内传入更新标识更新令牌,生效时间顺延,企业需做个定时任务定时更新token
接口地址: /api/v3/cdk/getToken请求方式: POST请求协议: application/json;charset=UTF-8请求结果是加密的,需要进行解密,解密后获得 token
public function getToken(){$url = "https://huisuiyun.cn/api/v3/cdk/getToken";$timestamp = $this->createTimestamp();$serialNo = $this->createSerialNo();//流水号$secret = $this->createSecret();//使用[ak和sk生成的md5码]加密$param = ['serialNo'=>$serialNo,//流水号'timestamp'=>$timestamp,//时间戳'lx'=>2,//密钥等级 1:渠道级,2:用户级,不传默认用户级'ak'=>'ak', //AccessKey'secret'=>$secret, //由在慧穗云系统获取的秘钥AK和SK拼接后,再经MD5的32位小写加密后生成。这个拼接生成的操作需要您自己完成,例如:AK值为123,SK值为456,secret字符串值为123456经MD5 32位小写加密后的值'qzgxbj'=>1, //qzgxbj 1:更新token,不传默认不更新];$result = $this->curl_post($url, $param);//解密if($result['code'] !=200){throw new Exception($result['message']);return false;}$result = DesUtil::decrypt($result['data'],$secret);$result = json_decode($result,true);// 解密后结果 { "token": "令牌值", "gqsj": "过期时间"}return $result;}
2、新增单据并开票—异步(ps:开票成功后,走配置的自动回调地址,获取发票路径 目前只有:PDF OFD XML 下载地址)接口地址: /api/v3/cdk/invoice/saveAndCreateInvoice请求方式: POST请求协议: application/json;charset=UTF-8
public function saveAndCreateInvoiceDemo(){$url = "https://huisuiyun.cn/api/v3/cdk/invoice/saveAndCreateInvoice";$timestamp = $this->createTimestamp();$serialNo = $this->createSerialNo();//流水号$wbdjh = $this->createSerialNo();//请保证每笔开票业务的单据号唯一$secret = $this->createSecret();//使用[ak和sk生成的md5码]加密$param = ['serialNo'=>$serialNo,//流水号'timestamp'=>$timestamp,//时间戳];$data = ['serialNo'=>$serialNo,//流水号'timestamp'=>$timestamp,//时间戳'data'=>$secret,//使用[ak和sk生成的md5码]加密'wbdjh'=>$wbdjh,//请保证每笔开票业务的单据号唯一'xzbs'=>1,//0:新增并开票,1:仅新增,不传默认新增并开票'fplx'=>82,//参考码表 82 数电普通发票
// 'gmfbm'=>82,//购方编码 若传入则会在基础资料-购方管理模块根据编码匹配对应购方信息并补全'gmfmc'=>"XXXXXX",//购买方名称'gmfnsrsbh'=>'XXXXXX',//购买方税号 专票必填,自然人普票选填'gmfdz'=>'XXXXXX',//购买方地址 选填'gmfdh'=>'XXXXXX',//购买方电话 选填'gmfkhh'=>'XXXXXX',//购买方开户行 选填'gmfzh'=>'XXXXXX',//购买方账号'gmfzrrbz'=>'Y',//购买方自然人标志 Y:购买方是自然人 N:购买方非自然人 不传默认非自然人,仅针对数电普生效,自然人普票购方税号字段填写身份证号'hsbs'=>0,//含税标识 0:不含税,1:含税,参数内所有单价、金额的含税维度'xsfdz'=>'XXXXXX',// 销售方地址'xsfdh'=>'XXXXXX',// 销售方电话'xsfkhh'=>'XXXXXX',// 销售方开户行'xsfzh'=>'XXXXXX'