慧穗云开放平台 CDK 开票对接
一、前期准备
开通慧穗云账户,登录地址:https://huisuiyun.cn
维护企业基础信息、电子税局账户信息维护、激活、授权 参考 https://kdocs.cn/l/cgyD47lZKCDZ
开发参考官方文档:https://cdk5.smarttax.net/
二、创建秘钥
1、 登录:https://huisuiyun.cn
2、打开系统设置
3、打开秘钥管理
4、创建秘钥,配置回调地址。
![图片[1] - 慧穗云开放平台 CDK 开票对接 - 宋马](https://pic.songma.com/blogimg/20250829/bd51e4d81b054c1b9e755254e4ec9620.png)
5、配置主动回调(事件成功后回调,业务操作选择,并添加适用组织,不添加则无主动回调)
如果回调接收接口有白名单安全设置,请配置以下IP: 47.103.101.22
![图片[2] - 慧穗云开放平台 CDK 开票对接 - 宋马](https://pic.songma.com/blogimg/20250829/6f0010a3d28f4228abacde65aa9a9e13.png)
三、代码开发
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'
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END


















暂无评论内容