Veronique 11 mesi fa
parent
commit
65a3b629b3

+ 0 - 222
doc/热力商户对接接口说明.md

@@ -1,222 +0,0 @@
-[TOC]
-
-# 接口规则
-
-## 协议规则
-
-调用API必须遵循以下规则:
-
-| 规则   | 说明                                |
-| ---- | --------------------------------- |
-| 传输方式 | HTTP/HTTPS                        |
-| 提交方式 | 采用POST方法提交                        |
-| 数据格式 | 提交和返回数据都为JSON格式                   |
-| 字符编码 | 统一采用UTF-8字符编码                     |
-| 安全机制 | 签名或者IP白名单                         |
-| 签名算法 | 如安全机制未签名,RSA(2048)/和支付宝RAS2方式签名一样 |
-| 签名要求 | 如安全机制未签名,请求和接收数据均需要校验签名           |
-
-## 参数规则
-
-### 请求参数
-
-| 参数             | 类型         | 必填 | 描述                                  | 示例值                              |
-| -------------- | ---------- | -- | ----------------------------------- | -------------------------------- |
-| appId          | String(32) | 是  | 接口应用号                               | 123456789                        |
-| clientCode     | String(32) | 是  | 商城客户号                               | yinjie                           |
-| businessMethod | String(32) | 是  | 请求业务编号                              | MallAppCall\_ProductList         |
-| params         | String     | 是  | 请求业务参数                              | 业务参数全部序列化为JSON 字符串传递             |
-| nonceStr       | String(32) | 否  | ==如安全机制为签名,则必须传入== 随机字符串,长度要求在32位以内 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
-| sign           | String(32) | 否  | ==如安全机制为签名,则必须传入== 通过签名算法计算得出的签名值   |                                  |
-
-请求参数签名数据为
-
-```java
-content = "appid=" + x.getAppId() +
-            "&businessMethod=" + x.getBusinessMethod() +
-            "&params=" + x.getParams() +
-            "&nonceStr=" + x.getNonceStr();
-```
-
-### 返回参数
-
-| 参数       | 类型         | 必填 | 描述                                  | 示例值                              |
-| -------- | ---------- | -- | ----------------------------------- | -------------------------------- |
-| appId    | String(32) | 是  | 接口应用号                               | 123456789                        |
-| data     | String     | 是  | 请求业务返回值                             | 业务返回数据全部序列化为JSON 字符串传递           |
-| nonceStr | String(32) | 否  | ==如安全机制为签名,则必须传入== 随机字符串,长度要求在32位以内 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
-| sign     | String(32) | 否  | ==如安全机制为签名,则必须传入== 通过签名算法计算得出的签名值   |                                  |
-| httpCode | int        | 是  | 错误编号                                |                                  |
-| msg      | String     | 否  | 错误内容                                |                                  |
-
-### 错误码
-
-| 错误代码  | 描述                           | 原因                               | 解决方案 |
-| :---- | :--------------------------- | :------------------------------- | :--- |
-| 10001 | POST数据为空                     | http post无数据                     |      |
-| 10002 | JSON格式不正确                    | 接口对应的json数据格式不正确                 |      |
-| 10003 | 参数中缺少businessMethod          | 未传入businessMethod参数              |      |
-| 10004 | 参数中缺少clientCode              | 未传入clientCode参数                  |      |
-| 10005 | 未获取到clientCode对应商户信息         | clientCode由商城开发商提供               |      |
-| 10006 | 商户信息不正确                      |                                  |      |
-| 10007 | 参数中缺少appId                   | 未传入appId参数                       |      |
-| 10008 | 应用appId不存在/应用appId已禁用,无法调用接口 | appId传入错误或者不存在/应用appId已禁用,无法调用接口 |      |
-| 10009 | 签名错误                         | 签名错误                             |      |
-| 10012 | 网络通信错误                       | 网络通信错误,请稍后重试                     |      |
-
-## 安全规范
-
-### 签名工具
-
-RAS密钥可以使用支付宝提供的工具计算 [密钥生成工具](http://p.tb.cn/rmsportal_6680_secret_key_tools_RSA_win.zip) ![image](https://gw.alipayobjects.com/os/skylark-tools/public/files/15563f1b8da9cf77618487750d3fb2ff.png%26originHeight%3D1750%26originWidth%3D3533%26size%3D451811%26status%3Ddone%26width%3D746) 开发资源有限,目前只支持rsa,格式为pkcs8,长度为2048
-
-### 生成随机数算法
-
-API接口协议中包含字段nonceStr,主要保证签名不可预测。我们推荐生成随机数算法如下:调用随机数函数生成,将得到的值转换为字符串。
-
-## 接口链接
-
-**正式地址** **测试地址** [http://xxxxxxx\:xx/apis11/mallAppCall/gateway](http://xxxxxxx\:xx/apis20/mallAppCall/gateway)
-
-# 获取商品列表
-
-## 应用场景
-
-通过该接口获取商品列表
-
-## 请求参数
-
-| 参数             | 类型     | 必填 | 描述   | 参数值                      |
-| -------------- | ------ | -- | ---- | ------------------------ |
-| businessMethod | String | 是  | 业务编码 | MallAppCall\_ProductList |
-| params         | String | 是  | 业务参数 | JSON字符串,此接口传空即可          |
-
-## 返回结果
-
-data通过JSON反序列为商品列表数组
-
-| 变量名             | 描述     | 示例值  |
-| :-------------- | :----- | :--- |
-| id              | 商品id   | 1    |
-| idType          | 商品分类id | 1    |
-| productName     | 商品名称   | 无碳联单 |
-| productTypeName | 商品分类名称 | 联单票据 |
-
-# 获取商品详情
-
-## 应用场景
-
-获取商品详情,用于展示商品,进行报价。
-
-## 请求参数
-
-| 参数             | 类型     | 必填 | 描述   | 参数值                        |
-| :------------- | :----- | :- | :--- | :------------------------- |
-| businessMethod | String | 是  | 业务编码 | MallAppCall\_ProductDetail |
-| params         | String | 是  | 业务参数 | JSON字符串,此接口为{id:商品id}      |
-
-### params内容
-
-| 变量名 | 描述   | 示例值 |
-| :-- | :--- | :-- |
-| id  | 商品id | 1   |
-
-## 返回结果
-
-![image](https://gitee.com/jlutt/vNoteImage/raw/master/%E9%A1%B9%E7%9B%AE%E6%96%87%E6%A1%A3/erp%E5%A4%96%E5%8D%8F%E4%B8%89%E6%96%B9%E7%99%BB%E5%BD%95%E5%8F%8D%E9%A6%88.md/QQ%E5%9B%BE%E7%89%8720250308132130.png)
-
-data通过JSON反序列为商品详情信息
-
-### productInfo
-
-| 变量名             | 描述           | 示例值  |
-| :-------------- | :----------- | :--- |
-| id              | 商品id         | 1    |
-| idType          | 商品分类id       | 1    |
-| productTypeName | 商品分类名称       | 联单票据 |
-| productName     | 商品名称         | 无碳联单 |
-| productUnit     | 商品单位         | 本    |
-| priceQtyContent | 报价数量描述       |      |
-| minDeliveryDay  | 最短发货周期(天)    |      |
-| partInfoList    | 部件partInfo数组 |      |
-
-### partInfo部件信息
-
-| 变量名           | 描述                  | 示例值 |
-| :------------ | :------------------ | :-- |
-| id            | 部件id                |     |
-| partName      | 部件名称                |     |
-| parameterList | 报价参数parameterInfo数组 |     |
-
-### parameterInfo报价参数信息
-
-| 变量名           | 描述                  | 示例值 |
-| :------------ | :------------------ | :-- |
-| id            | 参数id                |     |
-| defaultValue  | 默认值                 |     |
-| idParameter   | 对应产品参数id            |     |
-| parameterName | 参数名称                |     |
-| itemList      | 参数项目parameterItem列表 |     |
-
-### parameterItem
-
-| 变量名         | 描述           | 示例值 |
-| :---------- | :----------- | :-- |
-| id          | 参数项目id       |     |
-| itemName    | 项目名称         |     |
-| itemValue   | 项目值          |     |
-| itemControl | 参数项目控制可选参数项目 |     |
-
-# 请求报价
-
-## 应用场景
-
-上传报价信息,获取结果。
-
-## 请求参数
-
-| 参数             | 类型     | 必填 | 描述   | 参数值                       |
-| :------------- | :----- | :- | :--- | :------------------------ |
-| businessMethod | String | 是  | 业务编码 | MallAppCall\_ProductQuote |
-| params         | String | 是  | 业务参数 | JSON字符串                   |
-
-### params内容
-
-此结构有些复杂,表格不方面进行描述,下面用代码说明json数据信息
-
-```json
-
-{
-  "idProduct": "产品id",
-  "kindCount": "款数",
-  "orderQty": "订单数量",
-  "quoteMemo": "报价说明",
-  "orderMemo": "订单备注",
-  "partList": [
-    {
-      "partName": "部件名称",
-      "paramValueList": [
-        {
-          "parameterName": "参数名称",
-          "paramValue": "参数值",
-          "paramDisplay": "参数显示值"
-        },
-        {
-          "parameterName": "参数名称",
-          "paramValue": "200克铜版C",
-          "paramDisplay": "200克铜版C"
-        }
-        .........
-      ]
-    }
-  ]
-}
-
-```
-
-## 返回结果
-
-| 变量名        | 描述   | 示例值 |
-| ---------- | ---- | --- |
-| TotalMoney | 商品货款 |     |
-

+ 6 - 0
yjWebCore/src/main/java/com/yinjie/heating/webcore/servlet/ThirdInvokeServlet.java

@@ -88,6 +88,12 @@ public class ThirdInvokeServlet extends ERPAdminHttpServlet {
                 String appId = requestItem.getInvokeHeader().getInstID();
                 HeatingApp heatingApp = heatingDocService.getRedisHeatingApp(appId, SUPPLIER_CODE);
 
+                if (heatingApp == null) {
+                    logger.error("未找到光大调用的InstId:{}", appId);
+                    respBody.put("ErrorCode", "DEF0010");
+                    respBody.put("ErrorInfo", "用户不存在");
+                }
+
                 Map<String, Object> bodyMap = requestItem.getBody();
 
                 switch (requestItem.getInvokeHeader().getfTranCode()) {