无缝钱包API集成
文档 2.30
最后更新: 26/08/2024
接口版本 2.30
1. 集成 (Integration) API
1.1 API详情
这是一个供赌场运营方与钱包系统集成的API。该API是一个HTTP监听器,它监听来自具有以下请求映射的URL的POST请求。这意味着操作员可以向API发送POST请求,以执行与钱包系统相关的操作和交互。
所有请求应包含头部 (header) "Content-Type: application/json"
HTTP方法 (Methods):POST
APIUrl,AgentCode,SecretKey 将由 seamless 提供。
您可以参考“BO > API 信息”页面以了解 APIUrl 是什么。
APIUrl、AgentCode和SecretKey将由Seamless提供。
有关其预期目的,请参阅集成 API 1.2 和 1.3
赌场运营商无需提供IP地址进行白名单设置。无需白名单IP。
请使用UTC+0时区来表示所有的DateTime数值
请注意,在测试阶段,某些产品可能会出现“产品维护中” (“Product Under Maintenance”)的情况,在这些情况下,请使用另一个 ProductID 来测试该特定游戏类型。
您可以参考“BO > API Info”页面,了解哪些产品已经开放供测试。您还可以在“BO > API Info”页面更改回调URL。
BO登录的凭据将由相关部门相应地发送。
目前,在测试环境中我们会开放一组指定的产品给运营商进行测试。因此,在 API 请求表单中申请的产品未必会在测试环境中显示。所以请测试仅可用的产品。若有需在测试环境中测试的产品请提供反馈,我们将检验该产品是否可在测试环境中进行测试。
请注意,测试环境下货币固定为印尼盾(IDR)。在正式环境中,它将被设置为申请的货币。因此,在测试阶段可忽视货币问题。
运营商必须在其端实施“2. Seamless API”部分中的所有API;因为Seamless将调用这些API来执行特定操作,比如获取余额或下注等。
在"3. 运营方API"部分的API是供运营方调用的API。例如,运营方可以调用 3.1 LaunchGame (启动游戏) API以访问特定产品。

不过,请注意与拉动报告或获取投注记录功能相关的 API。即 3.2 获取报告, 3.3 按结算日期提取报告, 3.6 按投注ID提取报告, 3.7 拉取未完成投注, 3.8 获取记录, 和 3.9 标记记录。您一次只能访问其中 1 个 API,不能同时调用其中任何 2 个 API,或同时向同一个 API 提出 2 个 API 请求,否则会出错。
一旦运营商完成了集成,请使用下面的测试页面链接来验证集成的正确性:

链接: https://swmd.6633663.com/testcase/index2

Agent URL: (您的回调URL)
AgentCode: (用于登录到暂存BO(后台办公室)的用户名)
MemberName: (您系统中玩家的唯一标识符)
SecretKey: (请参考我们发给您的测试环境凭据以获取 secretKey)
ProductID: (请参考BO -> API Info页面以了解已开放和可用的ProductID)
MemberPassword: (玩家的密码)

如果您需要关于如何正确运行测试页面的帮助,请随时在Telegram中与我们联系。

另一方面,在通过上面链接中的测试用例后,进入正式环境之前,请确保你方已经测试了launchGame API,且你方可以:
1) 成功进入游戏页面
2) 成功地正常进行下注
3) 成功获取先前正常下注的赌注游戏结果
签名生成:
Signature = MD5(OperatorCode + RequestTime + MethodName +SecretKey)
 
方法名小写,例如:
获取余额 (Get Balance):
MD5(OperatorCode + RequestTime + getbalance +SecretKey)
 
下注 (Place Bet):
MD5(OperatorCode + RequestTime + placebet +SecretKey)
 
使用GetBalance的示例:
MD5(ABCD + 20230315104218 + getbalance + ABCD1234)
Sign: c59866786cdd569b63e2bf3dde3da9e1
 
1.2 玩家、运营方和Seamless 初始化流程
 
1.3 供应商、Seamless 和运营方的一般流程
备注:
  • 流程在其他操作(如CancelBet、GameResult等)中也是相同的,这些操作都列在2. Seamless API。
 
2. 无缝 (Seamless) API
2.1 获得余额
请求路径: (CallbackURL)/Seamless/GetBalance
备注:
  • 这个API是由供应商触发的事件驱动型操作。每当供应商想要获取特定玩家的余额时,Seamless 将会调用运营商的API来执行这个操作。
Request Parameters:
Parameter Type Description Required
MemberName String 运营商中玩家的唯一标识符 Yes
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
ProductID Long Seamless中产品的唯一标识符 No
MessageID String 当前API请求的唯一标识符 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Sign String 请求的签名
请参考集成 API 1.1 获取签名的方法。
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码 Yes
ErrorMessage String 响应的消息 Yes
Balance Decimal 最终信用余额
请返回四位小数
Yes
来自Seamless的示例请求正文:
{
 "MemberName": "6b9cb11982674e4b8ba8b3047af0fd26",
 "OperatorCode": "ABCD",
 "ProductID": 1002,
 "MessageID": "221026092029303_6b9cb11982674e4b8ba8b3047af0fd26",
 "Sign": "6a866431f73685b6998156b8fe5ade56",
 "RequestTime": "20221026092030"
}
                    
运营商预期的响应:
{
  "ErrorCode": 0,
  "ErrorMessage": "Success",
  "Balance": 96.95,
  "BeforeBalance": 0
}
                    
 
2.2 下注
请求路径: (CallbackURL)/Seamless/PlaceBet
备注:
  • 此API由供应商触发事件。每当玩家想要下注时,供应商将调用Seamless,而Seamless将随后调用运营商的此API。
  • 如果TransactionID不为空且在运营商系统中存在,请返回重复交易。
  • 相同的WagerID可以多次发送,且具有不同的TransactionID。
  • BetAmount将作为投注的最新总额发送。(请注意,在记录BetAmount时,请始终使用=而不是+=。)
  • TransactionAmount是需要从玩家钱包中扣除的金额。
Request Parameters:
Parameter Type Description Required
MemberName String 运营商中玩家的唯一标识符 Yes
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
ProductID Long Seamless中产品的唯一标识符 Yes
MessageID String 当前API请求的唯一标识符 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Sign String 请求的签名
请参考集成 API 1.1 获取签名的方法。
Yes
Transactions List< Transaction> 交易对象列表
请参阅模型4.1以获取交易的详细信息。
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码 Yes
ErrorMessage String 响应的消息 Yes
Balance Decimal 最终信用余额
请返回四位小数
Yes
BeforeBalance Decimal 之前的信用余额
请返回四位小数
Yes
来自Seamless的示例请求正文:
{
 "Transactions": [
  {
   "MemberID": 0,
   "OperatorID": 0,
   "ProductID": 1002,
   "ProviderID": 0,
   "ProviderLineID": 0,
   "WagerID": 221027032644145,
   "CurrencyID": 1,
   "GameType": 2,
   "GameID": "TestGame",
   "GameRoundID": "221027032644145",
   "ValidBetAmount": 10,
   "BetAmount": 10,
   "TransactionAmount": -10,
   "TransactionID": "221027032644145_1",
   "PayoutAmount": 0,
   "PayoutDetail": null,
   "CommissionAmount": 0,
   "JackpotAmount": 0,
   "SettlementDate": null,
   "JPBet": 0,
   "Status": 100,
   "CreatedOn": "2022-10-27T03:26:44.145248Z",
   "ModifiedOn": "2022-10-27T03:26:44.145248Z"
  }
 ],
 "MemberName": "TESTER",
 "OperatorCode": "ABCD",
 "ProductID": 1002,
 "MessageID": "221027032644145_ TESTER ",
 "Sign": "369af7416deef76a9cc4f019b8559f99",
 "RequestTime": "20221027032644"
}
                    
运营商预期的响应:
{
  "ErrorCode": 0,
  "ErrorMessage": "Success",
  "Balance": 86.95,
  "BeforeBalance": 96.95
}
                    
 
2.3 游戏结果
请求路径: (CallbackURL)/Seamless/GameResult
备注:
  • 这个API是由供应商驱动的事件。每当供应商想要为特定玩家结算赌注时,seamless 将在运营商处调用这个API。这个API用于处理和执行与赌注结算相关的操作,以确保正确的支付和玩家账户余额的更新。
  • 如果TransactionID不为空且在运营商系统中存在,请返回一个重复的交易。
  • 相同的WagerID可以多次使用不同的TransactionID发送。然而,请检查WagerID是否存在,如果不存在,请返回“下注不存在”并不要处理GameResult。
  • PayoutAmount将作为赌注的最新总派彩发送。(请注意始终使用=而不是+=来记录PayoutAmount)。
  • TransactionAmount是需要调整到玩家钱包中的金额,请注意它可以是正数或负数,这取决于是否有直接重新结算。请参考附录5.7以获取更多详细信息。
  • 请参考附录5.7以了解GameResult、Jackpot和Bonus之间的区别。
Request Parameters:
Parameter Type Description Required
MemberName String 运营商中玩家的唯一标识符 Yes
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
ProductID Long Seamless中产品的唯一标识符 Yes
MessageID String 当前API请求的唯一标识符 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Sign String 请求的签名
请参考集成 API 1.1 获取签名的方法。
Yes
Transactions List< Transaction> 交易对象列表
请参阅模型4.1以获取交易的详细信息。
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码 Yes
ErrorMessage String 响应的消息 Yes
Balance Decimal 最终信用余额
请返回四位小数
Yes
BeforeBalance Decimal 之前的信用余额
请返回四位小数
Yes
来自Seamless的示例请求正文:
{
 "Transactions": [
  {
   "MemberID": 0,
   "OperatorID": 0,
   "ProductID": 1002,
   "ProviderID": 0,
   "ProviderLineID": 0,
   "WagerID": 221027032644145,
   "CurrencyID": 1,
   "GameType": 2,
   "GameID": "TestGame",
   "GameRoundID": "221027032644145",
   "ValidBetAmount": 10,
   "BetAmount": 10,
   "TransactionAmount": 10,
   "TransactionID": "221027032644145_2",
   "PayoutAmount": 10,
   "PayoutDetail": null,
   "CommissionAmount": 0,
   "JackpotAmount": 0,
   "SettlementDate": "2022-10-27T03:26:44.3437171Z",
   "JPBet": 0,
   "Status": 101,
   "CreatedOn": "2022-10-27T03:26:44.3437171Z",
   "ModifiedOn": "2022-10-27T03:26:44.3437171Z"
  }
 ],
 "MemberName": "TESTER",
 "OperatorCode": "ABCD",
 "ProductID": 1002,
 "MessageID": "221027032644343_ TESTER ",
 "Sign": "cb83e5e4a465a7154e1b838d6ff403fc",
 "RequestTime": "20221027032644"
}
                    
运营商预期的响应:
{
  "ErrorCode": 0,
  "ErrorMessage": "Success",
  "Balance": 96.95,
  "BeforeBalance": 86.95
}
                    
 
2.4 回滚
请求路径: (CallbackURL)/Seamless/Rollback
备注:
  • 这个API是由供应商触发的。每当供应商想要回滚特定玩家的赢取金额时,seamless将在运营商端调用此API。
  • 如果TransactionID不为空并且在运营商系统中存在并且之前已退还,请返回重复的交易。
  • WagerID可能为空,请与TransactionID核对。
  • TransactionAmount是需要从玩家钱包中扣除的金额。
  • 请注意,在某些情况下,Rollback API也可以用于投注调整,其中供应商希望从投注金额中返还特定金额给玩家,同时保持投注处于活动状态而不取消它。请参阅附录5.7,了解投注调整示例和取消胜利示例。
  • 此外,请注意有关投注的状态。由于某些供应商会作废整个投注,同时要求我们计算需要从玩家钱包中扣除/返还的金额。在这种情况下,我们将使用Rollback API来撤销整个投注的交易,包括其赔付。请参阅附录5.7,了解使用Rollback API的反向投注交易示例。
Request Parameters:
Parameter Type Description Required
MemberName String 运营商中玩家的唯一标识符 Yes
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
ProductID Long Seamless中产品的唯一标识符 Yes
MessageID String 当前API请求的唯一标识符 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Sign String 请求的签名
请参考集成 API 1.1 获取签名的方法。
Yes
Transactions List< Transaction> 交易对象列表
请参阅模型4.1以获取交易的详细信息。
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码 Yes
ErrorMessage String 响应的消息 Yes
Balance Decimal 最终信用余额
请返回四位小数
Yes
BeforeBalance Decimal 之前的信用余额
请返回四位小数
Yes
来自Seamless的示例请求正文:
{
 "Transactions": [
  {
   "MemberID": 0,
   "OperatorID": 0,
   "ProductID": 1002,
   "ProviderID": 0,
   "ProviderLineID": 0,
   "WagerID": 221027032645244,
   "CurrencyID": 1,
   "GameType": 2,
   "GameID": "TestGame",
   "GameRoundID": "221027032645244",
   "ValidBetAmount": 10,
   "BetAmount": 10,
   "TransactionAmount": -10,
   "TransactionID": "221027032645244_3",
   "PayoutAmount": 0,
   "PayoutDetail": null,
   "CommissionAmount": 0,
   "JackpotAmount": 0,
   "SettlementDate": "null",
   "JPBet": 0,
   "Status": 100,
   "CreatedOn": "2022-10-27T03:26:45.6532539Z",
   "ModifiedOn": "2022-10-27T03:26:45.6532539Z"
  }
 ],
 "MemberName": "TESTER",
 "OperatorCode": "ABCD",
 "ProductID": 1002,
 "MessageID": "221027032645653_ TESTER ",
 "Sign": "cb06c77e47921f822a11d16eb5afdade",
 "RequestTime": "20221027032645"
}
                    
运营商预期的响应:
{
  "ErrorCode": 0,
  "ErrorMessage": "Success",
  "Balance": 86.95,
  "BeforeBalance": 96.95
}
                    
 
2.5 取消下注
请求路径: (CallbackURL)/Seamless/CancelBet
备注:
  • 这个API是由供应商触发的事件驱动的。每当供应商因未知错误(例如网络问题)而想要取消特定玩家的下注时,Seamless将在运营方中调用这个API。
  • 如果TransactionID不为空且在运营方系统中存在,并在之前已退款,请返回重复交易。
  • WagerID可能为空,请与TransactionID进行核对。
  • TransactionAmount是需要退还到玩家钱包的金额。
  • 请参考附录5.7关于取消下注的状态。
Request Parameters:
Parameter Type Description Required
MemberName String 运营商中玩家的唯一标识符 Yes
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
ProductID Long Seamless中产品的唯一标识符 Yes
MessageID String 当前API请求的唯一标识符 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Sign String 请求的签名
请参考集成 API 1.1 获取签名的方法。
Yes
Transactions List< Transaction> 交易对象列表
请参阅模型4.1以获取交易的详细信息。
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码 Yes
ErrorMessage String 响应的消息 Yes
Balance Decimal 最终信用余额
请返回四位小数
Yes
BeforeBalance Decimal 之前的信用余额
请返回四位小数
Yes
来自Seamless的示例请求正文:
{
 "Transactions": [
  {
   "MemberID": 0,
   "OperatorID": 0,
   "ProductID": 1002,
   "ProviderID": 0,
   "ProviderLineID": 0,
   "WagerID": 221027032647591,
   "CurrencyID": 1,
   "GameType": 2,
   "GameID": "TestGame",
   "GameRoundID": "221027032647591",
   "ValidBetAmount": 0,
   "BetAmount": 0,
   "TransactionAmount": 10,
   "TransactionID": "221027032647591_2",
   "PayoutAmount": 0,
   "PayoutDetail": null,
   "CommissionAmount": 0,
   "JackpotAmount": 0,
   "SettlementDate": "2022-10-27T03:26:47.7607866Z",
   "JPBet": 0,
   "Status": 102,
   "CreatedOn": "2022-10-27T03:26:47.7607866Z",
   "ModifiedOn": "2022-10-27T03:26:47.7607866Z"
  }
 ],
 "MemberName": "TESTER",
 "OperatorCode": "ABCD",
 "ProductID": 1002,
 "MessageID": "221027032647760_ TESTER ",
 "Sign": "6ae2642c9d419182c39d95b983980f69",
 "RequestTime": "20221027032647"
}
                    
运营商预期的响应:
{
  "ErrorCode": 0,
  "ErrorMessage": "Success",
  "Balance": 96.95,
  "BeforeBalance": 86.95
}
                    
 
2.6 奖金/红利
请求路径: (CallbackURL)/Seamless/Bonus
备注:
  • 这个API是由供应商触发的事件驱动。当有奖金或促销支付时,供应商将调用这个API来进行从奖金/促销中获得的额外支付,从而让Seamless将调用这个API到运营方,执行前面描述的操作。
  • TransactionAmount是需要存入玩家钱包的金额,对于奖金 (Bonus) 总是正数。下注状态也将直接为101 = Bet_Settled。
  • 请参考附录5.7,了解游戏结果 (GameResult)、奖池 (Jackpot)和奖金 (Bonus)之间的区别。
Request Parameters:
Parameter Type Description Required
MemberName String 运营商中玩家的唯一标识符 Yes
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
ProductID Long Seamless中产品的唯一标识符 Yes
MessageID String 当前API请求的唯一标识符 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Sign String 请求的签名
请参考集成 API 1.1 获取签名的方法。
Yes
Transactions List< Transaction> 交易对象列表
请参阅模型4.1以获取交易的详细信息。
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码 Yes
ErrorMessage String 响应的消息 Yes
Balance Decimal 最终信用余额
请返回四位小数
Yes
BeforeBalance Decimal 之前的信用余额
请返回四位小数
Yes
来自Seamless的示例请求正文:
{
 "Transactions": [
  {
   "MemberID": 0,
   "OperatorID": 0,
   "ProductID": 1002,
   "ProviderID": 0,
   "ProviderLineID": 0,
   "WagerID": 221027032652728,
   "CurrencyID": 1,
   "GameType": 11,
   "GameID": "TestGame",
   "GameRoundID": "",
   "ValidBetAmount": 0,
   "BetAmount": 0,
   "TransactionAmount": 10,
   "TransactionID": "221027032652728_1",
   "PayoutAmount": 10,
   "PayoutDetail": null,
   "CommissionAmount": 0,
   "JackpotAmount": 0,
   "SettlementDate": "2022-10-27T03:26:52.7280019Z",
   "JPBet": 0,
   "Status": 101,
   "CreatedOn": "2022-10-27T03:26:52.7280019Z",
   "ModifiedOn": "2022-10-27T03:26:52.7280019Z"
  }
 ],
 "MemberName": "TESTER",
 "OperatorCode": "ABCD",
 "ProductID": 1002,
 "MessageID": "221027032652728_ TESTER ",
 "Sign": "7491c3e8563d228ed8b8b460d0aa6592",
 "RequestTime": "20221027032652"
}
                    
运营商预期的响应:
{
  "ErrorCode": 0,
  "ErrorMessage": "Success",
  "Balance": 106.95,
  "BeforeBalance": 96.95
}
                    
 
2.7 奖池
请求路径: (CallbackURL)/Seamless/Jackpot
备注:
  • 这个API是由供应商触发的事件驱动型操作。当有奖池奖励时,供应商会调用这个API来获取从奖池中获得的奖金。请注意,并非所有在游戏屏幕上显示的奖池都被视为奖池,我们会根据供应商的区分来进行区分。
  • 例如,如果玩家在老虎机游戏中赢得游戏内奖池,但供应商不将其视为奖池,而只视为普通旋转和游戏结果,那么我们也会同样处理,不会调用这个奖池API。
  • TransactionAmount 是需要存入玩家钱包的金额,奖池将始终为正值
  • 请参考附录 5.7 以了解游戏结果(GameResult)、奖池(Jackpot)和奖金(Bonus)之间的区别。
Request Parameters:
Parameter Type Description Required
MemberName String 运营商中玩家的唯一标识符 Yes
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
ProductID Long Seamless中产品的唯一标识符 Yes
MessageID String 当前API请求的唯一标识符 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Sign String 请求的签名
请参考集成 API 1.1 获取签名的方法。
Yes
Transactions List< Transaction> 交易对象列表
请参阅模型4.1以获取交易的详细信息。
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码 Yes
ErrorMessage String 响应的消息 Yes
Balance Decimal 最终信用余额
请返回四位小数
Yes
BeforeBalance Decimal 之前的信用余额
请返回四位小数
Yes
来自Seamless的示例请求正文:
{
 "Transactions": [
  {
   "MemberID": 0,
   "OperatorID": 0,
   "ProductID": 1002,
   "ProviderID": 0,
   "ProviderLineID": 0,
   "WagerID": 221027032653618,
   "CurrencyID": 1,
   "GameType": 12,
   "GameID": "TestGame",
   "GameRoundID": "",
   "ValidBetAmount": 0,
   "BetAmount": 0,
   "TransactionAmount": 10,
   "TransactionID": "221027032653618_1",
   "PayoutAmount": 10,
   "PayoutDetail": null,
   "CommissionAmount": 0,
   "JackpotAmount": 10,
   "SettlementDate": "2022-10-27T03:26:53.6180869Z",
   "JPBet": 0,
   "Status": 101,
   "CreatedOn": "2022-10-27T03:26:53.6180869Z",
   "ModifiedOn": "2022-10-27T03:26:53.6180869Z"
  }
 ],
 "MemberName": "TESTER",
 "OperatorCode": "ABCD",
 "ProductID": 1002,
 "MessageID": "221027032653618_ TESTER ",
 "Sign": "8c216b4e0889f1e0037b0e3858eb13ba",
 "RequestTime": "20221027032653"
}
                    
运营商预期的响应:
{
  "ErrorCode": 0,
  "ErrorMessage": "Success",
  "Balance": 116.95,
  "BeforeBalance": 106.95
}
                    
 
2.8 手机登录
请求路径: (CallbackURL)/Seamless/MobileLogin
备注:
  • 该API是由供应商触发的事件,当有玩家打算通过手机设备访问供应商的游戏时,供应商将调用此API进行特定玩家的手机登录,从而导致Seamless在运营商端调用此API以进行特定玩家的手机登录。
Request Parameters:
Parameter Type Description Required
MemberName String 运营商中玩家的唯一标识符 Yes
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
ProductID Long Seamless中产品的唯一标识符 Yes
MessageID String 当前API请求的唯一标识符 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Sign String 请求的签名
请参考集成 API 1.1 获取签名的方法。
Yes
Password String 运营商中玩家的密码 Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码 Yes
ErrorMessage String 响应的消息 Yes
Balance Decimal 最终信用余额
请返回四位小数
Yes
来自Seamless的示例请求正文:
{
 "Password": "TESTERPASSWORD",
 "MemberName": "TESTER",
 "OperatorCode": "ABCD",
 "ProductID": 1002,
 "MessageID": "221027032703750_ TESTER ",
 "Sign": "6189b54f7b53093b593930dc5cd58bfd",
 "RequestTime": "20221027032703"
}
                    
运营商预期的响应:
{
  "ErrorCode": 0,
  "ErrorMessage": "Success",
  "Balance": 116.95,
  "BeforeBalance": 0
}
                    
 
2.9 买入
请求路径: (CallbackURL)/Seamless/BuyIn
备注:
  • 这个API是由供应商触发的事件驱动的。当只有一笔交易需要扣除玩家的钱包余额时,Seamless将在运营方中调用这个API。此外,有两种情景会导致调用这个API。
  • 情景A:与下注交易没有关联的下注细节,比如下注属于哪个游戏回合。在这种情况下,我们将要求您的一方扣除玩家的钱包,以使交易成功并使游戏下注继续进行。随后,将有一个Push Bet API调用到您的一方,以“推送”下注细节,以反映在BuyIn API调用中执行的交易。
  • 情景B:这是一种正常的存款操作,即将玩家钱包中的一定金额转入供应商的游戏中。
  • 如果WagerID为空,请检查TransactionID。如果TransactionID不为空并存在于运营方系统中,请返回重复交易。
  • TransactionAmount是需要从玩家钱包中扣除的金额,它将是一个负数值。
Request Parameters:
Parameter Type Description Required
MemberName String 运营商中玩家的唯一标识符 Yes
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
ProductID Long Seamless中产品的唯一标识符 Yes
MessageID String 当前API请求的唯一标识符 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Sign String 请求的签名
请参考集成 API 1.1 获取签名的方法。
Yes
Transaction Transaction 单个交易对象
请参阅模型4.1以获取交易的详细信息。
Yes
CheckLimit Bool 检查买入限制
默认值为假 (false)
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码 Yes
ErrorMessage String 响应的消息 Yes
Balance Decimal 最终信用余额
请返回四位小数
Yes
BeforeBalance Decimal 之前的信用余额
请返回四位小数
Yes
来自Seamless的示例请求正文:
{
 "CheckLimit": false,
 "Transaction": {
   "MemberID": 0,
   "OperatorID": 0,
   "ProductID": 1002,
   "ProviderID": 0,
   "ProviderLineID": 0,
   "WagerID": 0,
   "CurrencyID": 1,
   "GameType": 8,
   "GameID": "TestGame",
   "GameRoundID": "null",
   "ValidBetAmount": 0,
   "BetAmount": 0,
   "TransactionAmount": -10,
   "TransactionID": "221027032654583_1",
   "PayoutAmount": 0,
   "PayoutDetail": null,
   "CommissionAmount": 0,
   "JackpotAmount": 0,
   "SettlementDate": "null",
   "JPBet": 0,
   "Status": 0,
   "CreatedOn": "2022-10-27T03:26:54.5835409Z",
   "ModifiedOn": "2022-10-27T03:26:54.5835409Z"
  },
 "MemberName": "TESTER",
 "OperatorCode": "ABCD",
 "ProductID": 1002,
 "MessageID": "221027032654583_ TESTER ",
 "Sign": "1681e098ac447156e6c00b18ab99b359",
 "RequestTime": "20221027032654"
}
                    
运营商预期的响应:
{
  "ErrorCode": 0,
  "ErrorMessage": "Success",
  "Balance": 106.95,
  "BeforeBalance": 116.95
}
                    
 
2.10 买断
请求路径: (CallbackURL)/Seamless/BuyOut
备注:
  • 这个API是由供应商触发的事件驱动的。当只有一笔交易需要增加玩家的钱包余额时,Seamless将在运营方中调用这个API。有两种情景会导致调用这个API。
  • 情景A:与支付交易没有关联的下注细节,比如支付属于哪个游戏回合。在这种情况下,我们将要求您的一方增加玩家的钱包,以使交易成功并使游戏中的支付继续进行。随后,将有一个Push Bet API调用到您的一方,以“推送”下注细节,以反映在BuyOut API调用中执行的交易。
  • 情景B:这是一种正常的提款操作,即之前存入特定供应商游戏的玩家钱包中的一定金额现在被转回到玩家的钱包中。
  • WagerID可能为空,请检查TransactionID。如果TransactionID不为空并存在于运营方系统中,请返回重复交易。
  • TransactionAmount是需要存入玩家钱包的金额,它将是一个正数值。
Request Parameters:
Parameter Type Description Required
MemberName String 运营商中玩家的唯一标识符 Yes
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
ProductID Long Seamless中产品的唯一标识符 Yes
MessageID String 当前API请求的唯一标识符 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Sign String 请求的签名
请参考集成 API 1.1 获取签名的方法。
Yes
Transaction Transaction 单个交易对象
请参阅模型4.1以获取交易的详细信息。
Yes
IsAddWager Bool 用于检查在买断期间是否添加了赌注记录的标识符
默认值为false
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码 Yes
ErrorMessage String 响应的消息 Yes
Balance Decimal 最终信用余额
请返回四位小数
Yes
BeforeBalance Decimal 之前的信用余额
请返回四位小数
Yes
来自Seamless的示例请求正文:
{
 "IsAddWager": false,
 "Transaction": {
   "MemberID": 0,
   "OperatorID": 0,
   "ProductID": 1002,
   "ProviderID": 0,
   "ProviderLineID": 0,
   "WagerID": 0,
   "CurrencyID": 1,
   "GameType": 8,
   "GameID": "TestGame",
   "GameRoundID": "null",
   "ValidBetAmount": 0,
   "BetAmount": 0,
   "TransactionAmount": 10,
   "TransactionID": "221027032702116_1",
   "PayoutAmount": 0,
   "PayoutDetail": null,
   "CommissionAmount": 0,
   "JackpotAmount": 0,
   "SettlementDate": "null",
   "JPBet": 0,
   "Status": 0,
   "CreatedOn": "2022-10-27T03:27:02.1162202Z",
   "ModifiedOn": "2022-10-27T03:27:02.1162202Z"
  },
 "MemberName": "TESTER",
 "OperatorCode": "ABCD",
 "ProductID": 1002,
 "MessageID": "221027032702116_ TESTER ",
 "Sign": "0066768f0ae65684c340956b96c6d839",
 "RequestTime": "20221027032702"
}
                    
运营商预期的响应:
{
  "ErrorCode": 0,
  "ErrorMessage": "Success",
  "Balance": 116.95,
  "BeforeBalance": 106.95
}
                    
 
2.11 下注推送
请求路径: (CallbackURL)/Seamless/PushBet
备注:
  • 此 API 是由供应商驱动的。当 BuyIn 或 BuyOut API 调用用于没有与这些 API 调用相关联的投注或支付交易时,此 PushBet API 调用将向运营商端“推送”这些投注详细信息,以便运营商端拥有反映 BuyIn/BuyOut API 调用中执行的交易的投注详细信息。简而言之,Seamless 将调用此 API 以在运营商端记录 BuyIn/BuyOut API 调用中的交易产生的赢利/亏损记录。
  • 请注意,此 API 不用于交易。在接收到此 API 调用后,请不要执行任何交易。它仅用于将赢利/亏损记录推送给运营商。
  • 请注意,“PushBet” 不是一个即时的过程,将需要时间来推送数据。此外,不幸的是,我们无法确定哪个 BuyIn/BuyOut API 调用属于哪个投注详情,因为提供商没有提供我们用于这种映射的特定 ID。
Request Parameters:
Parameter Type Description Required
MemberName String 运营商中玩家的唯一标识符 Yes
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
ProductID Long Seamless中产品的唯一标识符 Yes
MessageID String 当前API请求的唯一标识符 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Sign String 请求的签名
请参考集成 API 1.1 获取签名的方法。
Yes
Transactions List< Transaction> 交易对象列表
请参阅模型4.1以获取交易的详细信息。
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码 Yes
ErrorMessage String 响应的消息 Yes
Balance Decimal 最终信用余额
请返回四位小数
Yes
来自Seamless的示例请求正文:
{
 "Transactions": [
  {
   "MemberID": 0,
   "OperatorID": 0,
   "ProductID": 1002,
   "ProviderID": 0,
   "ProviderLineID": 0,
   "WagerID": 221027032702775,
   "CurrencyID": 1,
   "GameType": 1,
   "GameID": "TestGame",
   "GameRoundID": "221027032702775",
   "ValidBetAmount": 10,
   "BetAmount": 10,
   "TransactionAmount": 0,
   "TransactionID": "null",
   "PayoutAmount": 20,
   "PayoutDetail": null,
   "CommissionAmount": 0,
   "JackpotAmount": 0,
   "SettlementDate": "2022-10-27T03:27:02.7754423Z",
   "JPBet": 0,
   "Status": 101,
   "CreatedOn": "2022-10-27T03:27:02.7754423Z",
   "ModifiedOn": "2022-10-27T03:27:02.7754423Z"
  }
 ],
 "MemberName": "TESTER",
 "OperatorCode": "ABCD",
 "ProductID": 1002,
 "MessageID": "221027032702775_ TESTER ",
 "Sign": "null",
 "RequestTime": "null"
}
                    
运营商预期的响应:
{
  "ErrorCode": 0,
  "ErrorMessage": "Success",
  "Balance": 116.95,
  "BeforeBalance": 0
}
                    
 
3. 运营商 (Operator) API
3.1 启动游戏
请求路径: (ApiUrl)/Seamless/LaunchGame
备注:
  • 这个API由运营商触发的事件驱动型操作。每当运营商需要启动游戏时,请在Seamless中调用这个API。
  • Seamless将通过这个API调用自动注册新玩家。
  • 在Seamless调用运营商端时,MemberName参数将被运营商用于识别玩家。
Request Parameters:
Parameter Type Description Required
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
MemberName String 运营商中玩家的唯一标识符 Yes
DisplayName String 玩家的显示名称 No
Password String 运营商中玩家的密码 No
GameID String 唯一供应商游戏代码
请参考 "运营商 API 3.4" 以获取游戏ID
No
ProviderGameType String 需要启动特定供应商游戏的供应商游戏类型。
请参考 Operator API 3.4 以获取 ProviderGameType,并了解是否有相关数值。
No
ProductID Int Seamless中产品的唯一标识符
请参考“BO > API Info”页面获取产品代码。
Yes
GameType Int 游戏类型
请参考附录5.6以了解游戏类型。
Yes
LanguageCode Int 语言代码
请参考附录 5.4 以获取语言代码
Yes
Platform Int 平台
请参考附录5.5以获取平台代码。
Yes
IPAddress String 客户端的 IP 地址 Yes
OperatorLobbyURL String 用于存储运营商主页URL的参数,以将玩家重定向到运营商的主页。
请参考附录5.7以了解哪些供应商允许重定向到运营商的主页。
No
Sign String 请求的签名 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码
请参考附录 5.1 获取错误代码。
Yes
ErrorMessage String 响应的消息 Yes
Url String 游戏网址 No
来自操作员的示例请求正文:
{
  "OperatorCode": "ABCD",
  "MemberName": "TESTER",
  "Password": "TESTERPASSWORD",
  "ProductID": "1091",
  "GameType": "1",
  "LanguageCode": "1",
  "Platform": "0",
  "Sign": "e2c7650619bdc2bf36458122d27b8cc9",
  "RequestTime": "20230315104218"
}
                    
Seamless预期的响应:
{
  "Url": "https://uat-wbgame.jlfafafa3.com/fish/index.html?ssoKey=1F-7cL8o7EHrehZrCCW-l-23tok&lang=en-US&apiId=1441&be=moc.teertsmsti.ipabewbw-tau&domain_gs=teertsmsti&domain_platform=moc.teertsmsti.df-tolsbw-tau&gameId=1&gs=teertsmsti&iu=true",
  "ErrorCode": 0,
  "ErrorMessage": null
}
                    
 
3.2 获取报告
请求路径: (ApiUrl)/Seamless/PullReport
备注:
  • 这个API由运营方触发。每当运营方希望提取报告以查看在指定时间段内的未结算和已结算的投注记录时,请在Seamless中调用此API。
  • 请在StartDate和EndDate之间使用最多5分钟的时间间隔,以防止对我们的服务器造成过大的负荷。否则,如果您不遵守这个规则,我们将对您的API调用做出错误响应。
Request Parameters:
Parameter Type Description Required
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
StartDate String 投注时间搜索范围的开始日期
DateTime格式为 yy-mm-dd
Yes
EndDate String 投注时间搜索范围的结束日期
DateTime格式为 yy-mm-dd
Yes
Sign String 请求的签名 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码
请参考附录 5.1 获取错误代码。
Yes
ErrorMessage String 响应的消息 Yes
Wagers List< Wager> 投注列表
请参考模型 4.2 以获取每个投注的详细信息。
No
来自操作员的示例请求正文:
{
  "OperatorCode": "ABCD",
  "StartDate": "2023-01-04 08:13:00",
  "EndDate": "2023-01-04 08:18:00",
  "Sign": "6556451b8da3d674eb3c1730bbf6a533",
  "RequestTime": "20230315104218"
}
                    
Seamless预期的响应:
{
  "Wagers": [
    {
      "MemberName": "demo_jili",
      "ProductID": 1091,
      "WagerID": 1111,
      "CurrencyID": 8,
      "GameType": 1,
      "GameID": "135",
      "GameRoundID": "1661394429190876135",
      "ValidBetAmount": 1,
      "BetAmount": 1,
      "PayoutAmount": 0,
      "CommissionAmount": 0,
      "JackpotAmount": 0,
      "SettlementDate": "2023-01-04T08:14:55",
      "JPBet": 0,
      "Status": 101,
      "CreatedOn": "2023-01-04T08:13:35",
      "ModifiedOn": "2023-01-04T08:14:55"
    },
    {
      "MemberName": "demo_jili",
      "ProductID": 1091,
      "WagerID": 2222,
      "CurrencyID": 8,
      "GameType": 8,
      "GameID": "119",
      "GameRoundID": "424589082685896823",
      "ValidBetAmount": 12,
      "BetAmount": 12,
      "PayoutAmount": 16,
      "CommissionAmount": 0,
      "JackpotAmount": 0,
      "SettlementDate": "2023-01-04T08:16:49",
      "JPBet": 0,
      "Status": 101,
      "CreatedOn": "2023-01-04T08:15:35",
      "ModifiedOn": "2023-01-04T08:16:49"
    },
    {
      "MemberName": "demo_jili",
      "ProductID": 1091,
      "WagerID": 3333,
      "CurrencyID": 8,
      "GameType": 8,
      "GameID": "119",
      "GameRoundID": "424589087719061623",
      "ValidBetAmount": 20,
      "BetAmount": 20,
      "PayoutAmount": 14,
      "CommissionAmount": 0,
      "JackpotAmount": 0,
      "SettlementDate": "2023-01-04T08:18:55",
      "JPBet": 0,
      "Status": 101,
      "CreatedOn": "2023-01-04T08:17:35",
      "ModifiedOn": "2023-01-04T08:18:55"
    }
  ],
  "ErrorCode": 0,
  "ErrorMessage": null
}
                    
 
3.3 按结算日期提取报告
请求路径: (ApiUrl)/Seamless/PullReportBySettlementDate
备注:
  • 此API由操作员触发。每当操作员想要提取一个报告以查看特定时间段内已结算的投注记录时,请在Seamless中调用此API。
  • 请在StartDate和EndDate之间使用最多5分钟的时间间隔,以防止对我们的服务器造成过大的负荷。否则,如果您不遵守这个规则,我们将对您的API调用做出错误响应。
Request Parameters:
Parameter Type Description Required
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
StartDate String 投注时间搜索范围的开始日期
DateTime格式为 yy-mm-dd
Yes
EndDate String 投注时间搜索范围的结束日期
DateTime格式为 yy-mm-dd
Yes
Sign String 请求的签名 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码
请参考附录 5.1 获取错误代码。
Yes
ErrorMessage String 响应的消息 Yes
Wagers List< Wager> 投注列表
请参考模型 4.2 以获取每个投注的详细信息。
No
来自操作员的示例请求正文:
{
  "OperatorCode": "ABCD",
  "StartDate": "2023-01-04 08:13:00",
  "EndDate": "2023-01-04 08:18:00",
  "Sign": "7b01ccc0de9f0a24b91e23c41c704ae8",
  "RequestTime": "20230315104218"
}
                    
Seamless预期的响应:
{
  "Wagers": [
    {
      "MemberName": "demo_jili",
      "ProductID": 1091,
      "WagerID": 1111,
      "CurrencyID": 8,
      "GameType": 1,
      "GameID": "135",
      "GameRoundID": "1661394429190876135",
      "ValidBetAmount": 1,
      "BetAmount": 1,
      "PayoutAmount": 0,
      "CommissionAmount": 0,
      "JackpotAmount": 0,
      "SettlementDate": "2023-01-04T08:14:55",
      "JPBet": 0,
      "Status": 101,
      "CreatedOn": "2023-01-04T08:13:35",
      "ModifiedOn": "2023-01-04T08:14:55"
    },
    {
      "MemberName": "demo_jili",
      "ProductID": 1091,
      "WagerID": 2222,
      "CurrencyID": 8,
      "GameType": 8,
      "GameID": "119",
      "GameRoundID": "424589082685896823",
      "ValidBetAmount": 12,
      "BetAmount": 12,
      "PayoutAmount": 16,
      "CommissionAmount": 0,
      "JackpotAmount": 0,
      "SettlementDate": "2023-01-04T08:16:49",
      "JPBet": 0,
      "Status": 101,
      "CreatedOn": "2023-01-04T08:15:35",
      "ModifiedOn": "2023-01-04T08:16:49"
    }
  ],
  "ErrorCode": 0,
  "ErrorMessage": null
}
                    
 
3.4 获取游戏列表
请求路径: (ApiUrl)/Seamless/GetGameList
备注:
  • 这个API是由运营商触发的事件驱动型操作。每当运营商需要获取特定产品的游戏列表,并指定游戏类型时,请在Seamless中调用这个API。
  • 尽管只是获取游戏列表,但请输入一个有效的MemberName,因为某些供应商要求提供有效的会员信息才能获取他们的游戏列表。
  • 请注意,并非所有供应商都提供GetGameList功能,您可以参考附录5.7以获取更多相关信息。
  • 请从响应ProviderGames中提取GameCode和ProviderGameType(如果有值,没有则可忽略),然后传递到3.1启动游戏API的GameID和ProviderGameType参数,以启动游戏。
Request Parameters:
Parameter Type Description Required
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
MemberName String 运营商中玩家的唯一标识符 Yes
DisplayName String 玩家的显示名称 No
Password String 运营商中玩家的密码 No
GameID String 唯一供应商游戏代码
请参考 "运营商 API 3.4" 以获取游戏ID
No
ProductID Int Seamless中产品的唯一标识符
请参考“BO > API Info”页面获取产品代码。
Yes
GameType Int 游戏类型
请参考附录5.6以了解游戏类型。
Yes
LanguageCode Int 语言代码
请参考附录 5.4 以获取语言代码
Yes
Platform Int 平台
请参考附录5.5以获取平台代码。
Yes
IPAddress String 客户端的 IP 地址 Yes
Sign String 请求的签名 Yes
RequestTime String 请求日期时间
日期时间格式为yyyyMMddHHmmss
Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码
请参考附录 5.1 获取错误代码。
Yes
ErrorMessage String 响应的消息 Yes
ProviderGames List< ProviderGames> 供应商游戏列表
请参考 4. Model 下的 提供商游戏详情
No
来自Seamless的示例请求正文:
{
  "OperatorCode": "ABCD",
  "MemberName": "TESTER",
  "DisplayName": "f61bd50815a4c3656ae5b4e46c2bfc08",
  "ProductID": 1009,
  "GameType": 1,
  "LanguageCode": 1,
  "Platform": 0,
  "Sign": "c0a6124139b4822ae86a243c35503fdf",
  "RequestTime": "20230315104218"
}
                    
Seamless预期的响应:
{
  "ProviderGames": [
    {
      "GameCode": "2",
      "GameName": "GodOfChess",
      "GameType": 1,
      "Category": "Games",
      "ImageUrl": "http://localhost:1002/Image/CQ9/en/2.png",
      "ProviderGameType": null
    },
    {
      "GameCode": "10",
      "GameName": "LuckyBats",
      "GameType": 1,
      "Category": "Games",
      "ImageUrl": "http://localhost:1002/Image/CQ9/en/10.png",
      "ProviderGameType": null
    },
    {
      "GameCode": "35",
      "GameName": "Crazy NuoZha",
      "GameType": 1,
      "Category": "Games",
      "ImageUrl": "http://localhost:1002/Image/CQ9/en/35.png",
      "ProviderGameType": null
    }
  ],
  "ErrorCode": 0,
  "ErrorMessage": null
}
                    
 
3.5 获取下注详情
请求路径: (ApiUrl)/Report/BetDetail?agentCode=agentCode&WagerID=WagerID
备注:
  • 这个API是由运营商触发的事件驱动型操作。每当运营商需要查询特定赌注的下注详情时,请在Seamless中调用这个API。
  • 请使用已创建的URL及其查询字符串,重定向到相应页面以查看查询的赌注下注详情。
Request Parameters:
Parameter Type Description Required
agentCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
WagerID Long 用于查询的投注的WagerID Yes
运营商生成的示例URL:
https://ApiURL/Report/BetDetail?agentCode=ABCD&WagerID=33388
                    
 
3.6 按投注ID提取报告
请求路径: (ApiUrl)/Seamless/PullReportByWagerIDs
备注:
  • 这个API由运营方触发。每当运营方希望提取按投注ID查看的报告时,请在Seamless中调用此API。
Request Parameters:
Parameter Type Description Required
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
WagerIDs List< Long > 要查询投注的WagerID的列表 Yes
Response Parameters:
Parameter Type Description Required
Wagers List< Wager> 投注列表
请参考模型 4.2 以获取每个投注的详细信息。
No
ErrorCode Int 响应的状态代码
请参考附录 5.1 获取错误代码。
Yes
ErrorMessage String 响应的消息 Yes
来自操作员的示例请求正文:
{
  "OperatorCode": "ABCD",
  "WagerIDs": [
    2180032,
    2180031
  ]
}
                    
Seamless预期的响应:
{
    "Wagers": [
        {
            "MemberName": "220331",
            "ProductID": 1091,
            "WagerID": 2180031,
            "CurrencyID": 8,
            "GameType": 1,
            "GameID": "51",
            "GameRoundID": "1685610458544190051",
            "ValidBetAmount": 100.0000,
            "BetAmount": 100.0000,
            "PayoutAmount": 0.0000,
            "CommissionAmount": 0.0000,
            "JackpotAmount": 0.0000,
            "JPBet": 0.0000,
            "Status": 101,
            "SettlementDate": "2023-06-09T10:42:59",
            "CreatedOn": "2023-06-09T10:42:59",
            "ModifiedOn": "2023-06-09T10:42:59"
        },
        {
            "MemberName": "220331",
            "ProductID": 1091,
            "WagerID": 2180032,
            "CurrencyID": 8,
            "GameType": 1,
            "GameID": "51",
            "GameRoundID": "1685610458544200051",
            "ValidBetAmount": 100.0000,
            "BetAmount": 100.0000,
            "PayoutAmount": 0.0000,
            "CommissionAmount": 0.0000,
            "JackpotAmount": 0.0000,
            "JPBet": 0.0000,
            "Status": 101,
            "SettlementDate": "2023-06-09T10:43:02",
            "CreatedOn": "2023-06-09T10:43:02",
            "ModifiedOn": "2023-06-09T10:43:02"
        }
    ],
    "ErrorCode": 0,
    "ErrorMessage": null
}
                    
 
3.7 拉取未完成投注
请求路径: (ApiUrl)/Seamless/PullPendingRecords
备注:
  • 这个API由运营方触发。每当运营方希望提取未完成的投注时,请在Seamless中调用此API。
  • 请在StartDate和EndDate之间使用最多24小时的时间间隔,以防止对我们的服务器造成过大的负荷。否则,如果您不遵守这个规则,我们将对您的API调用做出错误响应。
Request Parameters:
Parameter Type Description Required
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
ProductID Int Seamless中产品的唯一标识符
请参考“BO > API Info”页面获取产品代码。
Yes
GameType Int 游戏类型
请参考附录5.6以了解游戏类型。
Yes
StartDate String 投注时间搜索范围的开始日期
DateTime格式为 yy-mm-dd
Yes
EndDate String 投注时间搜索范围的结束日期
DateTime格式为 yy-mm-dd
Yes
Response Parameters:
Parameter Type Description Required
Wagers List< Wager> 投注列表
请参考模型 4.2 以获取每个投注的详细信息。
No
ErrorCode Int 响应的状态代码
请参考附录 5.1 获取错误代码。
Yes
ErrorMessage String 响应的消息 Yes
来自操作员的示例请求正文:
{
    "OperatorCode": "ABCD",
    "ProductID": 1009,
    "GameType": 8,
    "StartDate": "2023-12-14 00:00:00",
    "EndDate": "2023-12-15 00:00:00"
}
                    
Seamless预期的响应:
{
    "Wagers": [
        {
            "MemberName": "demo_cq9",
            "ProductID": 1009,
            "WagerID": 2703221,
            "CurrencyID": 8,
            "GameType": 8,
            "GameID": "GO02",
            "GameRoundID": "GO02m1232669m1m1",
            "ValidBetAmount": 1.1000,
            "BetAmount": 1.1000,
            "PayoutAmount": 1.7000,
            "CommissionAmount": 0.0000,
            "JackpotAmount": 0.0000,
            "JPBet": 0.0000,
            "Status": 100,
            "SettlementDate": "2023-12-14T04:48:08",
            "CreatedOn": "2023-12-14T04:48:08",
            "ModifiedOn": "2023-12-14T04:48:08"
        },
        {
            "MemberName": "demo_cq9",
            "ProductID": 1009,
            "WagerID": 2704317,
            "CurrencyID": 8,
            "GameType": 8,
            "GameID": "GO02",
            "GameRoundID": "GO02m1232715m1m1",
            "ValidBetAmount": 3.9000,
            "BetAmount": 3.9000,
            "PayoutAmount": 11.6000,
            "CommissionAmount": 0.0000,
            "JackpotAmount": 0.0000,
            "JPBet": 0.0000,
            "Status": 100,
            "SettlementDate": "2023-12-14T07:40:53",
            "CreatedOn": "2023-12-14T07:40:53",
            "ModifiedOn": "2023-12-14T07:40:53"
        }
    ],
    "ErrorCode": 0,
    "ErrorMessage": null
}
                    
 
3.8 获取记录
请求路径: (ApiUrl)/Seamless/FetchReport
备注:
  • 要使用此 API,请在代理代码下申请启用。我们的技术支持将为您启用。但请注意,您不能同时使用 3.3 按结算日期拉取报告和 3.8 取回记录,一次只能访问其中一个 API。
  • 此 API 由运营商事件驱动。每当操作员想获取所有现有有效投注时,请在 Seamless 中调用此 API。
  • 获取记录后,请保存赌注 ID,并使用 "3.9 标记记录 "中提到的 API 对其进行标记,以确保在使用获取标记获取赌注记录时不会出现意外问题。
Request Parameters:
Parameter Type Description Required
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
Response Parameters:
Parameter Type Description Required
Wagers List< Wager> 投注列表
请参考模型 4.2 以获取每个投注的详细信息。
No
ErrorCode Int 响应的状态代码
请参考附录 5.1 获取错误代码。
Yes
ErrorMessage String 响应的消息 Yes
来自操作员的示例请求正文:
{
    "OperatorCode": "ABCD"
}
                    
Seamless预期的响应:
{
    "Wagers": [
        {
            "MemberName": "demo_cq9",
            "ProductID": 1009,
            "WagerID": 2703221,
            "CurrencyID": 8,
            "GameType": 8,
            "GameID": "GO02",
            "GameRoundID": "GO02m1232669m1m1",
            "ValidBetAmount": 1.1000,
            "BetAmount": 1.1000,
            "PayoutAmount": 1.7000,
            "CommissionAmount": 0.0000,
            "JackpotAmount": 0.0000,
            "JPBet": 0.0000,
            "Status": 100,
            "SettlementDate": "2023-12-14T04:48:08",
            "CreatedOn": "2023-12-14T04:48:08",
            "ModifiedOn": "2023-12-14T04:48:08"
        },
        {
            "MemberName": "demo_cq9",
            "ProductID": 1009,
            "WagerID": 2704317,
            "CurrencyID": 8,
            "GameType": 8,
            "GameID": "GO02",
            "GameRoundID": "GO02m1232715m1m1",
            "ValidBetAmount": 3.9000,
            "BetAmount": 3.9000,
            "PayoutAmount": 11.6000,
            "CommissionAmount": 0.0000,
            "JackpotAmount": 0.0000,
            "JPBet": 0.0000,
            "Status": 100,
            "SettlementDate": "2023-12-14T07:40:53",
            "CreatedOn": "2023-12-14T07:40:53",
            "ModifiedOn": "2023-12-14T07:40:53"
        }
    ],
    "ErrorCode": 0,
    "ErrorMessage": null
}
                    
 
3.9 标记记录
请求路径: (ApiUrl)/Seamless/MarkReport
备注:
  • 此 API 由操作员事件驱动。操作员必须调用此 API,以便在 3.8 Fetch Record API 中获取新的有效投注记录。
  • 请输入在 3.8 Fetch Record API 中获取的 WagerIDs 列表。以便我们的系统将其标记为已获取
  • 但是,请注意,如果赌注在获取后被更新,即使它已被标记,也会重新出现在3.8获取记录API中。然后,请在下一次 3.9 标记记录 API 调用中传递相同的 WagerID,当该投注没有新的更新时,它将不会重新出现在 3.8 取回记录 API 中。
Request Parameters:
Parameter Type Description Required
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
WagerID List< Long > 为 Fetch API 返回新赌注而标记的 WagerID 列表。 Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码
请参考附录 5.1 获取错误代码。
Yes
ErrorMessage String 响应的消息 Yes
来自操作员的示例请求正文:
{
    "OperatorCode": "ABCD",
    "WagerID":[
    2703221,
    2704317,
    2704231
]
}
                    
Seamless预期的响应:
{
    "ErrorCode": 0,
    "ErrorMessage": null
}
                    
 
3.10 获取会员未清偿余额
请求路径: (ApiUrl)/Seamless/GetMemberOutstandingBalance
备注:
  • 此 API 由操作员事件驱动。操作员可根据给定的会员名称,检索特定玩家的未清余额详情。
  • 请参阅附录 5.7,了解有关会员欠款的更多详情。
Request Parameters:
Parameter Type Description Required
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
MemberName String 运营商中玩家的唯一标识符 Yes
Sign String 请求的签名 Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码
请参考附录 5.1 获取错误代码。
Yes
ErrorMessage String 响应的消息 Yes
MemberOutstandingBalanceListing List< OutstandingBalance> 成员未清偿余额详情一览表
请参阅范本 4.4,了解每位会员的详细情况 未清偿余额详情
No
来自操作员的示例请求正文:
{
    "OperatorCode": "QA08",
    "MemberName": "MDQA_Member01",
    "Sign":"e04c06f8a31200298ecd3ad1cc09724b"
}
                    
Seamless预期的响应:
{
  "ErrorCode": 0,
  "ErrorMessage": null,
  "MemberOutstandingBalanceListing": [
    {
      "OutstandingBalanceID": 14,
      "MemberID": 130551,
      "WagerID": 2932939,
      "OutstandingBalanceAmount": -200,
      "CreatedOn": "2024-08-23T09:49:29",
      "ModifiedOn": "2024-08-23T09:51:15"
    }
  ]
}
                    
 
3.11 解决会员未清余额
请求路径: (ApiUrl)/Seamless/ResolveMemberOutstandingBalance
备注:
  • 此 API 由操作员事件驱动。它用于操作员手动解决从 3.10 Get Member Outstanding Balance API 获取的未清余额 ID。
  • 请参阅附录 5.7,了解有关会员欠款的更多详情。
Request Parameters:
Parameter Type Description Required
OperatorCode String Seamless中运营商的唯一标识符
BO登录用户名
Yes
MemberName String 运营商中玩家的唯一标识符 Yes
OutstandingBalanceID List< long > 已在操作员和玩家之间手动解决的未清余额 ID 列表。 Yes
Sign String 请求的签名 Yes
Response Parameters:
Parameter Type Description Required
ErrorCode Int 响应的状态代码
请参考附录 5.1 获取错误代码。
Yes
ErrorMessage String 响应的消息 Yes
来自操作员的示例请求正文:
{
  "OperatorCode": "QA08",
  "MemberName": "MDQA_Member01",
  "OutstandingBalanceID": [
    14
  ],
  "Sign": "e04c06f8a31200298ecd3ad1cc09724b"
}
                    
Seamless预期的响应:
{
  "ErrorCode": 0,
  "ErrorMessage": null
}
                    
 
4. 模型 (Model)
4.1 交易
Parameters Data Type Nullable Remark
MemberID Long No Seamless中玩家的唯一标识符
OperatorID Long No Seamless中运营商的唯一标识符
有时它被称为AgentID
ProductID Long No Seamless中产品的唯一标识符
ProviderID Long No Seamless 中供应商的唯一标识符。
ProviderLineID Long No Seamless 中对产品线配置的唯一标识符。
WagerID Long Yes Seamless 投注记录的唯一标识符
CurrencyID Int No Seamless中货币的唯一标识符
GameType Int No 交易的游戏类型
请参考附录5.6以了解游戏类型。
GameID String Yes 供应商游戏代码
GameRoundID String Yes 供应商游戏轮次ID
ValidBetAmount Decimal Yes 在扣除营业额赢利后的投注金额
由于某些游戏中的营业额投注,可能会与BetAmount有所不同
BetAmount Decimal Yes 整个下注金额,未扣除营业额中奖金额
TransactionAmount Decimal No 需要对玩家钱包进行更改的金额
正值表示增加玩家钱包金额
负值表示减少玩家钱包金额
TransactionID String Yes 当前交易的唯一标识符
请返回错误代码1003以表示检测到重复交易。
PayoutAmount Decimal Yes 玩家的赢取金额。
如果玩家输了,这个值可以为0。
PayoutDetail String Yes 由供应商发送的有关玩家赢取的详细信息。
BetDetail String Yes 供应商发送的玩家下注详细信息
默认为null
CommisionAmount Decimal Yes 佣金金额
JackpotAmount Decimal Yes 奖池金额
SettlementDate DateTime Yes 最终确认投注记录的日期
当投注结束时,玩家要么输了要么赢了。
JPBet Decimal Yes 供应商每次下注的奖池贡献金额
另一个术语是渐进式累计奖池
Status Int No 当前交易的状态
请参考附录5.2获取状态
CreatedOn DateTime No 交易日期
ModifiedOn DateTime No 修改交易的日期
 
4.2 赌注
Parameters Data Type Nullable Remark
WagerID Long No Seamless 投注记录的唯一标识符
MemberName String No 运营商中玩家的唯一标识符
ProductID Long No Seamless中产品的唯一标识符
GameType Int No 交易的游戏类型
请参考附录5.6以了解游戏类型。
CurrencyID Int No Seamless中货币的唯一标识符
GameID String Yes 供应商游戏代码
GameRoundID String No 供应商游戏轮次ID
ValidBetAmount Decimal No 在扣除营业额赢利后的投注金额
由于某些游戏中的营业额投注,可能会与BetAmount有所不同
BetAmount Decimal No 整个下注金额,未扣除营业额中奖金额
JPBet Decimal Yes 供应商每次下注的奖池贡献金额
另一个术语是渐进式累计奖池
PayoutAmount Decimal No 玩家的赢取金额。
如果玩家输了,这个值可以为0。
CommisionAmount Decimal Yes 佣金金额
JackpotAmount Decimal Yes 奖池金额
SettlementDate DateTime Yes 最终投注记录的日期
当投注结束时,玩家要么输了要么赢了。
Status Int No 当前投注记录的状态。
请参阅附录5.2以获取状态。
CreatedOn DateTime No 交易日期
ModifiedOn DateTime No 修改交易的日期
 
4.3 供应商游戏
Parameters Data Type Nullable Remark
GameCode String No 唯一供应商游戏ID
GameName String No 供应商的游戏名称
GameType Int Yes 游戏类型
请参考附录5.6以了解游戏类型。
Category String Yes 用于UI显示的游戏类别
此参数默认为 "游戏" 以供UI显示。
ImageURL String Yes 获取游戏图片的路由
ProviderGameType String Yes 供应商分类的游戏类型
此参数的默认值为 null。
 
4.4 会员未清偿余额
Parameters Data Type Nullable Remark
OutstandingBalanceID Long No 未清余额的唯一 ID
MemberID Long No Seamless中玩家的唯一标识符
WagerID Long No Seamless 投注记录的唯一标识符
OutstandingBalanceAmount String No 欠款余额 球员欠款金额。
CreatedOn DateTime No 交易日期
ModifiedOn DateTime No 修改交易的日期
 
5. 附录
5.1 错误代码
Code Description
0 Success
16 Failed
19 API Error
20 Too Many Requests
999 Internal Server Error
1000 API Member Not Exists
1001 API Member Insufficient Balance
1002 API Incorrect Agent Key
1003 API Duplicate Transaction
1004 API Invalid Sign
1005 API No Get Game List
1006 API Bet Not Exist
2000 API Product Under Maintenance
 
5.2 状态
Code Description
100 Pending
101 Settle
102 Void
 
5.3 货币
Code Description
1 CNY
2 USD
3 KRW
4 MYR
5 SGD
6 JPY
7 THB
8 IDR
9 VND
10 AUD
11 GBP
12 CHF
13 MXN
14 CAD
15 RUB
16 INR
17 RON
18 DKK
19 NOK
20 NTD
21 COP
22 MMK
23 PLN
24 HRK
25 CZK
26 HUF
27 ZAR
28 SEK
29 NZD
30 TRY
31 BND
32 KHR
33 USDT
34 BDT
35 EUR
36 BRL
37 PHP
38 TND
39 TWD
40 UAH
41 PKR
42 HKD
43 MAD
44 EGP
45 ZMW
46 NPR
47 KSH
48 AED
49 LAK
50 NGN
51 KES
52 UGX
53 SAR
54 AZN
55 BGN
56 ARS
57 AMD
58 MXP
59 MNT
60 CLP
61 ETB
62 VEF
63 ECS
64 PEN
65 QAR
66 KWD
67 BHD
68 OMR
69 GHS
70 LKR
 
5.4 语言代码
Code Description
1 英语
2 繁体中文
3 简体中文
4 泰语
5 印度尼西亚
6 日语
7 韩国
8 越南语
9 德语
10 西班牙醇
11 法语
12 俄罗斯
13 葡萄牙语
14 缅甸语
15 丹麦语
16 芬兰语
17 意大利语
18 荷兰语
19 挪威语
20 波兰语
21 罗马尼亚语
22 瑞典语
23 土耳其语
24 保加利亚语
25 捷克语
26 希腊语
27 匈牙利语
28 巴西葡萄牙语
29 斯洛伐克语
30 格鲁吉亚语
31 拉脱维亚语
32 乌克兰语
33 爱沙尼亚语
34 菲律宾语
35 柬埔寨语
36 老挝语
37 马来语
38 广东话
39 泰米尔语
40 印地语
41 欧洲西班牙语
42 阿泽尔巴伊贾尼语 (阿塞拜疆语)
43 文莱达鲁萨兰国语
44 克罗地亚语
45 阿拉伯语
 
5.5 平台
Code Description
0 Web
1 Mobile
 
5.6 游戏类型
Code Description
1 Slot
2 Live Casino
3 Sport Book
4 Virtual Sport
5 Lottery
6 Qipai
7 P2P
8 Fishing
9 Others
10 Cock Fighting
11 Bonus
12 Jackpot
13 ESport
 
常见问题
 
1. 调用cancelBet API后下注的状态是什么?
状态 (100 = BET_PENDING)
请参考要扣除的 TransactionAmount (交易金额),因为有一些供应商会将多个下注合并为一个记录。但是当取消下注被调用时,它只取消了其中一个下注,因此Seamless将会调用到运营商端,相应地取消下注记录 (Wage Record) 中的其中一个下注。因此,状态不能被视为无效。
然而,请注意,即使在同一下注记录 (Wage) 中取消了所有下注,状态仍可能保持为(100 = BET_PENDING)。在这种情况下,请参考下注金额 (BetAmount),如果为0表示所有合并的下注已经取消,那么可以安全地忽略该特定下注记录 (wage record)。因此,请注意这一点,并相应地扣除下注记录的下注金额。
状态 (102 = BET_VOID)
在这种情况下,请将整个下注标记为无效,因为这意味着整个下注记录中只有一个下注,当供应商调用Seamless来取消它时,它将取消整个下注以及下注记录。
 
2. GameResult、Bonus 和 Jackpot API 调用之间的区别是什么?
奖金 (Bonus)、奖池 (Jackpot) 和游戏结果 (GameResult) 通常被视为与下注结果不同的独立回合。可以肯定的是,这三种事件将具有不同的下注ID (WagerID)。
然而,即使有不同的下注ID (WagerID),某些供应商会使用游戏回合ID (GameRoundID) 将奖池 (JackpotID)、奖金 (BonusID) 和游戏结果 (GameResult) 组合在一起。
例如,可能会有3个不同的下注ID (WagerID),分别代表奖池 (JackpotID)、奖金 (BonusID )和游戏结果 (GameResult),但它们可以具有相同的游戏回合ID (GameRoundID),以指示这3个下注来自同一轮。
此外,某些供应商将为免费轮次触发奖金,例如在老虎机游戏中的免费旋转。
 
3. 为什么不是所有供应商都有GetGameList API?
请根据响应的错误代码进行相应的检查,如果返回的错误代码是1005(API No Get Game List),请继续调用launchGame API来直接访问供应商的网站。这种情况发生的主要原因如下:
  1. 供应商的网站具有复杂的游戏大厅。这可能会发生在游戏类型如“真人娱乐”或“体育博彩”的情况下。
  2. 特定供应商尚未实施GetGameList。请耐心等待,可能将在未来实施。
  3. 最后,供应商根本没有提供GetGameList API供我们调用。
 
4. 哪些供应商具有重定向功能?
请参考下表以了解哪些产品具有重定向功能。
Product Product Code
YGGDRASIL 1027
Jili 1091
JOKER 1013
Playstar 1050
Royal Slot Gaming 1105
Gameplay Interactive (Mobile Slot only) 1008
 
5. 直接重新结算的示例有哪些?
通过直接重新结算来解决第一次结算的额外支付问题
  • Bet: 20, TransactionAmount = -20
  • Win: 50, TransactionAmount = +50
  • 重新结算赢得:30(在之前的GameResult API调用中额外支付20,从玩家那里扣除20),TransactionAmount = -20
通过直接重新结算来解决第一次结算中的支付不足问题
  • Bet: 20, TransactionAmount = -20
  • Win: 50, TransactionAmount = +50
  • 重新结算赢得:100(在之前的GameResult API调用中支付少了50,向玩家存入50),TransactionAmount = +50
这是因为有些供应商不使用回滚,他们直接通过GameResult API调用来进行重新结算,我们必须根据最新的支付和之前的支付来计算需要调整给运营商的金额。
 
6. 为什么将产品开放给刚刚进入生产环境的运营商需要花这么长时间?
请注意,已经集成到Seamless中的产品有一个未定义的等待时间。
这是因为,每当新的运营商希望在生产环境中访问产品时,供应商必须设置他们的生产环境,以允许新的运营商访问他们的产品。因此,在这个过程中会不幸地存在一个未定义的等待时间,因为所有供应商在这个过程中的工作方式都不同,无法提供估计的时间表。
 
7. 正式环境中的信用控制 (Credit Control) 是指什么?
Credit control is a risk control on our end, when any balance amendment for player happen, the credit for the operator in the agent wallet will also amend , if the credit is finish operator have to top up again.
请注意,代理钱包的余额不应为负数。如果发生负余额,那么这可能涉及到产品中的信用控制问题。因此,如果出现这种情况,请立即向我们反馈。
 
8. 使用Rollback API调用的赌注调整和取消赢的示例有哪些?
在初始下注时调整投注以解决额外投注
  • Bet: 50, TransactionAmount = -50
  • 调整投注:30(在先前的PlaceBet API调用中额外投注了20,向玩家退还20),交易金额=20
  • 目前,只有调整投注以向玩家退还额外投注,没有调整投注以从玩家扣除缺失的投注。
取消胜利以解决先前 GameResult API 调用中的支付错误。
  • Bet: 50, TransactionAmount = -50
  • Win: 100, TransactionAmount = +100
  • 撤销胜利:0(在先前的 GameResult API 调用中出现支付错误,从玩家那里回滚支付 100),交易金额 = -100
 
9. 回滚API的逆向赌注交易示例有哪些?
将钱退还到玩家的钱包
  • Bet: 50, TransactionAmount = -50
  • Win: 30, TransactionAmount = 30
  • 在这种情况下,整个投注的状态将从已结算(101)更改为无效(102),交易金额将为20(投注金额 - 支付金额,50 - 30)。其中20需要退还到玩家的钱包。
从玩家的钱包中撤回支付金额
  • Bet: 50, TransactionAmount = -50
  • Win: 30, TransactionAmount = 80
  • 在这种情况下,整个投注的状态将从已结算(101)更改为无效(102),交易金额将为-30(投注金额 - 支付金额,50 - 80)。需要从玩家的钱包中扣除-30以撤销在此投注中进行的所有交易。
 
10. 未清余额详情
什么是未清余额,它是如何产生的?
  • 未清余额是指玩家所欠的金额,这可能是由于玩家方面的余额不足,在回滚 API 时扣除了玩家的钱包。
  • 无缝系统将记录这一事件,并记下玩家所欠的未清余额。操作员可调用 3.10 Get Member Outstanding Balance API(获取会员欠款 API),检索玩家欠款清单。
未清余额有什么影响,如何解决?
  • 当玩家有未清余额时,在未清余额解决之前,玩家基本上无法下注。
  • 当有一笔交易记入玩家钱包时,未清偿余额将自动计入交易过程。因此,如果贷记金额足以支付未清余额,那么具体的未清余额将得到解决,无需手动解决。否则,只能解决部分未清余额,需要手动解决。
  • 但是,请注意,这也意味着玩家钱包中的贷记金额将因涉及玩家欠款而减少。
  • 要手动解决未清余额问题,操作员必须先与玩家手动解决。一旦玩家解决了未清余额。请调用 3.11 Resolve Member Outstanding Balance API 来清除特定的未清余额。
哪种产品具有出色的余额流?
Product Product Code
SlotXo 1075
AMBPoker 1076