查询开票详情
接口说明
接口描述:商户通过该接口查询开票状态和成功开票时的详细信息,支付网关会返回最新的数据。
适用对象:特约商户
请求URL:https://pay.yintongzaixian.com/api/invoice/query
请求方式:POST
请求类型:application/json 或 application/x-www-form-urlencoded
请求参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 商户号 | mchNo | 是 | String(30) | M1621873433953 | 商户号 |
| 应用ID | appId | 是 | String(24) | 60cc09bce4b0f1c0b83761c9 | 应用ID |
| 发票单号 | invoiceOrderId | 否 | String(30) | FP1789129338202107906 | 支付网关生成的发票单号,与mchOrderNo二者传一即可 |
| 商户开票单号 | mchOrderNo | 否 | String(30) | 1715412578007 | 商户开票单号,与invoiceOrderId二者传一即可 |
| 请求时间 | reqTime | 是 | long | 1622016572190 | 请求接口时间,13位时间戳 |
| 接口版本 | version | 是 | String(3) | 1.0 | 接口版本号,固定:1.0 |
| 签名 | sign | 是 | String(32) | C380BEC2BFD727A4B6845133519F3AD6 | 签名值,详见签名算法 |
| 签名类型 | signType | 是 | String(32) | MD5 | 签名类型,目前只支持MD5或RSA2方式 |
请求示例数据
{
"appId": "653b67b90d14f66aa119a518",
"sign": "FFDF7695ECF250BD68D432CE26326BC8",
"signType": "MD5",
"reqTime": "1715413704",
"mchNo": "M1698391993",
"version": "1.0",
"invoiceOrderId": "FP1770009488532013057"
}
返回参数
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 返回状态 | code | 是 | int | 0 | 0-处理成功,其他-处理有误,详见错误码 |
| 返回信息 | msg | 否 | String(128) | 签名失败 | 具体错误原因,例如:签名失败、参数格式校验错误 |
| 签名信息 | sign | 否 | String(32) | CCD9083A6DAD9A2DA9F668C3D4517A84 | 对data内数据签名,如data为空则不返回 |
| 返回数据 | data | 否 | String(512) | {} | 返回下单数据,json格式数据 |
data数据格式
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 发票单号 | invoiceOrderId | 是 | String(30) | P12021022311124442600 | 支付系统发票单号 |
| 商户号 | mchNo | 是 | String(30) | M1621873433953 | 商户号 |
| 商户开票单号 | mchOrderNo | 是 | String(30) | 20160427210604000490 | 返回商户传入的开票单号 |
| 含税开票金额 | amount | 是 | int | 100 | 含税开票金额,单位分 |
| 税额 | feeAmount | 是 | BigDecimal | 1 | 开票税额,单位分 |
| 开票状态 | state | 是 | int | 2 | 开票状态:0-订单生成,1-开票中,2-开票成功,3-开票失败,4-开票任务关闭,5-已冲红,6-已作废 |
| 渠道发票单号 | channelInvoiceOrderNo | 否 | String | 20160427210604000490 | 对应渠道发票单号 |
| 购方信息 | buyerInfo | 否 | String(256) | {} | 购方信息json字符串,具体字段见下方说明 |
| 发票详细信息 | invoiceInfo | 否 | String(256) | {} | 发票详细信息json字符串,具体字段见下方说明 |
| 商品信息 | goodsList | 否 | String(256) | [{}] | 商品信息,jsonArray字符串,具体字段见下方说明 |
| 开票链接地址 | channelInvoiceQrcodeUrl | 否 | String(128) | http://www.jeequan.com/pay.html | 开票链接地址 |
| 开票链接失效时间 | expiredTime | 否 | String(30) | 2024-05-15 00:00:00 | 开票链接失效时间 |
| 渠道错误码 | errCode | 否 | String | 1002 | 渠道下单返回错误码 |
| 渠道错误描述 | errMsg | 否 | String | 134586944573118714 | 渠道下单返回错误描述 |
| 备注 | remark | 否 | String(256) | 134586944573118714 | 备注 |
| 创建时间 | createdAt | 是 | long | 1622016572190 | 订单创建时间,13位时间戳 |
购方信息说明
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 购方名称 | buyerName | 是 | String(20) | 张三 | 购方开票名称 |
| 购方税号 | taxNo | 否 | String(128) | abcde12345 | 购方开票税号 |
| 购方地址 | address | 否 | String(20) | 河北省沧州市解放西路华商大厦 | 购方地址 |
| 购方固定电话 | telphone | 否 | String(20) | 0317-xxx | 购方固定电话 |
| 开户行 | bankName | 否 | String(20) | 中国农业银行 | 开户行 |
| 开户账号 | bankAccount | 否 | String(20) | 62xxxxx | 开户账号 |
| 交付手机 | pushPhone | 否 | String(20) | 131xxxx | 交付手机 |
| 交付邮箱 | pushEmail | 否 | String(20) | xx@xx.xx | 交付邮箱 |
发票详细信息说明,开票成功时返回响应信息
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 发票代码 | invoiceCode | 是 | String(30) | 张三 | 发票代码 |
| 发票号码 | invoiceNo | 是 | String(30) | abcde12345 | 发票号码 |
| 数电发票号码 | digitInvoiceNo | 否 | String(30) | abcde12345 | 数电发票号码 |
| 发票密文 | invoiceCipher | 否 | String(256) | xxx | 发票密文 |
| 发票下载地址 | einvoiceUrl | 是 | String(20) | http | 发票下载地址,访问可下载发票 |
| 红字发票号码 | redInvoiceNo | 否 | String(20) | xxxxx | 红字发票号码 |
商品信息说明
| 字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
|---|---|---|---|---|---|
| 商品ID | goodsId | 是 | String(64) | 65f951200d14521d34c0757b | 商品唯一ID |
| 商品名称 | goodsName | 是 | String(64) | 玉米 | 商品名称 |
| 税收分类编码 | goodsCode | 否 | String(32) | 1010101030000000000 | 税收分类编码 |
| 税收分类简称 | goodsClassify | 否 | String(20) | xxx | 税收分类简称 |
| 商品单价 | goodsPrice | 否 | BigDecimal | 2.00000000 | 商品单价,单位元 |
| 商品数量 | goodsNum | 否 | BigDecimal | 0.1050 | 商品数量 |
| 商品小计 | totalPrice | 否 | String(20) | 0.21 | 商品小计,单位元 |
| 商品税率 | goodsTaxRate | 否 | String(20) | 9 | 商品税率,枚举值: 0, 1, 3, 5, 6, 9, 13,分别对应: 0%, 1%, 3%... |
| 商品税额 | goodsTaxAmount | 否 | BigDecimal | 0.00 | 商品税额,单位元 |
| 零税率标识 | freeTaxMark | 否 | byte | 0 | 零税率标识, 0-无 1-出口免税和其他免税优惠政策 2-不征增值税 3-普通零税率 |
| 规格型号 | goodsSpecification | 否 | String(20) | xxx | 规格型号 |
| 计量单位 | goodsUnit | 否 | String(20) | 斤 | 计量单位 |
| 特殊票种标记 | invoiceSpecialMark | 否 | String(20) | 00 | 特殊票种标记,00:普通发票 01:不动产租赁服务发票 02:农业发票 03:建筑服务发票 06:抵扣通行费 07:其他通行费 08:成品油 |
返回示例数据
{
"code": 0,
"data": {
"amount": 21,
"buyerInfo": "{\"buyerName\":\"河北计全科技有限公司\",\"pushPhone\":\"132xxxxxxxx\",\"taxNo\":\"91XXXXXXXXX\"}",
"channelInvoiceOrderNo": "fa143b2231d34d2b935ef8aff176db47",
"channelInvoiceQrcodeUrl": "",
"feeAmount": 0E-10,
"goodsList": "[{\"freeTaxMark\":0,\"goodsClassify\":\"玉米\",\"goodsCode\":\"1010101030000000000\",\"goodsId\":\"65f951200d14521d34c0757b\",\"goodsName\":\"玉米\",\"goodsNum\":0.1050,\"goodsPrice\":2.00000000,\"goodsTaxAmount\":0.00,\"goodsTaxRate\":9,\"goodsUnit\":\"斤\",\"invoiceSpecialMark\":\"00\",\"totalPrice\":0.21}]",
"invoiceInfo": "{\"einvoiceUrl\":\"http://fp.baiwang.com/fp/d?d=2197F8FAF1E5110FE0DB7C8145DDB9F76E93D2EE951BAE52F104FC59AA25FC8A\",\"invoiceCode\":\"011077890011\",\"invoiceNo\":\"06569890\"}",
"invoiceOrderId": "FP1770009488532013057",
"state": 2
},
"msg": "SUCCESS",
"sign": "3A8FF74B7C86BCA234BEB77C814B29A2"
}
SDK调用示例(Java):
JeepayClient jeepayClient = JeepayClient.getInstance(Jeepay.appId, Jeepay.apiKey, Jeepay.getApiBase());
InvoiceOrderQueryRequest request = new InvoiceOrderQueryRequest();
InvoiceOrderQueryReqModel model = new InvoiceOrderQueryReqModel();
model.setMchNo(Jeepay.mchNo); // 商户号
model.setAppId(jeepayClient.getAppId()); // 应用ID
request.setBizModel(model);
try {
InvoiceOrderQueryResponse response = jeepayClient.execute(request);
_log.info("验签结果:{}", response.checkSign(Jeepay.apiKey));
if (response.isSuccess(Jeepay.apiKey)) {
_log.info("data:{}", response.getData());
} else {
_log.info("请求失败:mchNo={}, msg={}", Jeepay.mchNo, response.getMsg());
}
} catch (JeepayException e) {
_log.error(e.getMessage());
}