账务接口
接口列表
接口名称 | 接口方法 | 说明 |
---|---|---|
1.添加账务 | Bill.AddBillItem | 该接口是添加账务接口,适用于在办理预定或入住时客人消费和付款入账的操作 |
2.查询账套内余额 | Bill.GetBillBalance | 查询账套内余额 |
3.查询账务 | Bill.GetBillItems | 查询账务 |
4.添加在线支付记录 | Bill.AddOnlinePayment | 记录每一笔在线支付 |
5.修改在线支付记录 | Bill.UpdateOnlinePayment | 修改在线支付 |
6.查询支付结果 | Bill.SearchPayResult | 查询支付结果 |
7.在线支付 | Bill.OnlinePay | 在线支付 |
8.新增预授权 | Bill.AddGuaranteeItem | 预授权添加,目前只支持银行卡 |
9.查询预授权 | Bill.GetGuaranteeItems | 查询预授权信息 |
10.取消预授权 | Bill.CancelGuaranteeItems | 查询预授权信息 |
11.完成预授权 | Bill.CompleteGuaranteeItem | 查询预授权信息 |
12.转账 | Bill.Transfer | 把账务转到指定的账套 |
13.获取支付二维码 | Bill.GetPayQrCode | 获取扫码付支付二维码地址 |
14.挂账 | Bill.Suspend | 挂账 |
1.添加账务
Bill.AddBillItem
应用场景
该接口是添加账务接口,适用于在办理预定或入住时客人消费和付款入账的操作
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
账务Id | BillId | 是 | long | ||
账务类型 | BillItemType | 是 | BillItemType | Credit 或 Debit | |
账务科目 | SubItemType | 是 | string | 账务数据字典 | |
是否是押金 | IsDeposit | 否 | bool | ||
金额 | Amount | 是 | decimal | ||
摘要 | Memo | 否 | string | ||
支付附加信息 | PaymentRequest | 是 | PaymentModel | ||
外部引用编号 | ExternalRefId | 否 | long | 引用批量进货单号 | |
小商品信息 | SmallWareOrders | 否 | SmallWareOrderItem[] |
PaymentModel
支付信息备注
- ◆ C9120:BankKey,CardNumber,AuthorizeId,BeginValidTime,EndValidTime 必填
- ◆ C9150:如果MemberId有值则在支付过程中自动扣除积分,否则请先手动扣除积分,Amount必填
- ◆ C9130:如果MemberId有值则在支付过程中自动扣除储值,否则请先手动扣除储值,Amount必填
- ◆ C9240:OnlinePaymentId必填
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
Ar账账套Id | ArAccountId | 否 | long | 仅CashingBill.AddCashingBillItem 接口可用 | |
Ar帐套名称 | ArAccountName | 否 | string | 仅Bill.AddBillItem 接口可用 | |
银行编号 | BankKey | 否 | string | 入账科目为:C9120 必填 | |
支票 | ChequeNumber | 否 | string | ||
卡号 | CardNumber | 否 | string | 入账科目为:C9120 必填 | |
授权号 | AuthorizeId | 否 | string | 入账科目为:C9120 必填 | |
有效期开始时间 | BeginValidTime | 否 | DateTime | 入账科目为:C9120 必填 | |
有效期结束时间 | EndValidTime | 否 | DateTime | 入账科目为:C9120 必填 | |
在线支付Id | OnlinePaymentId | 否 | long | 入账科目为:C9240 必填 | |
备注 | Memo | 否 | string | ||
金额 | Amount | 否 | decimal | 入账科目为:C9150、C9130、并MemberId为空,必填 | |
会员Id | MemberId | 否 | string | ||
费用类型 | FeeType | 否 | string | 见数据字典 | |
会员名称 | MemberName | 否 | string | ||
电话 | Mobile | 否 | string | ||
卡号 | MemberCardId | 否 | string | ||
外卡号 | ExtCardNo | 否 | string |
SmallWareOrderItem
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
商品Id | GoodsId | 否 | string | ||
酒店自定义物品编号 | GoodsNo | 否 | string | ||
名称 | Name | 否 | string | ||
数量 | Count | 否 | int | ||
价格 | Price | 否 | decimal |
示例
{
"ChannelKey": "web",
"Method": "Bill.AddBillItem",
"BizContent":"{\"OrgId\":2147483644,\"BillId\":678027732549648,\"BillItemType\":1,
\"SubItemType\":\"C9110\",\"IsDeposit\":true,\"Amount\":110.00,\"Memo\":\"test\",
\"PaymentRequest\":{},
\"ExternalRefId\":null,
\"SmallWareOrders\":[],
\"CheckBillIds\":[],
\"ItemCategory\":\"\",
\"TotalAmount\":null}",
"Sign": "0B9AD5D2BBBFF5E0493FBA4A134AB1E2",
"SignType": "MD5",
"Format": "json",
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2017-12-18 10:12:13"
}
其中BizContent是接口参数的json字符串,其json格式如下:
{
"OrgId":2147483644,
"BillId":678027732549648,
"BillItemType":1,
"SubItemType":"C9110",
"IsDeposit":true,
"Amount":110.00,
"Memo":"test",
"PaymentRequest":[],
"ExternalRefId":null,
"SmallWareOrders":[],
"CheckBillIds":[],
"ItemCategory":"",
"TotalAmount":null
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
账务明细Id | BillItemId | 是 | long | ||
订单Id | OrderId | 是 | long | ||
订单号 | OrderNo | 是 | string | ||
房间号 | RoomNumber | 否 | string | ||
入住人姓名 | CheckinName | 否 | string | ||
抵店时间 | ArriveTime | 否 | DateTime | ||
离店时间 | DepartureTime | 否 | DateTime | ||
账务Id | BillId | 否 | long | ||
账务号 | BillNo | 否 | string | ||
营业日 | BusinessDate | 否 | DateTime | ||
账务明细类型 | ItemType | 否 | BillItemType | ||
Credit科目 | CreditType | 否 | BillCreditType | ItemType 为 Credit | |
付款描述 | CreditTypeDesc | 否 | string | ||
Debit科目 | DebitType | 否 | BillDebitType | ItemType 为 Debit | |
消费描述 | DebitTypeDesc | 否 | string | ||
账务名称 | BillName | 否 | string | ||
金额 | Amount | 否 | decimal | ||
摘要 | Memo | 否 | string | ||
操作人 | CreatorName | 否 | string | ||
操作时间 | CreateTimeInUtc | 否 | DateTime | Utc时间 |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data": {
"BillItemId": 3,
"OrderId": 678027732549638,
"OrderNo": "2O8TC846006",
"RoomNumber": null,
"CheckinName": null,
"ArriveTime": "0001-01-01T00:00:00",
"DepartureTime": "0001-01-01T00:00:00",
"BillId": 678027732549648,
"BillNo": "2O8TC84600G",
"BusinessDate": "2017-12-18T00:00:00",
"ItemType": "Credit",
"CreditType": "C9110",
"CreditTypeDesc": null,
"DebitType": null,
"DebitTypeDesc": null,
"BillName": null,
"Amount": 110,
"Memo": "test",
"CreatorName": "PublicServiceNew_Web",
"CreateTimeInUtc": "2017-12-18T13:43:19.3905525Z",
"TransactoinId": 0
}
}
业务异常码表
Code
(返回码) |
Message
(返回码描述) |
SubCode
(业务返回码) |
SubMessage
(业务返回码描述) |
解决方案 |
---|---|---|---|---|
50000 | 业务处理失败 | bill.invalid-bill-id | 无效的BillId | |
bill.ar-account-not-found | 未找到AR账套 | 如果是AR账必须要传入正确的AR套 | ||
bill.found-more-than-one-ar-account | 找到多个相关的AR账套 | |||
bill.channel-mismatch | 分销渠道时,入账的渠道和订单或占房的渠道必须一致 | |||
bill.bill-status-closed | 账套已经关闭 |
2.查询账套内余额
Bill.GetBillBalance
应用场景
查询账套内余额
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
账务Id | BillId | 是 | long | ||
是否包含预授权 | IncludePreAuthorization | 是 | bool |
示例
{
"ChannelKey": "web",
"Method": "Bill.GetBillBalance",
"BizContent":"{\"OrgId\":2147483644,\"BillId\":678299079983122,\"IncludePreAuthorization\":false}",
"Sign": "FAE5600EA8AD04D396AF904129D4D179",
"SignType": "MD5",
"Format": "json"
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2017-12-18 10:12:13"
}
其中BizContent是接口参数的json字符串,其json格式如下:
{
\"OrgId\":2147483644,
\"BillId\":678299079983122,
\"IncludePreAuthorization\":false
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
decimal | 返回的余额 |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data": 1000
}
3.查询账务
Bill.GetBillItems
应用场景
查询账务
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
账务Id | BillId | 必填(2选1) | long | ||
账务明细Ids | BillItemIds | long[] |
示例
{
"ChannelKey": "web",
"Method": "Bill.GetBillBalance",
"BizContent":"{\"OrgId\":2147483644,\"BillId\":678299079983122,\"BillItemIds\":[1]}",
"Sign": "FAE5600EA8AD04D396AF904129D4D179",
"SignType": "MD5",
"Format": "json"
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2017-12-18 10:12:13"
}
其中BizContent是接口参数的json字符串,其json格式如下:
{
"OrgId":2147483644,
"BillId":678299079983122,
"BillItemIds":[1]
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
BillItemInfo[] | 账务信息 |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data": [
{
"BillItemId": 1,
"OrderId": 678298949959686,
"OrderNo": "2OA78F63006",
"RoomNumber": null,
"CheckinName": null,
"ArriveTime": "0001-01-01T00:00:00",
"DepartureTime": "0001-01-01T00:00:00",
"BillId": 678299079983122,
"BillNo": "2OA79A6300I",
"BusinessDate": "2017-12-19T00:00:00",
"ItemType": "Credit",
"CreditType": "C9110",
"CreditTypeDesc": "人民币现金(收款)",
"DebitType": null,
"DebitTypeDesc": "",
"BillName": "人民币现金(收款)",
"Amount": 1000,
"Memo": null,
"CreatorName": "superadmin",
"CreateTimeInUtc": "2017-12-19T04:46:54.653",
"TransactoinId": 0
}
]
}
4.添加在线支付记录
Bill.AddOnlinePayment
应用场景
当添加在线支付会先添加一条在线支付记录
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
账务Id | BillId | 是 | long | ||
房间详情 | RoomDetail | 否 | string | 例如:测试酒店1(2006 - 小王) | 此信息代表是哪个酒店的哪个房间的哪个客人在线支付了一笔账,客户也可以定义自己的信息 |
支付类型 | PayType | 是 | string | 具体值可查看:数据字典->在线支付类型 | |
支付金额 | Amount | 是 | decimal | ||
操作类型 | OperationType | 是 | string | 付款:Pay,退款:Refund,预授权冻结:Freeze | 代表是在线支付、在线退款或预授权冻结 |
示例
微信支付示例:
{
"ChannelKey": "web",
"Method": "Bill.AddOnlinePayment",
"BizContent":"{\"OrgId\":2147483644,\"BillId\":678299079983122,\"RoomDetail\":\"高级套房\",
\"PayType\":\"WeChat\",\"Amount\":\"520\",\"OperationType\":\"Pay\"}",
"Sign": "0756AB9B975895E17DBF1A872B178CA7",
"SignType": "MD5",
"Format": "json",
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2017-12-18 10:12:13"
}
扫码付预授权示例:
{
"ChannelKey": "web",
"Method": "Bill.AddOnlinePayment",
"BizContent":"{\"OrgId\":2147483644,\"BillId\":678299079983122,\"RoomDetail\":\"高级套房\",
\"PayType\":\"BeyondPayPreAuth\",\"Amount\":\"520\",\"OperationType\":\"Freeze\"}",
"Sign": "0756AB9B975895E17DBF1A872B16B4E",
"SignType": "MD5",
"Format": "json",
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2017-12-18 10:12:13"
}
其中BizContent是接口参数的json字符串,其json格式如下:
{
"OrgId":2147483644,
"BillId":678299079983122,
"RoomDetail":"高级套房",
"PayType":"WeChat",
"Amount":"520",
"OperationType":"Pay"
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 否 | long | ||
在线支付Id | Id | 是 | long | ||
商户订单号 | IdSerialNo | 否 | string | ||
账务Id | BillId | 是 | long | ||
房间详情 | RoomDetail | 否 | string | ||
支付类型 | PayType | 是 | string | ||
支付人的OpenId | OpenId | 是 | string | ||
金额 | Amount | 是 | decimal | ||
对应的账务明细 | BillingItemId | 是 | long | ||
银行类型 | BankType | 否 | string | ||
银行账单号 | BankBillNo | 否 | string | ||
通知Id | NotifyId | 否 | string | ||
付款交易流水号 | TransactionId | 否 | string | ||
支付金额 | PayAmount | 否 | decimal | ||
支付时间 | PayTime | 否 | DateTime | ||
是否支付成功 | IsSuccess | 否 | bool |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data": {
"OrgId": 2147483644,
"Id": 678350643150849,
"IdSerialNo": "2147483644-2OAGQS3D001",
"BillId": 678299079983122,
"RoomDetail": "高级套房",
"PayType": "WeChat",
"OpenId": null,
"Amount": 520,
"BillingItemId": 0,
"BankType": null,
"BankBillNo": null,
"NotifyId": null,
"TransactionId": null,
"PayAmount": null,
"PayTime": null,
"IsSuccess": false
}
}
5.修改在线支付记录
Bill.UpdateOnlinePayment
应用场景
单支付完毕后修改在线记录,填入一些支付信息
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
在线支付Id | Id | 是 | long | ||
商户订单号 | IdSerialNo | 否 | string | 格式为:HotelId-OnlinePaymentId | |
支付OpenId | OpenId | 是 | string | 如微信,支付宝 | |
银行类型 | BankType | 是 | string | ||
银行Bill No | BankBillNo | 是 | string | ||
通知Id | NotifyId | 是 | string | ||
付款交易流水号 | TransctionId | 是 | string | ||
支付金额 | PayAmount | 是 | decimal | ||
支付时间 | PayTime | 是 | DateTime | ||
是否成功 | IsSuccess | 是 | bool | ||
入账明细ID | BillItemId | 是 | long |
示例
{
"ChannelKey": "web",
"Method": "Bill.UpdateOnlinePayment",
"BizContent":"{\"OrgId\":2147483644,\"Id\":678362213892097,\"IdSerialNo\":\"\",
\"OpenId\":\"\",\"BankType\":\"\",\"BankBillNo\":\"\",\"NotifyId\":\"\",
\"TransctionId\":\"\",\"PayAmount\":\"\",\"PayTime\":\"2017-12-18 10:12:13\",
\"IsSuccess\":false,\"BillItemId\":\"\"}",
"Sign": "D7DACF7C6EBE000B9D3C93E99C69BD69",
"SignType": "MD5",
"Format": "json",
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2017-12-18 10:12:13"
}
其中BizContent是接口参数的json字符串,其json格式如下:
{
\"OrgId\":2147483644,
\"Id\":678362213892097,
\"IdSerialNo\":\"\",
\"OpenId\":\"\",
\"BankType\":\"\",
\"BankBillNo\":\"\",
\"NotifyId\":\"\",
\"TransctionId\":\"\",
\"PayAmount\":\"\",
\"PayTime\":\"2017-12-18 10:12:13\",
\"IsSuccess\":false,
\"BillItemId\":\"\"
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 否 | long | ||
在线支付Id | Id | 是 | long | ||
商户订单号 | IdSerialNo | 否 | string | ||
账务Id | BillId | 是 | long | ||
房间详情 | RoomDetail | 否 | string | ||
支付类型 | PayType | 是 | string | ||
支付人的OpenId | OpenId | 是 | string | ||
金额 | Amount | 是 | decimal | ||
对应的账务明细 | BillingItemId | 是 | long | ||
银行类型 | BankType | 否 | string | ||
通知Id | NotifyId | 否 | string | ||
访问事务Id | TransactionId | 否 | string | ||
支付金额 | PayAmount | 否 | decimal | ||
支付时间 | PayTime | 否 | DateTime | ||
是否支付成功 | IsSuccess | 否 | bool |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data": {
"OrgId": 2147483644,
"Id": 678362213892097,
"IdSerialNo": "2147483644-2OAIVF13001",
"BillId": 678360498241554,
"RoomDetail": "高级套房",
"PayType": "WeChat",
"OpenId": "",
"Amount": 520,
"BillingItemId": 0,
"BankType": "",
"BankBillNo": "",
"NotifyId": "",
"TransactionId": "",
"PayAmount": 0,
"PayTime": "2017-12-18T10:12:13",
"IsSuccess": false
}
}
6.查询支付结果
Bill.SearchPayResult
应用场景
查询支付结果
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
商户订单号 | OutTradeNO | 是 | string | ||
支付订单号 | TransactionID | 否 | string | ||
在线支付Id | OnlinepaymentId | 是 | long | ||
支付类型 | PayType | 是 | string | 如微信,支付宝 | 具体值可查看:数据字典->在线支付类型 |
示例
{
"ChannelKey": "web",
"Method": "Bill.SearchPayResult",
"BizContent":"{\"OrgId\":2147483644,\"OutTradeNO\":\"\",\"TransactionID\":\"\",
\"OnlinepaymentId\":\"678362213892097\",\"PayType\":\"WeChat\"}",
"Sign": "F735FC271102C55EEFBD71E5ADE164B7",
"SignType": "MD5",
"Format": "json",
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2017-12-18 10:12:13"
}
其中BizContent是接口参数的json字符串,其json格式如下:
{
\"OrgId\":2147483644,
\"OutTradeNO\":\"\",
\"TransactionID\":\"\",
\"OnlinepaymentId\":\"678362213892097\",
\"PayType\":\"WeChat\"
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
是否支付成功 | IsSuccess | 否 | bool | ||
银行类型(支付宝) | BankType | 是 | string | ||
支付金额:单位为元 | PayAmount | 否 | decimal | ||
支付订单号 | TransactionID | 是 | string | ||
商家订单号 | OrderNO | 否 | string | ||
支付时间 | PayTime | 是 | DateTime | ||
支付订单补充数据 | Attach | 是 | string | ||
付款的账号 | Buyer | 是 | string | 微信是openId,支付宝是支付宝账号 | |
支付状态码 | RetCode | 是 | string | ||
支付提示 | RetMsg | 否 | string | ||
支付渠道 | PayChannel | 否 | string |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data": {
"IsSuccess": false,
"BankType": null,
"PayAmount": 0,
"TransactionID": null,
"OrderNO": null,
"PayTime": "0001-01-01T00:00:00",
"Attach": null,
"Buyer": null,
"RetCode": "ORDERNOTEXIST",
"RetMsg": "order not exist"
}
}
业务异常码表
Code
(返回码) |
Message
(返回码描述) |
SubCode
(业务返回码) |
SubMessage
(业务返回码描述) |
解决方案 |
---|---|---|---|---|
50000 | 业务处理失败 | bill.missing-online-payment-id | 缺少onlinepaymentId |
7.在线支付
Bill.OnlinePay
应用场景
在线支付
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
支付方式 | PayType | 是 | string | ||
交易类型,微信专用 | TradeType | 是 | string | JSAPI为公众号支付,NATIVE扫码支付 | |
商家订单号 | OutTradeNO | 是 | string | 微信不能超过32位,支付宝不能超过64位 | |
支付金额:单位元 | Amount | 是 | decimal | ||
订单标题 | Subject | 是 | string | ||
支付成功通知的Url | NotifyUrl | 是 | string | ||
支付的附加参数,原样返回 | Attach | 是 | string | ||
发起支付的客户端IP | ClientIP | 是 | string | ||
发起交易客人openId | OpenId | 是 | string | ||
商品Id,微信Native时必传 | ProductId | 是 | string | ||
支付过期时间 | ExpireTime | 是 | DateTime |
示例
{
"ChannelKey": "web",
"Method": "Bill.OnlinePay",
"BizContent":"{\"OrgId\":2147483644,\"PayType\":\"WeChat\",\"OutTradeNO\":\"\",
\"TradeType\":\"JSAPI\",\"OutTradeNO\":\"\",\"Amount\":200,\"Subject\":\"\",
\"NotifyUrl\":\"\",\"Attach\":\"\",\"ClientIP\":\"192.168.1.1\",\"OpenId\":\"\",
\"ProductId\":\"\",\"ExpireTime\":\"2017-12-18 10:12:13\"}",
Sign": "AA267E1FF57C9353616898005E09726C",
"SignType": "MD5",
"Format": "json",
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2017-12-18 10:12:13"
}
其中BizContent是接口参数的json字符串,其json格式如下:
{
\"OrgId\":2147483644,
\"PayType\":\"WeChat\",
\"OutTradeNO\":\"\",
\"TradeType\":\"JSAPI\",
\"OutTradeNO\":\"\",
\"Amount\":200,
\"Subject\":\"\",
\"NotifyUrl\":\"\",
\"Attach\":\"\",
\"ClientIP\":\"192.168.1.1\",
\"OpenId\":\"\",
\"ProductId\":\"\",
\"ExpireTime\":\"2017-12-18 10:12:13\"
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
否 | string | 支付成功,支付失败 |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data": "支付成功"
}
业务异常码表
Code
(返回码) |
Message
(返回码描述) |
SubCode
(业务返回码) |
SubMessage
(业务返回码描述) |
解决方案 |
---|---|---|---|---|
50000 | 业务处理失败 | bill.invalid-trade-type | TradeType应当为JSAPI或者NATIVE | |
bill.invalid-pay-type | TPayType应当为 WeChat或者Alipay | |||
bill.missing-product-id | 缺少ProductId |
8.新增预授权
Bill.AddGuaranteeItem
应用场景
信用卡预授权、扫码付预授权
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
账务Id | BillId | 是 | long | ||
预授权类型 | GuaranteeType | 是 | int | 1 | 目前支持填写1(信用卡)和4(扫码付) |
预授权金额 | GuaranteeAmount | 是 | decimal | ||
付款码 | BarCode | 是 | string | 支付宝或微信的付款码,GuaranteeType为4时必填 | |
备注 | Memo | 是 | string | ||
支付信息 | PaymentModel | 是 | PaymentModel |
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
在线支付Id | OnlinePaymentId | 否 | long | GuaranteeType为4时必填 | |
支付金额 | Amount | 否 | decimal | GuaranteeType为4时,请填写:目前和GuaranteeAmount保持一致 | |
银行标识key | BankKey | 是 | string | 需要调用Config.GetBulkOwnerConfig 参数:Category填写“Bank” | |
银行卡号 | CardNumber | 是 | string | ||
授权号 | AuthorizeId | 是 | string | ||
授权结束时间 | EndValidTime | 是 | DateTime |
示例
银行卡预授权示例:
{
"ChannelKey": "web",
"Method": "Bill.AddGuaranteeItem",
"BizContent": "{\"OrgId\":2147483644,\"BillId\":1093862291488769,\"GuaranteeType\":1,
\"GuaranteeAmount\":\"200\",\"Memo\":\"6666\", \"PaymentModel\":{\"BankKey\":\"hhh\",
\"CardNumber\":\"925633564\",\"AuthorizeId\":\"0897878898\",\"EndValidTime\":\"2020-08-06 13:50:24\"}}",
"Sign": "3AB3396D1D68D39C88D5B246420B7702",
"SignType": "MD5",
"Format": "json",
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2020-08-07 14:56:19"
}
扫码付预授权示例:
{
"ChannelKey": "Web",
"Method": "Bill.AddGuaranteeItem",
"BizContent": "{\"OrgId\":288733476028418,\"BillId\":1369077651390481,\"GuaranteeType\":4,
\"GuaranteeAmount\":\"0.08\",\"Memo\":\"6666\",\"BarCode\":\"284712144376782033\",
\"PaymentModel\":{\"OnlinePaymentId\":1447368214659096,\"Amount\":0.08}}",
"Sign": "3AB3396D1D68D39C88D5B246420B7702",
"SignType": "MD5",
"Format": "json",
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2020-08-07 14:56:19"
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
预授权账务Id | GuaranteeItemId | 否 | long | ||
预授权类型 | GuaranteeType | 否 | int | 返回1表示银行卡类型 | |
预授权状态 | GuaranteeStatus | 否 | int | 0:无效,1:有效,2:取消,3:已完成 | |
预授权金额 | GuaranteeAmount | 否 | decimal | ||
使用金额 | UsedAmount | 否 | decimal | ||
备注 | Memo | 否 | string | ||
创建人 | CreatorName | 否 | string | ||
账务ID | BillId | 否 | string |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data":
{ "GuaranteeItemId": 1093948966109185, "GuaranteeType": 1, "GuaranteeStatus": 1, "GuaranteeAmount": 200.0,
"UsedAmount": 0.0, "Memo": "6666", "PaymentModel": null, "CreatorName": "OpenApi_Web",
"BillId": 1093862291488769 }
}
9.查询预授权信息
Bill.GetGuaranteeItems
应用场景
预授权
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
账务Id | BillIds | 是 | long[] |
示例
{
"ChannelKey": "web",
"Method": "Bill.GetGuaranteeItems",
"BizContent": "
{\"OrgId\":2147483644,\"BillIds\":[1093862291488769]}
",
"Sign": "789F170D785CC2943A4A7FDDC9C0E64B",
"SignType": "MD5",
"Format": "json",
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2020-08-07 19:37:55"
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
预授权账务Id | GuaranteeItemId | 否 | long | ||
预授权类型 | GuaranteeType | 否 | int | 返回1表示银行卡类型 | |
预授权状态 | GuaranteeStatus | 否 | int | 0:无效,1:有效,2:取消,3:已完成 | |
预授权金额 | GuaranteeStatus | 否 | decimal | ||
使用金额 | UsedAmount | 否 | decimal | ||
备注 | Memo | 否 | string | ||
创建人 | CreatorName | 否 | string | ||
账务ID | BillId | 否 | string | ||
账务状态 | BillStatus | 否 | int | 0:预付,1:有效,2:关闭,3:挂账 | |
支付信息 | PaymentModel | 是 | PaymentModel |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data": {
"PageSize": 15,
"PageIndex": 1,
"RecordCount": 4,
"PageCount": 1,
"Content": [
{
"GuaranteeItemId": 1101317056806913,
"GuaranteeType": 1,
"GuaranteeStatus": 1,
"GuaranteeAmount": 400,
"UsedAmount": 0,
"Memo": "10401",
"PaymentModel": {
"ArAccountId": 0,
"ArAccountName": null,
"BankKey": "银行卡",
"ChequeNumber": null,
"CardNumber": "1010404",
"AuthorizeId": "10401010",
"BeginValidTime": null,
"EndValidTime": "2020-08-29T00:00:00",
"OnlinePaymentId": 0,
"Memo": null,
"Amount": 0,
"MemberId": null,
"FeeType": null,
"MemberName": null,
"Name": null,
"Mobile": null,
"MemberCardId": null,
"ExtCardNo": null,
"PaymentId": 1101317056806914,
"MobileCheckCode": null,
"Password": null
},
"CreatorName": "superadmin",
"BillId": 1092659657768963,
"BillItemRefId": null,
"IsLocked": false,
"BillStatus": 1,
"ExternalRefId": null,
"CreateTimeInUtc": "2020-08-24T16:13:19+08:00",
"LastModifyTimeInUtc": "2020-08-24T16:13:19+08:00"
}
]
}
}
10.取消预授权
Bill.CancelGuaranteeItem
应用场景
信用卡预授权
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
预授权Id | GuaranteeItemId | 是 | long |
示例
{
"ChannelKey": "web",
"Method": "Bill.CancelGuaranteeItem",
"BizContent": "
{\"OrgId\":492080278896642,\"GuaranteeItemId\":1003148279922689}
",
"Sign": "9EFF567C6E5CC1BE22BEEC928A72573F",
"SignType": "MD5",
"Format": "json",
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2021-04-21 17:37:55"
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
取消结果 | Data | 是 | bool |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data": true
}
11.完成预授权
Bill.CompleteGuaranteeItem
应用场景
信用卡预授权
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
预授权Id | GuaranteeItemId | 是 | long | ||
完成金额 | UsedAmount | 是 | decimal |
示例
{
"ChannelKey": "web",
"Method": "Bill.CompleteGuaranteeItem",
"BizContent": "
{\"OrgId\":492080278896642,\"GuaranteeItemId\":1204992699236356,\"UsedAmount\":10}
",
"Sign": "CDC7661A16D3E61D4D1FDA8C63749453",
"SignType": "MD5",
"Format": "json",
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2020-08-07 19:38:55"
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
完成结果 | Data | 是 | bool |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data": true
}
12.转账
Bill.Transfer
应用场景
转账,只能转入到已入住的账套,已结账套、现付账套不支持转出。 转入不支持已结账或挂账的账套和现付账套。
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
转出账套 | FromBillIds | 是 | long[] | 支持多个账套 | |
转入账套 | ToBillId | 是 | long | ||
原因 | Reason | 否 | long |
示例
{
"ChannelKey": "web",
"Method": "Bill.Transfer",
"BizContent": "{\"OrgId\":2147483644,\"FromBillIds\":[1127213862158341,],\"ToBillId\":1127249283055626,\"Reason\":\"接口调用\"}",
"Sign": "789F170D785CC2943A4A7FDDC9C0E64B",
"SignType": "MD5",
"Format": "json",
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2020-10-23 17:30:02"
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
是否成功 | Data | 是 | bool |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data": true
}
13.获取支付二维码
Bill.GetPayQrCode
应用场景
获取指定金额的扫码付二维码地址。 先添加待支付的在线支付记录,然后获取此地址生成二维码,供用户扫码支付。
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
待支付记录Id | OnlinePaymentId | 是 | long | ||
回调通知地址 | NotifyUrl | 是 | string | ||
附加信息 | Attach | 否 | string |
示例
{
"ChannelKey": "web",
"Method": "Bill.GetPayQrCode",
"BizContent": "{\"OrgId\":492080278896642,\"OnlinePaymentId\":1207937638957067,
\"NotifyUrl\":\"http://cpmsdev4.beyondh.com/api/BeyondPay/BeyondPayCallback\"}",
"Sign": "789F170D785CC2943A4A7FDDC9C0E64B",
"SignType": "MD5",
"Format": "json",
"Charset": "utf-8",
"Version": "1.0",
"Timestamp": "2021-04-28 17:30:02"
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
地址 | Data | 是 | string | 用来生成二维码的地址 |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data": "https://paytest.beyondh.com/#/byhScan?qrCodeId=1206695338704898&
outTradeNO=1207937638957067¬ifyUrl=http%3a%2f%2fcpmsdev4.beyondh.com%2fapi%2fBeyondPay%2fBeyondPayCallback"
}
支付回调通知
在扫码支付场景下,订单支付成功后进行回调通知
1.回调通知是异步通知,不能保证通知不丢失,强烈建议同时使用查询接口做订单状态补偿
2.回调接口非必须实现,建议实现,并且在扫码支付接口notifyUrl字段配置。服务端会以POST方式进行回调
3.开发者在回调接口中可以选择对sign字段进行签名校验,签名规则与接口调用说明的“签名算法说明” 一致。
4.回调通知采用POST方法
验签说明
签名算法:SHA256
1.对参数集合内非空参数值的参数按照参数名ASCII码从小到大排序(字典序)(注:如果参数值为空不参与签名,sign不参与签名,参数首字母需转小写加入前面)
示例:stringA="appId=wxd930ea5d5a258f4f&body=test&merchantId=10000100&random=ibuaiVcKdpRxkhJA"
2.在拼接的字符串之后添加签名的key。(系统参数获取别样红支付appkey)
示例:stringA="appId=wxd930ea5d5a258f4f&body=test&merchantId=10000100&random=ibuaiVcKdpRxkhJA&key=***********"
3.调用签名方法获取签名,签名值请转换为小写十六进制字符串。
回调参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
集团Id | OwnerId | 是 | long | ||
门店Id | OrgId | 否 | string | ||
支付记录Id | OutTradeNo | 是 | string | ||
房号 | RoomNumber | 否 | string | ||
客人姓名 | CustomerName | 否 | string | ||
支付渠道 | PayChannel | 是 | string | ||
支付金额 | TotalFee | 是 | int | 单位(分) | |
用户Id | OpenId | 否 | string | ||
银行类型 | BankType | 否 | string | ||
卡号 | BankCardNo | 否 | string | ||
通知Id | NotifyId | 否 | string | ||
支付流水号 | TransactionId | 否 | string | ||
交易状态 | TradeStatus | 是 | string | Paid是支付成功 | |
附加信息 | Attach | 是 | string | 班次等 | |
是否成功 | Success | 是 | bool | ||
随机数 | Random | 是 | string | ||
签名 | Sign | 是 | string |
请求示例
{
"OwnerId": 2016061392,
"OrgId": "492080278896642",
"OutTradeNo": "1207937638957067",
"RoomNumber":,
"CustomerName":,
"PayChannel": "Wechat",
"TotalFee": 1,
"OpenId":,
"BankType":,
"BankCardNo":,
"NotifyId":,
"TransactionId": "4200001021202104281536969136",
"TradeStatus": "Paid",
"Attach": "0|0",
"Success": True,
"Random": "YgONoUiT562B1LC4",
"Sign": "2117b5796ac0e8bda15b182d5bbe00a3641f1e1c1b110842f68e1c5b4c62c6fe",
}
返回示例
{
"Status" : "success"
}
14.挂账
Bill.SuspendBill
应用场景
挂账
请求参数
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
酒店Id | OrgId | 是 | long | ||
挂账的账套Id的列表 | SuspendBillIds | 是 | long[] | 支持多个账套 | |
备注 | Demo | 否 | string |
示例
{
"ChannelKey":"Hotel",
"Method":"Bill.SuspendBill",
"BizContent":"{\"OrgId\":\"871488164724740\",\"SuspendBillIds\":[1493696274300933],\"Memo\":\"测试一下\"}",
"Sign":"30DA82F7CAD9141FA729189F7F16F3E1",
"SignType":"MD5",
"Format":"json",
"Charset":"utf-8",
"Version":"1.0",
"Timestamp":"2023-02-27 16:54:35"
}
返回结果
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
是否成功 | Data | 是 | bool | true | 注意处理异常情况 |
示例
{
"Code": 10000,
"Message": null,
"SubCode": null,
"SubMessage": null,
"Data": true
}