[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() + "¶ms=" + 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 | 商品货款 | |