支付接口文档

BBL支付 & KTB-LINE支付接口开发文档

BBL支付接口概述

BBL支付接口支持泰国银行转账支付,提供PromptPay二维码支付方式

接口地址

/Home_Bbl_index.html

请求方式

POST

银行代码

937

支付时限

15分钟

支付特色: 支持PromptPay二维码扫码支付和银行转账支付,适用于泰国本地支付场景。

请求参数

BBL支付接口请求参数说明

参数名 类型 必填 参与签名 说明
pay_memberid String 必填 商户号,平台分配的唯一标识
pay_orderid String 必填 商户订单号,需保证唯一性
pay_amount Decimal 必填 支付金额,单位:元
pay_bankcode String 必填 银行代码,BBL固定为937
pay_notifyurl String 必填 异步通知地址
pay_callbackurl String 必填 同步跳转地址
pay_attach String 可选 附加数据,原样返回
pay_productname String 可选 商品名称
display_type String 可选 显示方式:1-二维码,2-文本

签名算法

BBL支付接口MD5签名生成方法

注意: 签名参数需按字典序排序,空值参数不参与签名

签名步骤:

  1. 将参与签名的参数按照参数名ASCII码从小到大排序
  2. 使用URL键值对格式拼接成字符串
  3. 在字符串末尾拼接商户密钥
  4. 对拼接后的字符串进行MD5加密并转为大写

签名示例

// 参与签名的参数(按字典序排序)
pay_amount=100.00
pay_bankcode=937
pay_callbackurl=http://example.com/callback
pay_memberid=10001
pay_notifyurl=http://example.com/notify
pay_orderid=ORDER20231201001

// 拼接字符串
stringA = "pay_amount=100.00&pay_bankcode=937&pay_callbackurl=http://example.com/callback&pay_memberid=10001&pay_notifyurl=http://example.com/notify&pay_orderid=ORDER20231201001"

// 拼接密钥
stringSignTemp = stringA + "&key=YOUR_SECRET_KEY"

// MD5加密并转大写
sign = MD5(stringSignTemp).toUpperCase()
                        

请求示例

BBL支付接口调用示例代码

HTML表单提交

<form method="POST" action="/Home_Bbl_index.html">
    <input type="hidden" name="pay_memberid" value="10001">
    <input type="hidden" name="pay_orderid" value="ORDER20231201001">
    <input type="hidden" name="pay_amount" value="100.00">
    <input type="hidden" name="pay_bankcode" value="937">
    <input type="hidden" name="pay_notifyurl" value="http://example.com/notify">
    <input type="hidden" name="pay_callbackurl" value="http://example.com/callback">
    <input type="hidden" name="pay_productname" value="测试商品">
    <input type="hidden" name="pay_md5sign" value="GENERATED_SIGN">
    <button type="submit">提交支付</button>
</form>
                        

PHP示例

<?php
$params = [
    'pay_memberid' => '10001',
    'pay_orderid' => 'ORDER20231201001',
    'pay_amount' => '100.00',
    'pay_bankcode' => '937',
    'pay_notifyurl' => 'http://example.com/notify',
    'pay_callbackurl' => 'http://example.com/callback',
    'pay_productname' => '测试商品'
];

// 生成签名
ksort($params);
$signStr = '';
foreach ($params as $key => $value) {
    $signStr .= $key . '=' . $value . '&';
}
$signStr .= 'key=YOUR_SECRET_KEY';
$sign = strtoupper(md5($signStr));

$params['pay_md5sign'] = $sign;

// 发送POST请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '/Home_Bbl_index.html');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
?>
                        

响应说明

BBL支付接口响应处理

支付流程: 提交支付请求后,系统会跳转到支付页面,显示PromptPay二维码或银行转账信息,用户完成支付后系统会发送异步通知。

支付页面功能:

  • 显示PromptPay二维码供用户扫码支付
  • 显示银行转账信息
  • 15分钟倒计时
  • 自动检查支付状态
  • 支付成功后自动跳转

订单查询

BBL支付订单状态查询接口

查询地址

/Pay_Order_check.html

请求方式

GET

参数名 类型 必填 说明
orderid String 必填 商户订单号

查询示例

GET /Pay_Order_check.html?orderid=ORDER20231201001

// 响应示例
{
    "status": 2,  // 1-待支付, 2-已支付, 3-已取消
    "code": 1,    // 1-成功, 0-失败
    "msg": "查询成功"
}
                        

KTB-LINE支付接口概述

KTB-LINE支付接口专为KTB银行设计,支持LINE APP扫码支付和银行卡转账

接口地址

/Home_Ktbline_index.html

请求方式

POST

银行代码

938

支付时限

15分钟

支付特色: 专门针对KTB银行用户设计,需要提供用户银行卡号进行身份验证,支持KTB-LINE APP扫码支付。

请求参数

KTB-LINE支付接口请求参数说明

参数名 类型 必填 参与签名 说明
pay_memberid String 必填 商户号,平台分配的唯一标识
pay_orderid String 必填 商户订单号,需保证唯一性
pay_amount Decimal 必填 支付金额,单位:元
pay_bankcode String 必填 银行代码,KTB-LINE固定为938
pay_notifyurl String 必填 异步通知地址
pay_callbackurl String 必填 同步跳转地址
user_bankcard String 必填 用户银行卡号,16-19位数字
pay_attach String 可选 附加数据,原样返回
pay_productname String 可选 商品名称
display_type String 可选 显示方式:1-二维码,2-文本
特别注意: KTB-LINE接口必须提供 user_bankcard 参数,用于用户身份验证。银行卡号格式为16-19位数字。

签名算法

KTB-LINE支付接口MD5签名生成方法

注意: 签名参数需按字典序排序,空值参数不参与签名,user_bankcard 不参与签名

签名步骤:

  1. 将参与签名的参数按照参数名ASCII码从小到大排序
  2. 使用URL键值对格式拼接成字符串
  3. 在字符串末尾拼接商户密钥
  4. 对拼接后的字符串进行MD5加密并转为大写

签名示例

// 参与签名的参数(按字典序排序,user_bankcard不参与签名)
pay_amount=100.00
pay_bankcode=938
pay_callbackurl=http://example.com/callback
pay_memberid=10001
pay_notifyurl=http://example.com/notify
pay_orderid=ORDER20231201001

// 拼接字符串
stringA = "pay_amount=100.00&pay_bankcode=938&pay_callbackurl=http://example.com/callback&pay_memberid=10001&pay_notifyurl=http://example.com/notify&pay_orderid=ORDER20231201001"

// 拼接密钥
stringSignTemp = stringA + "&key=YOUR_SECRET_KEY"

// MD5加密并转大写
sign = MD5(stringSignTemp).toUpperCase()
                        

请求示例

KTB-LINE支付接口调用示例代码

HTML表单提交

<form method="POST" action="/Home_Ktbline_index.html">
    <input type="hidden" name="pay_memberid" value="10001">
    <input type="hidden" name="pay_orderid" value="ORDER20231201001">
    <input type="hidden" name="pay_amount" value="100.00">
    <input type="hidden" name="pay_bankcode" value="938">
    <input type="hidden" name="pay_notifyurl" value="http://example.com/notify">
    <input type="hidden" name="pay_callbackurl" value="http://example.com/callback">
    <input type="hidden" name="user_bankcard" value="1234567890123456">
    <input type="hidden" name="pay_productname" value="测试商品">
    <input type="hidden" name="pay_md5sign" value="GENERATED_SIGN">
    <button type="submit">提交支付</button>
</form>
                        

PHP示例

<?php
// 参与签名的参数(user_bankcard不参与签名)
$signParams = [
    'pay_memberid' => '10001',
    'pay_orderid' => 'ORDER20231201001',
    'pay_amount' => '100.00',
    'pay_bankcode' => '938',
    'pay_notifyurl' => 'http://example.com/notify',
    'pay_callbackurl' => 'http://example.com/callback'
];

// 生成签名
ksort($signParams);
$signStr = '';
foreach ($signParams as $key => $value) {
    $signStr .= $key . '=' . $value . '&';
}
$signStr .= 'key=YOUR_SECRET_KEY';
$sign = strtoupper(md5($signStr));

// 完整请求参数
$params = $signParams;
$params['user_bankcard'] = '1234567890123456';
$params['pay_productname'] = '测试商品';
$params['pay_md5sign'] = $sign;

// 发送POST请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '/Home_Ktbline_index.html');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
?>
                        

响应说明

KTB-LINE支付接口响应处理

支付流程: 提交支付请求后,系统会跳转到支付页面,显示KTB-LINE二维码和用户银行卡信息,用户使用KTB-LINE APP扫码完成支付。

支付页面功能:

  • 显示KTB-LINE专用二维码
  • 显示用户银行卡号信息
  • 显示银行转账信息
  • 15分钟倒计时
  • 自动检查支付状态
  • 支付成功后自动跳转
身份验证: KTB-LINE支付会验证用户提供的银行卡号,确保支付安全性。

订单查询

KTB-LINE支付订单状态查询接口

查询地址

/Pay_Order_check.html

请求方式

GET

参数名 类型 必填 说明
orderid String 必填 商户订单号

查询示例

GET /Pay_Order_check.html?orderid=ORDER20231201001

// 响应示例
{
    "status": 2,  // 1-待支付, 2-已支付, 3-已取消
    "code": 1,    // 1-成功, 0-失败
    "msg": "查询成功"
}
                        

错误码说明

接口调用可能返回的错误码及处理建议

错误码 错误信息 解决方案
1001 参数缺失 检查必填参数是否完整
1002 签名错误 检查签名算法和密钥是否正确
1003 商户不存在 检查商户号是否正确
1004 订单已存在 使用新的订单号重新提交
1005 金额格式错误 检查金额格式,保留两位小数
1006 银行卡号格式错误 检查银行卡号是否为16-19位数字(仅KTB-LINE)
1007 支付通道不可用 联系客服或稍后重试

最佳实践

接口集成建议和注意事项

安全建议

  • 商户密钥请妥善保管,不要在前端代码中暴露
  • 建议使用HTTPS协议进行接口调用
  • 异步通知地址需要能够正常访问
  • 对异步通知进行签名验证

开发建议

  • 订单号需要保证唯一性,建议使用时间戳+随机数
  • 金额请使用两位小数格式
  • 建议实现订单状态查询功能,定期检查订单状态
  • 处理异步通知时需要验证订单状态,避免重复处理
  • KTB-LINE接口需要验证银行卡号格式
技术支持: 如在接口集成过程中遇到问题,请联系技术支持团队获取帮助。