发货信息录入接口-第一次成功-第二次错误码:40001,错误信息:invalid credenti?
获取 token: https://api.weixin.qq.com/cgi-bin/stable_token
发货接口:https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=
很奇怪的是第一次token没问题,第二次有问题,token 不是2小时有效吗?
第二次调用报错日志:
调用微信接口获取到的token:91_KDMDEiR1Oy-9Y2XMOdSjdtV_3B4ehfu4GkOImcAUDu8zuxsDmrxCFkp5Fog-LdbFU4u4UTRhth86XJln79GprdHsjmfggMktHqruImqBAXLC4Ip7t4QI6GmS9v8JECfAAARMK
调用微信接口传参:{"delivery_mode":1,"logistics_type":1,"order_key":{"order_number_type":2,"transaction_id":"4200002703202504211159558455"},"payer":{"openid":"oDYP367HXIMtJJOZ7CQc7zlSDx8U"},"shipping_list":[{"express_company":"ZTO","item_desc":"海氏海诺一次性床品三件套","tracking_no":"987654321"}],"upload_time":"2025-04-21T22:31:04.882+08:00"}
微信接口调用失败,调用地址:https://api.weixin.qq.com/wxa/sec/order/upload_shipping_info?access_token=91_dEH6ITUJF_Ot7mdzKKTpDgs6K1RKAGzX7mOtVBBmiC0rA1ASLfZC0CA8BpA0KMsT9iRya-9sdTIOXrhg9Sa_6J7xzB7R9V87YjgxBFFWZH3LB58MSPTNqjIazo8TJEbABAHXS91_KDMDEiR1Oy-9Y2XMOdSjdtV_3B4ehfu4GkOImcAUDu8zuxsDmrxCFkp5Fog-LdbFU4u4UTRhth86XJln79GprdHsjmfggMktHqruImqBAXLC4Ip7t4QI6GmS9v8JECfAAARMK,错误码:40001,错误信息:invalid credential, access_token is invalid or not latest, could get access_token by getStableAccessToken, more details at https://mmbizurl.cn/s/JtxxFh33r rid: 68065772-147cdbe3-5f2aef92
下面是代码:
// 从缓存中获取
String access_token = ContractUtil.wtoken.get("access_token");
// access_token 不存在,获取最新的
if (StringUtils.isBlank(access_token)) {
TokenBO tokenBO = new TokenBO();
tokenBO.setGrant_type(grant_type);
tokenBO.setAppid(appid);
tokenBO.setSecret(secret);
tokenBO.setForce_refresh(false);
String tokenPostJson = JSON.toJSONString(tokenBO);
// 获取token
String tokenResult = HttpUtil.post(getTokenUrl, tokenPostJson);
JSONObject jsonObject = JSON.parseObject(tokenResult);
access_token = (String) jsonObject.get("access_token");
// 缓存access_token
ContractUtil.wtoken.put("access_token", access_token);
log.info("调用微信接口获取到的token:{}", access_token);
}
log.info("access_token:{}", ContractUtil.wtoken.get("access_token"));
orderUrl = orderUrl + ContractUtil.wtoken.get("access_token");