需求
公司因自有订单业务规模不断扩大,产生了线上电子发票开具的需求,对接的是诺诺开发平台。
开发指南
申请诺诺资质:申请成为诺诺平台资质,提交资料,一次性费用2w+,每年一定维护费用。
创建应用类型
诺诺开放平台支持如下两种应用类型,企业可根据业务需求选择。
-
自用型:接入诺诺开放平台业务能力,为自己公司开发应用。自助接入建议使用自用型应用
-
第三方应用:第三方接入(帮助其他企业开发)建议使用第三方应用。系统服务商可创建第三方应用,开发应用服务于商户,可代商户发起调用。进行第三方调用前,需在应用中添加对应功能并获得商户授权。
自用型对接
自用型可以理解为公司给客户开票
- 创建自用型应用获取到APPKey和APPSecret
- 获取access_token
access_token是开发者调用开放平台接口的调用凭据,开发者通过应用参数向诺诺开放平台调用令牌接口地址获取access_token。令牌有效期默认24h(也可在创建应用时设置token永不过期,我们创建的是默认24h),且令牌30天内的调用上限为50次 ,请开发者做好令牌的管理。
private String getNNToken(String redisKey) {
// 获取token
Object token = redisUtil.get(redisKey);
if (ObjectUtils.isNotEmpty(token)) {
return (String) token;
}
String result = NNOpenSDK.getIntance().getMerchantToken(nnAppkey, nnAppSecret, nn_accessToken_url);
HashMap tokenMap = JSON.parseObject(result, HashMap.class);
token = tokenMap.get("access_token”);
if (ObjectUtils.isEmpty(token)) {
String msg = "获取token出错:" + tokenMap.get("error") + " " + tokenMap.get("error_description”);
throw new MsgException(msg);
}
// 缓存token 比诺诺先过期
long expires_in = (Integer) tokenMap.get("expires_in") - 60 * 60;
redisUtil.set(redisKey, token, expires_in);
return (String) token;
}
获取到的access_token,存入到redis,就可以使用access_token,调用开票、重开、查询、发送email等接口
@Override
public AjaxResponse