Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

对接准备


联系业务人员开通平台帐号,获取接口参数(appKey、appSecret)

A

公共请求参数

公共请求参数


参数名称示例参数说明
appKey24feuhdi2n2ebdappKey
nonce1038343423一个随机字符串
sign346de23ueh2uwbduhru3heu3签名,请查看签名方法
timestamp1651052350742时间戳(毫秒级)

签名和解密

签名(sign)

  • 将所有非空参数appSecret,按参数名升序排序。
  • key=value 方式拼接,多个用 & 连接。
  • 对拼接后的整个字符串进行 小写32位MD5

签名格式:

md5(key1=value1&key2=value2&...&keyN=valueN)

示例:

拼接前:

amount=1&appId=YTUvZeeOdx&appSecret=owfwFkDnlCuiUTYz&callbackUrl=http://127.0.0.1:8921/api/callback/test&itemId=100001&outOrderId=2975857684279803&timestamp=20200717133601001&uuid=18898810602

MD5结果:

2f64566717836f1b62276519ac71aaf3

提示:

  • appSecret 仅用于签名,不要作为参数上传
  • 排序应为全字节升序,空值参数不参与签名。
  • 常见签名失败原因:时间戳不一致、未加 appSecret、排序错误、空参数被用于签名等。

签名示例代码

Go 示例

package main

import (
    "crypto/md5"
    "encoding/hex"
    "fmt"
    "sort"
    "strings"
)

// 构建签名字符串
func BuildSignString(params map[string]string, appSecret string) string {
    keys := make([]string, 0)
    for k, v := range params {
        if v != "" {
            keys = append(keys, k)
        }
    }
    keys = append(keys, "appSecret")
    sort.Strings(keys)
    var list []string
    for _, k := range keys {
        var val string
        if k == "appSecret" {
            val = appSecret
        } else {
            val = params[k]
        }
        if val != "" {
            list = append(list, fmt.Sprintf("%s=%s", k, val))
        }
    }
    return strings.Join(list, "&")
}

func Md5Lower(s string) string {
    h := md5.New()
    h.Write([]byte(s))
    return hex.EncodeToString(h.Sum(nil))
}

func main() {
    params := map[string]string{
        "amount":      "1",
        "appId":       "YTUvZeeOdx",
        "callbackUrl": "http://127.0.0.1:8921/api/callback/test",
        "itemId":      "100001",
        "outOrderId":  "2975857684279803",
        "timestamp":   "20200717133601001",
        "uuid":        "18898810602",
    }
    appSecret := "owfwFkDnlCuiUTYz"
    signStr := BuildSignString(params, appSecret)
    fmt.Println("待签名字符串:", signStr)
    fmt.Println("MD5签名:", Md5Lower(signStr))
}

Rust 示例

// md5 = "0.7"
use std::collections::BTreeMap;
use md5::{Md5, Digest};

// 将参数按名称升序拼接 & md5
fn build_sign_string<'a>(mut params: BTreeMap<&'a str, &'a str>, app_secret: &'a str) -> String {
    params.insert("appSecret", app_secret);
    params.iter()
        .filter(|(_, v)| !v.is_empty())
        .map(|(k, v)| format!("{}={}", k, v))
        .collect::<Vec<_>>()
        .join("&")
}

fn md5_lower(s: &str) -> String {
    let mut hasher = Md5::new();
    hasher.update(s.as_bytes());
    format!("{:x}", hasher.finalize())
}

fn main() {
    let mut params = BTreeMap::new();
    params.insert("amount", "1");
    params.insert("appId", "YTUvZeeOdx");
    params.insert("callbackUrl", "http://127.0.0.1:8921/api/callback/test");
    params.insert("itemId", "100001");
    params.insert("outOrderId", "2975857684279803");
    params.insert("timestamp", "20200717133601001");
    params.insert("uuid", "18898810602");
    let app_secret = "owfwFkDnlCuiUTYz";
    let sign_str = build_sign_string(params, app_secret);
    let sign = md5_lower(&sign_str);
    println!("待签名字符串: {}", sign_str);
    println!("MD5签名: {}", sign);
}

解密(AES)

  • 算法: AES/ECB/PKCS5Padding,无盐
  • 密钥: appSecret
  • 输入: base64编码的密文

示例:

  • 密文: jvU9Vaz67Gj+Xn/qlaXKHA==
  • AES密钥: uDMGUIodDeKcja0nDbIBzpfDJFIHld56
  • 解密后: 110

Go 示例

package main

import (
    "crypto/aes"
    "crypto/cipher"
    "encoding/base64"
    "fmt"
)

// 去除PKCS#7填充
func PKCS7Unpad(data []byte) []byte {
    padlen := int(data[len(data)-1])
    if padlen > len(data) {
        return data
    }
    return data[:len(data)-padlen]
}

func AESDecryptBase64(ciphertextBase64, key string) (string, error) {
    data, err := base64.StdEncoding.DecodeString(ciphertextBase64)
    if err != nil {
        return "", err
    }
    // 密钥长度应为 16/24/32
    block, err := aes.NewCipher([]byte(key))
    if err != nil {
        return "", err
    }
    if len(data)%aes.BlockSize != 0 {
        return "", fmt.Errorf("密文不是块大小的倍数")
    }
    decrypted := make([]byte, len(data))
    mode := newECBDecrypter(block)
    mode.CryptBlocks(decrypted, data)
    decrypted = PKCS7Unpad(decrypted)
    return string(decrypted), nil
}

// -------- 下面是 ECB mode 支持 --------------
type ecb struct{ b cipher.Block }
type ecbDecrypter ecb

func newECBDecrypter(b cipher.Block) cipher.BlockMode {
    return (*ecbDecrypter)(&ecb{b})
}
func (x *ecbDecrypter) BlockSize() int        { return x.b.BlockSize() }
func (x *ecbDecrypter) CryptBlocks(dst, src []byte) {
    bs := x.b.BlockSize()
    for len(src) > 0 {
        x.b.Decrypt(dst[:bs], src[:bs])
        src = src[bs:]
        dst = dst[bs:]
    }
}

func main() {
    encrypted := "U88v0HHTLxUp9LUkj95AJA=="
    key := "sBOvCZZurSbbdJiA" // 16字节
    plain, err := AESDecryptBase64(encrypted, key)
    if err != nil {
        fmt.Println("解密失败:", err)
    } else {
        fmt.Println("解密结果:", plain)
    }
}

Rust 示例

// aes = "0.8"
// block-modes = "0.9"
// block-padding = "0.3"
// base64 = "0.21"
use aes::Aes128;
use block_modes::{BlockMode, Ecb};
use block_modes::block_padding::Pkcs7;
use base64::{engine::general_purpose, Engine as _};

/// AES/ECB/PKCS5Padding 解密(Base64输入)
/// Java 兼容:Cipher.getInstance("AES/ECB/PKCS5Padding")
fn aes_ecb_decrypt_base64(cipher_base64: &str, key: &str) -> Result<String, Box<dyn std::error::Error>> {
    let cipher_bytes = general_purpose::STANDARD.decode(cipher_base64)?;

    let key_bytes = key.as_bytes();
    if !matches!(key_bytes.len(), 16 | 24 | 32) {
        return Err("密钥长度必须为 16 / 24 / 32 字节".into());
    }

    let cipher = Ecb::<Aes128, Pkcs7>::new_from_slices(key_bytes, &[])?;
    let decrypted = cipher.decrypt_vec(&cipher_bytes)?;

    Ok(String::from_utf8(decrypted)?)
}

fn main() {
    let encrypted = "jvU9Vaz67Gj+Xn/qlaXKHA==";
    let key = "uDMGUIodDeKcja0nDbIBzpfDJFIHld56"; // 32 字节 → AES-256

    match aes_ecb_decrypt_base64(encrypted, key) {
        Ok(plain) => println!("解密结果: {}", plain),
        Err(e) => println!("解密失败: {}", e),
    }
}

KYC

查询

简要描述

查看KYC申请状态

请求URL

POST ${baseUrl}/api/card/kyc/query

请求方式

  • Method: POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
orderNostring平台订单号
merOrderNostring商家订单号

返回示例

{
    "data": {
        "cardNumber": "1234567891234567",
        "completeTime": "",
        "createTime": "2023-04-02 17:07:09",
        "ext": "",
        "merOrderNo": "345342352343",
        "orderNo": "4534234363464342",
        "failReason": "",
        "status": 0
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datajsonArray响应数据产品类型列表
msg操作成功响应消息
status200响应码
successtrue是否成功(true成功/false失败)

data-下单订单信息

参数名称示例参数说明
merOrderNo436343534234商家订单号
orderNo35432346345345平台订单号
cardNumber1234567891234567申请成功的卡号/卡ID
status0状态:1-处理中 2-成功 3-失败
createTime2023-04-02 17:07:09订单创建时间
completeTime2023-04-02 17:07:09订单完成时间
failReason资料信息错误可能为空,失败时有明确原因返回
ext订单额外信息,预留字段

业务状态码说明

状态码描述
200成功
500失败
5201订单不存在

webhook

接口描述

当 KYC 状态发生变更时,平台会通知状态并返回申请卡号。

接口地址

由申请接口提供具体请求地址。

请求方式

POST

内容类型

Content-Type: application/json

请求参数

参数名称必填示例参数说明
orderNo1448538596381429760平台订单号
merOrderNo1448535323381429760接入方订单号
cardNumber1448535323381429760卡号/卡ID(申请成功返回)
status3订单状态(1-处理中,2-成功,3-失败)
completeTime20220331121212订单完成时间
createTime20220331121212订单创建时间
appKeyedy2378eh23gf29w2appKey
signa87694dbd3be64a356a42be95e123360接口签名
ext{“settleAmount”:10}依据订单类型返回,预留字段
failReason资料信息错误失败时返回明确失败原因

响应示例

body 内容为字符串:

ok

注意事项

如果未按要求返回 ok,平台将视为推送失败,并将按照指数退避(Exponential Backoff)策略进行重试:

  • 首次失败后,1 分钟后重试,后续每次重试间隔时间翻倍(2、4、8、16 分钟),共推送 5 次。
  • 若 5 次仍未成功,将在 10 分钟后再次进行重试。
  • 只有返回字符串 ok 表示推送成功,平台才会停止重试。

MASTER-E

简要描述

MASTER-E 卡的 KYC 提交


请求URL

POST ${baseUrl}/api/card/kyc/apply/master/E
Content-Type: application/json


请求参数

参数名必选类型说明
merOrderNostring商家订单号
cardNumberstring需要KYC的卡号,请与商务沟通后再使用此字段
notifyUrlstring不为空则状态有变更则通知
firstNamestring持卡人中文名
lastNamestring持卡人英文姓
firstNameEnstring持卡人英文名
lastNameENstring持卡人英文姓
countryCodestring国家区号,例如86
phonestring手机号码,同时为收货电话
emailstring电子邮箱
addressstring住宅地址,同时为收货地址
certTypestring证件类型,0-身份证,-1-护照
idNumberstring身份证号/护照号
idExpiryDatestring证件有效期止,格式为yyyy-MM-dd,如2015-01-01
countrystring国籍,例如156
birthdaystring出生日期,格式为yyyy-MM-dd,如2015-01-01
annualIncomestring年收入,单位为万元,按港币计算
occupationstring职业,参考下方“职业”字典
positionstring职位,参考下方“职位”字典
faceImagestringbase64身份证正面(证件类型为大陆身份证/香港永久身份证时必填)该字段不参与签名
backImagestringbase64身份证反面(证件类型为大陆身份证/香港永久身份证时必填)该字段不参与签名
passImagestringbase64护照页照片(证件类型为护照时必填)该字段不参与签名
signImagestringbase64手写签名,建议提交,该字段不参与签名

返回示例

{
  "data": {
    "completeTime": "",
    "createTime": "2023-04-23 20:08:35",
    "ext": "",
    "merOrderNo": "230423200834215712",
    "orderNo": "230423200835147904",
    "status": 1
  },
  "msg": "操作成功",
  "status": 200,
  "success": true
}

返回参数说明

总体返回

参数名示例说明数据类型
datajsonObject响应数据见下方说明
msg操作成功响应消息string
status200响应码int
successtrue是否成功boolean

data 字段

参数名示例说明
merOrderNo436343534234商家订单号
orderNo35432346345345平台订单号
status1订单状态:1-处理中,2-成功,3-失败
createTime2023-04-02 17:07:09订单创建时间
completeTime2023-04-02 17:07:09订单完成时间
ext订单额外信息

职位代码

描述
1Account manage
2Senior management
3Boss

职业代码

职业
1Actor
2Aircraft Mechanic
3Book Author
4Businessmen
5Cashier
6Cleaner
7Dancer
8Dentist
9Fireman
10Housewife
11Journalist
12Medical
13Assistant
14Musician
15Teacher
16Painter
17Policeman

VISA-H

简要描述

VISA-H KYC 认证接口


请求URL

${baseUrl}/api/card/kyc/apply/visa/H

请求方式

  • 方法:POST
  • Content-Type:application/json

请求参数

参数名必选类型说明
merOrderNostring商家订单号
cardNumberstring卡号,在已知卡号的情况下可以使用
notifyUrlstring不为空时状态变更将通知该地址
firstNamestring英文名
lastNamestring英文姓
countryCodestring手机区号,例如86
phonestring手机号码
emailstring电子邮箱
line1string现居住地址-门牌号
line2string现居住地址-街道
line3string现居住地址-区
postalCodestring现居住地址-邮编
citystring现居住地址-城市
addressCountrystring现居住地址-国家,例如156
deliveryLine1string快递地址-门牌号
deliveryLine2string快递地址-街道
deliveryLine3string快递地址-区
deliveryPostalCodestring快递地址-邮编
deliveryCitystring快递地址-城市
deliveryCountrystring快递地址-国家,例如156
certTypestring证件类型,0-身份证 1-护照
countrystring证件国籍,例如156
idNumberstring证件号
idIssuanceDatestring证件签发日期,格式yyyy-MM-dd
idExpiryDatestring证件有效日期,格式yyyy-MM-dd,若为长期有效填2099-12-31
faceImagestringbase64身份证正面(证件类型为大陆身份证/香港永久身份证时必填,此字段不参与签名)
backImagestringbase64身份证反面(证件类型为大陆身份证/香港永久身份证时必填,此字段不参与签名)
passImagestringbase64护照页照片(证件类型为护照时必填,此字段不参与签名)

返回示例

{
    "data": {
        "completeTime": "",
        "createTime": "2023-04-23 20:08:35",
        "ext": "",
        "merOrderNo": "230423200834215712",
        "orderNo": "230423200835147904",
        "status": 1
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

响应基础字段

参数名示例说明
datajsonArray响应数据,见下表订单信息
msg操作成功响应消息
status200响应码
successtrue是否成功,成功true,失败false

data 参数-订单信息

参数名示例说明
merOrderNo436343534234商家订单号
orderNo35432346345345平台订单号
status1订单状态:1-处理中 2-成功 3-失败
createTime2023-04-02 17:07:09订单创建时间
completeTime2023-04-02 17:07:09订单完成时间
ext订单额外信息,预留字段

虚拟卡

VIRTUAL-L

简要描述

此处 KYC 理解为开卡接口。
开卡成功会返回一个卡号。
注意:如未提交 firstRecharge,开卡会默认扣除 10 USD,且发卡系统默认会为卡充值 10 USD。

请求URL

  • ${baseUrl}/api/card/kyc/apply/virtual/L
  • ${baseUrl}/api/card/kyc/apply/virtual/L/en

请求方式

  • Method : POST
  • Content-Type : application/json

请求参数

参数名必填类型说明
merOrderNostring商家订单号
notifyUrlstring若有值,当申请状态有变更时会通知,详见通知说明
cardTypestring需要申请的卡种,如 VISA、MASTER,通过卡头获取对应卡种
businessScenestring业务类型,如电商消费,通过卡头获取
cardAreastring发行区域,如中国香港,通过卡头获取
firstRechargestring首充金额,如 11,默认为 10,提交值需为不小于 10 的整数,首充后金额会充入卡,并扣除相应备用金
cardHeaderstring卡头,如 493193,通过卡头获取。不指定则随机分配
firstNamestring英文名(只能为英文字符)
lastNamestring英文姓(只能为英文字符)
emailstring电子邮箱
birthdaystring出生日期,格式为 yyyy-MM-dd

返回示例

{
    "data": {
        "completeTime":"",
        "createTime":"2023-04-23 20:08:35",
        "ext":"",
        "merOrderNo":"230423200834215712",
        "orderNo":"230423200835147904",
        "status":1
    },
    "msg":"操作成功",
    "status":200,
    "success":true
}

返回参数说明

通用响应字段

参数名示例说明类型
datajsonArray响应数据,订单信息见下表
msg操作成功响应消息string
status200响应码int
successtrue是否成功:true/falsebool

data 字段参数说明

参数名示例说明
merOrderNo436343534234商家订单号
orderNo35432346345345平台订单号
status1订单状态:1-处理中,2-成功,3-失败
createTime2023-04-02 17:07:09订单创建时间
completeTime2023-04-02 17:07:09订单完成时间
ext订单额外信息,预留字段

VIRTUAL-P

简要描述

开卡接口 注意:firstRecharge 默认为10,可以为0则开卡没有首充

请求URL

  • ${baseUrl}/api/card/kyc/apply/virtual/P

请求方式

  • Method: POST
  • Content-Type: application/json

请求参数

参数名必填类型说明
merOrderNostring商家订单号
notifyUrlstring若有值,申请状态有变更时会通知,详见通知说明
cardBinstring卡头
firstRechargestring最多两位小数,提交后会首充金额按提交金额进行首充,并扣除对应金额备用金
phoneCodestring手机区号
phonestring手机号
emailstring邮箱
firstNamestring名,仅允许英文,firstName和lastName合计长度不得超过32位
lastNamestring姓,仅允许英文,firstName和lastName合计长度不得超过32位
dateOfBirthstring出生年月,格式为 yyyy-MM-dd
countrystring国家,根据卡bin对应发行国家,ISO 3166-1 alpha-2;例:US
statestring州/省,如为美国或加拿大为必填,需用两字母代码表示,如WA,若留空则随机生成
citystring城市,例如 New York
addressLine2string地址2
addressLine1string地址1
postalCodestring邮编

返回示例

{
    "data": {
        "cardNumber": "",
        "completeTime": "",
        "createTime": "2024-08-29 12:56:36",
        "ext": "",
        "merOrderNo": "100007893",
        "orderNo": "240829125636170528",
        "status": 1
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

通用响应字段

参数名示例说明类型
datajsonArray响应数据,订单信息见下表
msg操作成功响应消息string
status200响应码int
successtrue是否成功,true/falsebool

data字段参数说明

参数名示例说明
merOrderNo100007893商家订单号
orderNo240829125636170528平台订单号
status1订单状态:1-处理中,2-成功,3-失败
createTime2023-04-02 17:07:09订单创建时间
completeTime2023-04-02 17:07:09订单完成时间
ext订单额外信息,预留字段

卡片管理

充值

简要描述

用于为卡片充值余额。


变更记录

日期内容详细说明
2025-06-30最低充值限额实体卡最低限额200,虚拟卡最低限额20

请求URL

${baseUrl}/api/card/top/up

请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
merOrderNostring渠道订单号
cardNumberstring卡号/账户
amountstring金额(最多支持两位小数,直接截取;不同卡片增值不同货币)
notifyUrlstring订单通知地址,不为空时处理完成后通知此地址
extstring预留字段,处理特殊业务

返回示例

{
    "data": {
        "cardNumber": "6244810070000117",
        "completeTime": "",
        "createTime": "2023-04-02 17:07:09",
        "ext": "",
        "merOrderNo": "345342352343",
        "orderNo": "4534234363464342",
        "settleAmount": "20.00",
        "status": 0
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

响应字段

参数名示例说明备注
data见下表响应数据,订单信息object
msg操作成功响应消息string
status200响应码int
successtrue是否成功(true/false)bool

data - 订单信息

参数名示例说明
merOrderNo436343534234渠道订单号
cardNumber6244810070000117卡号
orderNo35432346345345平台订单号
settleAmount20.00结算金额,最多两位小数,若大于2位小数则舍去(如2.123则为2.12)
status1订单状态:1-处理中,2-成功,3-失败
createTime2023-04-02 17:07:09订单创建时间
completeTime2023-04-02 17:07:09订单完成时间
ext订单额外信息,预留字段

业务状态码说明

状态码描述
200成功
500失败(需要查询订单确认)
5000操作异常(需查询订单确认)
5101请勿重复下单
5102备用金余额不足

充值查询

简要描述

用于查询提交的充值订单。


请求URL

${baseUrl}/api/card/top/up/query

请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必填类型说明
orderNostring平台订单号,不为空时仅用此字段查询
merOrderNostring渠道订单号

返回示例

{
    "data": {
        "amount": "20",
        "cardNumber": "6244810070000117",
        "completeTime": "",
        "createTime": "2023-04-02 17:07:09",
        "ext": "",
        "merOrderNo": "345342352343",
        "orderNo": "4534234363464342",
        "settleAmount": "20.00",
        "status": 0
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

通用响应字段

参数名示例说明类型
data见下表响应数据,订单信息object
msg操作成功响应消息string
status200响应码int
successtrue是否成功(true 或 false)bool

data - 订单信息

参数名示例说明
merOrderNo436343534234渠道订单号
cardNumber6244810070000117卡号
orderNo35432346345345平台订单号
amount20.00充值金额
settleAmount20.00结算金额
status0订单状态:1-处理中 2-成功 3-失败
createTime2023-04-02 17:07:09订单创建时间
completeTime2023-04-02 17:07:09订单完成时间
ext订单额外信息(预留字段)

业务状态码说明

状态码描述
200成功
500失败
5201订单不存在

充值Webhook

接口描述

当充值订单完成后,如果提交订单时填写了通知地址(notifyUrl),平台会向该地址发送通知请求。

  • 接口地址:由订单接口中的 notifyUrl 参数决定
  • 请求方式:POST
  • Content-Type:application/json

请求参数

参数名称必填示例说明
orderNo1448538596381429760平台订单号
merOrderNo1448535323381429760商户订单号
status3订单状态:1-处理中,2-成功,3-失败
failReason处理失败失败原因,仅在status=3时可能有
completeTime20220331121212订单完成时间
createTime20220331121212订单创建时间
settleAmount20结算金额
appKeyedy2378eh23gf29w2appKey
signa87694dbd3be64a356a42be95e123360接口签名
ext“”订单额外信息,预留字段

响应示例

接口返回内容需为字符串:ok

ok

注意事项

  • 如果接口未按要求返回 ok,平台会认定为推送失败。
  • 推送失败时,采用指数退避重试机制:
    • 首次失败后,每隔 1分钟 重试一次,连续重试最多 5次 (即共6次)。
    • 如果仍未收到正确响应,则在最后一次失败后 10分钟 后再次进行推送。
    • 若依然失败,平台会停止进一步自动推送,请及时排查并手动处理相关通知。

MASTER-E

卡片信息

简要描述

查询卡片基本信息(包括余额)


请求URL

${baseUrl}/op/card/E/info

请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
cardNumberstring卡号

返回示例

{
    "data": {
        "available": 0,
        "availableLimit": 0,
        "balance": 0,
        "cardLimit": 0,
        "cardNo": "4242424242459888",
        "dailyAtmLimit": 0,
        "dailyPurchaseLimit": 0,
        "embossedName": "HUIBIN HUANG",
        "expiryMonth": "12",
        "expiryYear": "23",
        "status": 3
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名示例说明类型
data见下表响应数据(卡信息)object
msg操作成功响应消息string
status200响应码int
successtrue是否成功bool

data - 卡片信息

参数名示例说明
cardNo1234567891234567卡号(16位)
embossedNameHUANG BINBIN持卡人姓名
status3卡状态:1-新卡;2-已分配;3-已激活;4-已失效/已注销;5-已挂失
expiryMonth12有效期(月)
expiryYear2027有效期(年)
cardLimit20卡片限额
dailyAtmLimit2300每日ATM限额
dailyPurchaseLimit234每日消费限额
availableLimit399可用限额
balance1000余额
available200可用余额

挂失/解挂

简要描述

用于卡片挂失、解挂。


请求URL

  • 挂失:${baseUrl}/op/card/E/lock
  • 解挂:${baseUrl}/op/card/E/un/lock

请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
cardNumberstring卡号

返回示例

{
    "data": {
        "availableLimit": 0,
        "cardLimit": 0,
        "cardNo": "4242424242459888",
        "dailyAtmLimit": 0,
        "dailyPurchaseLimit": 0,
        "expiryMonth": "12",
        "expiryYear": "23",
        "status": 3
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名示例说明类型
data见下表响应数据(卡片信息)object
msg操作成功响应消息string
status200响应码int
successtrue是否成功(true/false)bool

data - 卡片信息

参数名示例说明
cardNo1234567891234567卡号(16位)
status3卡片状态(1: 新卡,2: 已分配, 3: 已激活,4:已失效/已注销,5: 已挂失)
expiryMonth12有效期(月)
expiryYear2027有效期(年)
cardLimit20限额
dailyAtmLimit2300每日ATM限额
dailyPurchaseLimit234每日消费限额
availableLimit399可用限额

修改/设置ATM密码

简要描述

用于修改或设置ATM密码,PIN(密码)使用AES加密传输,保障安全性。


请求URL

  • 安全设置(PIN加密):${baseUrl}/op/card/E/change/pin/secure
  • 普通设置(PIN明文):${baseUrl}/op/card/E/change/pin

请求方式

  • 方法:POST
  • Content-Type:application/json

请求参数

参数名必选类型说明
cardNumberstring卡号
pinstring6位数字PIN,secure接口需AES加密,普通接口为明文

返回示例

{
    "data": "succeed",
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名示例说明类型
datasucceed响应数据string
msg操作成功响应消息string
status200响应码int
successtrue是否成功:true成功,false失败bool

修改每日限额

简要描述

用于修改卡片每日的消费限额和ATM限额。


请求URL

${baseUrl}/op/card/E/set/daily/limit

请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
cardNumberstring卡号
dailyPurchaseLimitint消费每日限额
dailyAtmLimitintATM每日限额

返回示例

{
    "data": {
        "availableLimit": "0",
        "cardLimit": "0",
        "dailyAtmLimit": "100",
        "dailyPurchaseLimit": "100",
        "embossedName": "HUIBIN HUANG",
        "expiryMonth": "12",
        "expiryYear": "23"
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名示例说明类型
data见下表响应数据(卡片信息)object
msg操作成功响应消息string
status200响应码int
successtrue是否成功:true 为成功,false 为失败bool

data - 卡片信息

参数名示例说明
embossedNameHUANG BINBIN持卡人名字
expiryMonth12有效期-月
expiryYear2027有效期-年
cardLimit20卡片总限额
dailyAtmLimit2300每日ATM限额
dailyPurchaseLimit234每日消费限额
availableLimit399可用限额

查询交易记录

简要描述

用于查询卡片的交易记录。


请求URL

${baseUrl}/op/card/E/transaction

请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
cardNumberstring卡号
pageSizestring数量
dateRangeFromstring起始时间,格式yyyy-MM-dd
dateRangeTostring结束时间,格式yyyy-MM-dd

返回示例

{
    "data": [
        {
            "amount": "10",
            "cardAccountId": "938b56b2-3437-4295-8393-b5e407504c39",
            "cardEmbossedName": "",
            "cardId": "",
            "cardLast4": "",
            "createdAt": "2023-12-13T06:52:55.919Z",
            "currency": "HKD",
            "description": "增值",
            "entryType": "DEBIT",
            "id": "bb5bbae7-d987-4983-bf75-01b90c8e0f3f",
            "intent": "transfer",
            "merchant": "{\"country\":\"\",\"name\":\"\",\"mcc\":\"\",\"category\":\"\"}",
            "refId": "CTNAUG5382",
            "status": "posted"
        },
        {
            "amount": "500",
            "cardAccountId": "938b56b2-3437-4295-8393-b5e407504c39",
            "cardEmbossedName": "",
            "cardId": "",
            "cardLast4": "",
            "createdAt": "2023-12-13T03:30:50.390Z",
            "currency": "HKD",
            "description": "CREDIT BALANCE ADJUSTMENT",
            "entryType": "CREDIT",
            "id": "da8295d2-df35-4c61-b7df-85ea8e740b51",
            "intent": "topup",
            "merchant": "{\"country\":\"\",\"name\":\"\",\"mcc\":\"\",\"category\":\"\"}",
            "refId": "CTD8U71NPV",
            "status": "posted"
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名示例参数说明类型
data见下表响应数据(交易列表)array
msg操作成功响应消息string
status200响应码int
successtrue是否成功:true 成功,false 失败bool

data - 交易记录信息

参数名示例说明
amount23434金额
cardAccountId17c17176-7bfe-4c1e-8bb4-b51f0524d76a卡账号ID
cardEmbossedNameHUIB卡个性名
cardId17c17176-7bfe-4c1e-8bb4-b51f0卡ID
cardLast48922卡后4位
createdAt2023-02-26T22:23:26.103Z交易创建日期
currencyHKD币种
descriptionTOP UP描述
entryTypeCREDIT类型:CREDIT-入账,DEBIT-出账
intenttopup交易目的/方式:charge-收费、refund-退款、topup/transfer-充值、repay-偿还、cashback-现金返回、interest-利息、fee-费用、other-其他
statusposted状态:pending-待处理,posted-已完成,declined-已拒绝,void-已取消

查询交易记录-分页

简要描述

用于查询卡片的交易记录,支持分页查询。

  • 第一次查询时不传 pageToken
  • 查询返回后,如果返回了 nextPageTokenprevPageToken,可根据这些 token 翻页再次查询

请求URL

${baseUrl}/op/card/E/transaction/page

请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
cardNumberstring卡号
pageTokenstring页码 token,第一次不传,翻页时使用返回的 token
pageSizestring每页条数
dateRangeFromstring起始时间,格式 yyyy-MM-dd
dateRangeTostring结束时间,格式 yyyy-MM-dd

返回示例

{
    "data": {
        "nextPageToken": "eyJpZCI6IjZhNTExYmRiLTU0NmItNGM4Mi1iOGI0LWY5Yzc1NGJlMmI4OSIsInBhZ2VTaXplIjozLCJjdXJyZW50IjoyLCJkaXJlY3Rpb24iOiJuZXh0In0=",
        "prevPageToken": "",
        "transactions": [
            {
                "amount": "2",
                "cardAccountId": "938b56b2-3437-4295-8393-b5e407504c39",
                "cardEmbossedName": "",
                "cardId": "",
                "cardLast4": "",
                "createdAt": "2024-04-17 14:23:00",
                "currency": "HKD",
                "description": "增值",
                "entryType": "DEBIT",
                "id": "885d2247-27a8-4405-9db6-e5031d44e6fc",
                "intent": "transfer",
                "merchant": "{\"country\":\"\",\"name\":\"\",\"mcc\":\"\",\"category\":\"\"}",
                "refId": "CT156Z3CV6",
                "status": "posted",
                "xid": "accttrans_1780482111940837376"
            },
            {
                "amount": "22",
                "cardAccountId": "938b56b2-3437-4295-8393-b5e407504c39",
                "cardEmbossedName": "",
                "cardId": "",
                "cardLast4": "",
                "createdAt": "2024-03-19 18:56:38",
                "currency": "HKD",
                "description": "test",
                "entryType": "DEBIT",
                "id": "942a75ad-acf2-4718-b7ce-3b46a71f3804",
                "intent": "transfer",
                "merchant": "{\"country\":\"\",\"name\":\"\",\"mcc\":\"\",\"category\":\"\"}",
                "refId": "CTB7R765KX",
                "status": "posted",
                "xid": "accttranstest_1770039366362087424"
            },
            {
                "amount": "11",
                "cardAccountId": "938b56b2-3437-4295-8393-b5e407504c39",
                "cardEmbossedName": "",
                "cardId": "",
                "cardLast4": "",
                "createdAt": "2024-03-19 16:09:07",
                "currency": "HKD",
                "description": "test20240319",
                "entryType": "DEBIT",
                "id": "6a511bdb-546b-4c82-b8b4-f9c754be2b89",
                "intent": "transfer",
                "merchant": "{\"country\":\"\",\"name\":\"\",\"mcc\":\"\",\"category\":\"\"}",
                "refId": "CTJ4NT62GR",
                "status": "posted",
                "xid": "accttrans_1769997341692542976"
            }
        ]
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名示例说明类型
data见下表响应数据object
msg操作成功响应消息string
status200响应码int
successtrue是否成功,true为成功,false为失败bool

data - 分页数据

参数名示例说明
nextPageTokendhd2e293jei3hr32he839jdi3nd30-skj下一页token
prevPageTokendhd2e293jei3hr32he839jdi3nd30上一页token
transactionsArray交易记录列表

transactions - 交易信息

参数名示例说明
amount23434金额
cardAccountId17c17176-7bfe-4c1e-8bb4-b51f0524d76a卡账户ID
cardEmbossedNameHUIB卡个性名
cardId17c17176-7bfe-4c1e-8bb4-b51f0卡ID
cardLast48922卡号后4位
createdAt2023-02-26T22:23:26.103Z交易创建日期
currencyHKD币种
descriptionTOP UP描述
entryTypeCREDIT类型,CREDIT入账,DEBIT出账
intenttopup交易类型:charge收费、refund退款、topup/transfer充值、repay偿还、cashback现金返还、interest利息、fee费用、other其他
statusposted交易状态:pending待处理,posted已完成,declined已拒绝,void已取消

说明:

  • 如果交易状态为 posted(Cleared),原交易记录状态保持不变,退款会新增一条交易记录。
  • 如果交易状态为 pending(Locked),该记录会变为 void,并退还额度给客户,不会再有一条退款(Refund)记录。

VISA-H

卡片信息

简要描述

卡信息及余额查询

变更记录

变更时间变更内容
2025-04-23返回增加 status 字段

请求URL

${baseUrl}/op/card/H/balance

请求方式

  • Method: POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
cardNumberstring卡号

返回示例

{
    "data": {
        "availableCredit": 123,
        "currentBillingEndDate": 1724342400000,
        "cvv": "WBM3cgTCXY2Yt6ARQ82IVQ==",
        "expiry": "202707",
        "overallCreditLimit": 123,
        "panFirst6": "451888",
        "panLast4": "0229",
        "status": "activated",
        "totalBalance": 0
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

通用参数

参数名称示例参数说明schema
datajson响应数据data信息
msg操作成功响应消息
status200响应码
successtrue是否成功(true/false)

data 字段说明

参数名称示例参数说明
availableCredit11可用信用额度 - 总余额,相当于 overallCreditLimit + totalBalance
overallCreditLimit10整体信用限额,当日增值总额会在此字段体现,T+1会转到 totalBalance
totalBalance11总余额
currentBillingEndDate1723824000000当前账单结算时间
expiry202707有效期
panFirst6451888卡号前6位
panLast40229卡号后4位
statusactivated卡状态
cvvWBM3cgTCXY2Yt6ARQ82IVQ==CVV,使用密钥解密后使用,解密请参考相关解密文档

挂失/解挂

简要描述

卡挂失、解挂操作

请求URL

  • POST ${baseUrl}/op/card/H/lock — 挂失
  • POST ${baseUrl}/op/card/H/un/lock — 解挂

请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
cardNumberstring卡号

返回示例

{
    "data": true,
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datatrue响应数据,是否成功boolean
msg操作成功响应消息string
status200响应码int
successtrue是否成功:true 成功,false 失败boolean

修改/设置PIN

简要描述

用于修改或设置ATM密码,区别在于PIN需加密传输,更加安全。
原接口 ${baseUrl}/op/card/H/change/pin 已废弃。

请求URL

${baseUrl}/op/card/H/change/pin/secure

请求方式

  • 方法:POST
  • Content-Type:application/json

请求参数

参数名必选类型说明
cardNumberstring卡号
pinstring6位数PIN的加密值(请参考AES加密方式)

返回示例

{
    "data": true,
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datatrue响应数据,true-设置成功boolean
msg操作成功响应消息string
status200响应码int
successtrue是否成功(true/false)boolean

查询交易记录

简要描述

用于查询交易记录。
在每日24点前的充值记录,会在次日7点生成账单。


更新记录

更新日期更新内容
2024-10-16增加返回 debitOrCreditFlag 字段
2024-10-16transactionSource 字典值更新
2025-03-26查询条件增加 isAuthorization
如果 isAuthorization=false,展示未结算流水;如为 true,展示已结算流水。客户消费的订单初始会在 false 列表,结算后进入 true 列表。

请求URL

${baseUrl}/op/card/H/transactions

请求方式

  • 方法:POST
  • Content-Type:application/json

请求参数

参数名必选类型说明
cardNumberstring卡号
offsetstring偏移量,从0开始,例如0/10/20
pageSizestring数量
isAuthorizationint0:未结算订单,1:已结算订单
creationTimeFromstring起始时间,格式 yyyy-MM-dd
creationTimeTostring结束时间,格式 yyyy-MM-dd

返回示例

{
  "data": [
    {
      "amount": 10,
      "creationTime": "2024-07-17T23:00:20.609Z",
      "currency": "HKD",
      "isATM": false,
      "isAuthorization": false,
      "isInCountry": true,
      "isOnline": false,
      "isPos": false,
      "memo": "Repayment for order r-2342342422342343 (501)",
      "reversal": false,
      "settlementDate": "2024-07-18T00:00:00Z",
      "transactionId": 1000001081427,
      "transactionSource": "6",
      "transactionType": "5",
      "txCompleted": true,
      "acquirerCurrency": "",
      "acquirerAmount": 0,
      "cardAcceptorName": ""
    },
    {
      "amount": 11,
      "creationTime": "2024-07-18T23:00:43.07Z",
      "currency": "HKD",
      "isATM": false,
      "isAuthorization": false,
      "isInCountry": true,
      "isOnline": false,
      "isPos": false,
      "memo": "Repayment for order r-240718180106121536 (501)",
      "reversal": false,
      "settlementDate": "2024-07-19T00:00:00Z",
      "transactionId": 1000001081883,
      "transactionSource": "6",
      "transactionType": "5",
      "txCompleted": true,
      "acquirerCurrency": "HKD",
      "acquirerAmount": 235,
      "cardAcceptorName": "AlipayHK*ALIPAY"
    }
  ],
  "msg": "操作成功",
  "status": 200,
  "success": true
}

返回参数说明

参数名称示例参数说明schema
datajsonArray响应数据,见下表交易记录
msg操作成功响应消息string
status200响应码int
successtrue是否成功:成功true,失败falseboolean

data - 交易记录字段说明

参数名称示例参数说明
amount23434金额
creationTime2024-07-17T23:00:20.609Z交易创建时间
settlementDate2024-07-17T23:00:20.609Z结算时间
currencyHKD币种
acquirerCurrencyUSD请求币种
acquirerAmount23.1请求金额
cardAcceptorNameorder r-2342342422342343授权商户信息
isATMfalse是否ATM取现
isAuthorizationfalse是否授权:true时amount金额为0,acquirerAmount为实际授权金额,结算后amount才会有值
isInCountryfalse是否本地国家
isOnlinefalse是否线上
isPosfalse是否POS
memoRepayment for order r-2342342422342343 (501)交易信息
transactionId1000001081427交易单号
debitOrCreditFlagDD -> 扣账(减少) C -> 记账(增加)
transactionSource6交易来源,见下方字典
transactionType5交易类型,见下方字典
txCompletedtrue是否完成,完成后,amount一开始为0的记录会生成实际结算金额

字典说明

transactionType - 交易类型字典

说明描述
0unknown
1newAccount新建账户。
2cardSale新卡开卡。
3purchasePOS消费或线上消费,或移动端消费。
4refund退款至卡或钱包。
5account fundingTopUp 通过POS向钱包充值,币种支持与否均可。
6withdraw通过POS或ATM取款,或无需卡的银行转账操作等。
7balanceInquiry余额查询。
8p2p点对点转账。
9walletTransfer钱包之间转账。
10exchange货币兑换(买/卖方)。
11exchangeMargin不同币种间兑换差额。
12secondPresentment提交信息(如汇票等)。
13chargeback拒付处理。
14adjustment资金调整。
15exchangeAdjustment汇率调整。
16maintenance账户维护。
17chargeoff坏账核销。
18withholding优惠金/扣款保留。
19closeAccount账户关闭。
20reward奖励发放。
21shipping卡片发货(标准快递)。
22expeditedShipping卡片加急快递。
23addressing注册FPS快速支付ID。
24settlement结算。
25consolidated账户合并。
26interest利息发放。
27cashback返现。
28fee扣费。
29monthly fee月费。
30annual fee年费。
31fastFundVisa即时到账。
32loadReversal充值撤销。
33expiry过期资金返还至最初出资方。
34moneyReceiveMastercard快速到账。
35latePaymentFee逾期付款手续费。

transactionSource - 交易来源字典

说明
0Unknown
1InWalletPOS
2OutOfWalletPOS
3InWalletATM
4OutOfWalletATM
5Online
6Partner = TopUp
7Customer
8Internal
9Static
10MobileCommerce
11OnUs
12OutOfWalletOnline

OOB

接口说明

当客户线上消费时,会触发 OOB 推送,将相关信息展示给客户,并提供按钮让客户进行确认。此流程详见 Visa 官方文档

  • 接口地址:后台安全中心配置的接收地址
  • 请求方式:POST
  • Content-Type:application/json

请求参数

参数名必填示例说明
dataJSON 字符串,参考下方内容授权信息
appKeyedy2378eh23gf29w2appKey
signa87694dbd3be64a356a42be95e123360接口签名

data 字段参数说明及示例:

{
  "cardNumber": "7662222584726493096",
  "acsTransactionId": "41ce7a7d-9d57-4d87-b6e4-310acfa4b276",
  "transactionInformation": [
    {
      "merchantName": "Amazon",
      "purchaseAmount": "31.81",
      "purchaseCurrency": "USD",
      "purchaseDate": 1722212389000,
      "merchantCountryCode": 840,
      "acquirerMerchantID": "784959000762203",
      "maskedPAN": "451888******8888"
    }
  ],
  "threeDsRequestorAppUrl": "",
  "status": 1,
  "createdDate": 1722212395829,
  "lastModifiedDate": 1722212395829,
  "expireDate": 1722212495829
}

data 内部参数说明

字段名示例说明
cardNumber7662222584726493096卡号
acsTransactionId41ce7a7d-9d57-xxx…交易流水号
settlementDate2024-07-17T23:00:20.609Z结算时间
status1状态
transactionInformation数组,见下表交易信息
createdDate1722212395829创建时间
lastModifiedDate1722212395829最后更新时间
expireDate1722212395829过期时间

transactionInformation 字段说明

字段名示例说明
merchantNameAmazon商户名称
purchaseAmount31.81金额
purchaseCurrencyUSD币种
purchaseDate1722212389000交易时间
merchantCountryCode840国家码
acquirerMerchantID784959000762203商户ID
maskedPAN451888******8888卡号

status 字段字典

数值含义
-3FAILED
-2CANCELLED
-1TIMEOUT
1IN_PROGRESS
2ACCEPTED
3DECLINED

响应示例

body 内容为字符串:“ok”

ok

重要说明

  • 未按要求返回 ok,平台将视为推送失败。由于有时效性,失败的推送不会重试。
  • 如果多次推送失败,请采用指数退避策略重试,即每次重试延迟的时间逐步增加,建议最大重试次数不超过 5 次。

OOB处理

简要描述

当触发OOB时,用户收到OOB信息,由客户确认后提交处理动作。

请求URL

${baseUrl}/op/card/H/oob

请求方式

  • Method:POST
  • Content-Type:application/json

请求参数

参数名必选类型说明
cardNumberstring卡号
acsTransactionIdstringOOB的交易ID
replyint回复动作,请提交:2-ACCEPTED,3-DECLINED

返回示例

{
    "data": {
        "confirmationStatus": 2
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
dataobject响应数据object
msg操作成功响应消息string
status200响应码int
successtrue是否成功(true/false)boolean

data 字段说明

参数名称示例参数说明
confirmationStatus2状态,参见下方字典

confirmationStatus 字典说明

valuekey
-3FAILED
-2CANCELLED
-1TIMEOUT
1IN_PROGRESS
2ACCEPTED
3DECLINED

模拟触发OOB

简要描述

用于模拟触发一条 OOB(Out of Band)通知。

请求URL

${baseUrl}/op/card/H/oob/simulate

请求方式

  • Method: POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
cardNumberstring卡号

返回示例

{
    "data": true,
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datatrue响应数据,是否成功boolean
msg操作成功响应消息string
status200响应码int
successtrue是否成功(true/false)boolean

VIRTUAL-P

说明

  • 本卡与其他卡产品不同。
  • 开卡时返回的卡号并非真实卡号,而是卡ID,仅用于API操作。
  • 真实的卡号、有效期、CVV信息需通过卡信息中的 secureUrl 获取。
  • secureUrl 需每次重新获取,使用一次后即失效。
  • 可将 secureUrl 内嵌展示给用户使用。

获取卡头

简要描述

  • 获取卡头,开卡时使用

请求URL

POST ${baseUrl}/op/card/P/bin
Content-Type: application/json

更新记录

更新日期更新内容
2025-09-16增加返回支持场景platforms

请求方式

  • 方法:POST
  • Content-Type: application/json

返回示例

{
    "data": [
        {
            "bin": "537100",
            "issuerCountry": "US",
            "network": "MasterCard",
            "platforms": [
                {
                    "platformLabel": "Invideo AI",
                    "successRate": "1"
                },
                {
                    "platformLabel": "Notion",
                    "successRate": "1"
                }
            ]
        },
        {
            "bin": "428852",
            "issuerCountry": "US",
            "network": "Visa",
            "platforms": [
                {
                    "platformLabel": "Select Media",
                    "successRate": "1"
                },
                {
                    "platformLabel": "Victoria's Secret",
                    "successRate": "1"
                }
            ]
        },
        {
            "bin": "517746",
            "issuerCountry": "US",
            "network": "MasterCard",
            "platforms": [
                {
                    "platformLabel": "Replicate",
                    "successRate": "1"
                },
                {
                    "platformLabel": "Whoop",
                    "successRate": "1"
                }
            ]
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

一级返回参数

参数名称示例参数说明类型
datajsonArray响应数据,卡头信息,建议直接展示给客户选择,内容不定卡头信息数组
msg操作成功响应消息string
status200响应码int
successtrue是否成功(true为成功,false为失败)boolean

data字段结构

参数名称示例参数说明类型
bin428836卡头信息,展示给客户选择,由客户选取卡头string
issuerCountryUS发行地区string
networkVISA卡类型string
platformsjsonArray支持的场景场景数组

platforms字段结构

参数名称示例参数说明类型
platformLabelReplicate场景名称string
successRate1成功率string

卡信息

简要描述

获取卡信息,需要在兼容 v1 的接口前提下使用。


请求URL

${baseUrl}/op/card/P/info/v2

请求方式

  • Method:POST
  • Content-Type:application/json

请求参数

参数名必选类型说明
cardNumberstring卡ID

返回示例

{
    "data": {
        "balance": {
            "available": "10",
            "currency": "USD",
            "frozen": "0",
            "pending": "0"
        },
        "billingAddress": {
            "addressLine1": "456 Elm Street San Francisco",
            "addressLine2": "",
            "city": "DC",
            "country": "USA",
            "postalCode": "94101",
            "state": "WA"
        },
        "bin": "537100",
        "firstName": "Dennis",
        "last4": "0729",
        "lastName": "Huang",
        "cardInfo": {
            "cardNo":"2532hd2ubdebdebdebd",
            "cvv":"2532hd2ubdebdebdebd",
            "expYear":"2532hd2ubdebdebdebd",
            "expMonth":"2532hd2ubdebdebdebd"
        },
        "status": "Active"
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datajson响应数据data信息
msg操作成功响应消息string
status200响应码int
successtrue是否成功:true成功,false失败bool

data 字段说明

参数名称示例参数说明
bin559292卡bin
firstNameEli
lastNameDavis
last41234卡后四位
statusActive卡片状态:Active-使用中,Frozen-冻结,Inactive-注销
billingAddressjsonObject注册地址信息
balancejsonObject余额信息
cardInfojsonObject卡信息

billingAddress 字段说明

参数名称示例是否必填说明
addressLine11 Westwood DriveaddressLine1
addressLine21 Westwood DriveaddressLine2
cityFort Worth城市
countryUS国家
postalCode89328邮编
stateIL州/省

balance 字段说明

参数名称示例是否必填说明
available10可用余额
currencyUSD币种
frozen0冻结
pending1结算中

cardInfo 字段说明

参数名称示例是否必填说明
cardNo34783hddh3h3ube3e卡号,需要使用aes解密
cvv34783hddh3h3ube3eCVV,需要使用aes解密
expYear034783hddh3h3ube3e有效期-年,需要使用aes解密
expMonth34783hddh3h3ube3e有效期-月,需要使用aes解密

status 字段说明

描述
Active使用中
Frozen冻结
Inactive注销

查询交易记录

简要描述

查询卡片的交易记录,查询时间跨度最大为3个月。


请求URL

POST ${baseUrl}/op/card/P/transaction
Content-Type: application/json

请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
cardNumberstring卡ID
pageTokenstring页码(页数游标,可为空)
pageSizestring每页数量
creationTimeFromstring起始时间,格式 yyyy-MM-dd
creationTimeTostring结束时间,格式 yyyy-MM-dd

返回示例

{
    "data": {
        "currentPage": 1,
        "pageSize": 2,
        "totalRecords": 1,
        "transactions": [
            {
                "amount": "10",
                "cardNumber": "5592922156696856",
                "currency": "USD",
                "debitOrCreditFlag": "D",
                "id": "ac4cef2d-8d1b-4ee9-a15e-b751ebaefad0",
                "status": "Closed",
                "transactionTime": "2024-11-29T02:24:14.578Z",
                "type": "TopUp"
            }
        ]
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
data-响应数据,见下表object
msg操作成功响应消息string
status200响应码int
successtrue是否成功(true为成功)boolean

data 字段说明(交易记录信息)

参数名称示例参数说明
idac4cef2d-8d1b-4ee9-a15e-b751ebaefad0交易号
cardNumber4383570038788189卡ID
debitOrCreditFlagDD:扣账(减少),C:记账(增加)
transactionTime2024-11-29T02:24:14.578Z交易发生时间
currencyCNY交易币种
amount38.48交易币种金额
typeTopUp交易类型
statusAPPROVED状态
detailWEIXIN*huidi 5210747029 CN交易详情

type 字段枚举值说明

描述
Consumption消费
TopUp增值
Fee消费手续费
Credit退款
Reversal冲正
DeleteCard注销卡

status 字段枚举值说明

描述
Approve审批完成
Pending待处理
Fail失败

解冻/冻结

简要描述

  • 对指定卡片进行冻结或解冻操作,用于临时锁定或解锁使用权限。

请求URL

冻结卡片

POST ${baseUrl}/op/card/P/lock
Content-Type: application/json

解冻卡片

POST ${baseUrl}/op/card/P/un/lock
Content-Type: application/json

请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
cardNumberstring卡ID

返回示例

{
    "data": true,
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datatrue响应数据(操作是否成功)boolean
msg操作成功响应消息string
status200响应码int
successtrue是否成功(true为成功,false为失败)boolean

销卡

简要描述

卡注销操作

  • 返回成功表示操作接收成功,后台会执行卡注销动作,该操作需要一定时间处理
  • 注销成功后会有通知推送,推送内容会包含卡内金额退还信息

请求URL

POST ${baseUrl}/op/card/P/close
Content-Type: application/json

请求参数

参数名必选类型说明
cardNumberstring卡 ID

返回示例

{
    "data": true,
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datatrue响应数据(true:注销成功,false:失败)boolean
msg操作成功响应消息string
status200响应码int
successtrue是否成功(true为成功,false为失败)boolean

Webhook

接口描述

通知信息,包括卡余额变动、3ds 消息等。

接口地址

由后台设置

请求方式

POST
Content-Type: application/json

指数退避

如遇推送失败,建议使用指数退避算法进行重试,例如初次失败后 1 秒,第二次 2 秒、4 秒、8 秒等递增,最多重试五次。

请求参数

参数名必填类型示例说明
typestring3ds通知类型
datastringjsonString通知信息(JSON字符串)
appKeystringedy2378eh23gf29w2appKey
signstringa87694dbd3be64a356a42be95e123360接口签名

请求示例

{
  "data": "{\"id\":\"e6a54b44-1a38-4d51-824c-6f7bf6e1fb3e\",\"currency\":\"USD\",\"amount\":\"9\",\"type\":\"TopUp\",\"cardNo\":\"5592922156696856\",\"status\":\"Closed\",\"transactionTime\":\"2024-11-29T07:14:18.157Z\"}",
  "sign": "dc227220340c874fec3bba43bad08b32",
  "appKey": "psqxrezci72955wqxlhar898vx2q8lts",
  "type": "CardTransaction"
}

响应示例

body 内容直接返回字符串 ok

ok

各通知类型说明

1. CardTransaction(卡交易通知)

参数名必填类型示例说明
idstringfb68813f-61cd-4d17-8265-4b5dd71ec405流水ID
cardNostring5592922156696856卡号
currencystringUSD币种
amountstring9金额
typestringTopUp类型
statusstringClosed状态
detailstringMETAPAY*ADS fb.me/ads IE消费详情
transactionTimestring2024-11-29T07:14:18.157Z发生时间

type 枚举值

说明
TopUp充值
Consumption消费
Fee消费手续费
Auth授权
Credit退款
Reversal冲正
FrozenCard冻结
UnFrozenCard解冻
CardStateChange卡状态变更
DeleteCard注销卡(据此回退金额和销卡处理)

status 枚举值

说明
Pending处理中
Approve成功
Fail失败

2. DeleteCard(销卡通知)

参数名必填类型示例说明
cardNostring5592922156696856卡号
currencystringUSD币种
statusstringInactive状态
userNamestringas aa用户名
createTimestring2021-08-30T11:59:32.935Z创建时间
cardNoLastFourstring9990卡后四位

status 枚举值

描述
Active使用中
Frozen冻结
Inactive注销

3. Card3dsOtp(3ds 验证码)

参数名必填类型示例说明
cardNostring5592922156696856卡号
currencystringUSD币种
amountstring9金额
otpstring1234321OTP
detailstring交易信息

4. ThreeDomainSecureForwarding(3ds 跳转)

备注:有些卡需要跳转指定页面提交验证码

参数名必填类型示例说明
cardNostring5592922156696856卡号
currencystringUSD币种
amountstring9金额
detailstring交易信息
timestamplong1725350485682时间戳
expirationTimelong1725350785682过期时间
urlstring1234321跳转地址提交验证码

VIRTUAL-L

获取卡头

接口描述:
获取卡头信息,用于展示给客户查看。


请求URL:
${baseUrl}/op/card/L/head
${baseUrl}/op/card/L/head/en

请求方式:
POST

请求头部:
Content-Type: application/json


返回示例

{
    "data": [
        {
            "ChatGPT": [
                {
                    "美国": [
                        {
                            "VISA": [
                                "440872",
                                "489607",
                                "491090",
                                "485997"
                            ]
                        },
                        {
                            "万事达": [
                                "559292",
                                "556371"
                            ]
                        }
                    ]
                }
            ],
            "电商消费": [
                {
                    "美国": [
                        {
                            "VISA": [
                                "491090",
                                "489607",
                                "485997"
                            ]
                        },
                        {
                            "万事达": [
                                "559292",
                                "556371",
                                "556167",
                                "553437"
                            ]
                        }
                    ],
                    "中国香港": [
                        {
                            "VISA": [
                                "438357",
                                "493193"
                            ]
                        }
                    ]
                }
            ],
            "广告投放": [
                {
                    "美国": [
                        {
                            "VISA": [
                                "491090",
                                "489607",
                                "483317"
                            ]
                        },
                        {
                            "万事达": [
                                "559292",
                                "556371"
                            ]
                        }
                    ],
                    "中国香港": [
                        {
                            "VISA": [
                                "438357",
                                "493193"
                            ]
                        }
                    ]
                }
            ]
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datajsonArray响应数据,卡头信息,展示给客户查看。格式不变,内容不定jsonArray
msg操作成功响应消息string
status200响应码int
successtrue是否成功,true-成功,false-失败boolean

卡信息

简要描述:
获取卡信息


请求URL:
${baseUrl}/op/card/L/info

请求方式:
POST

请求头部:
Content-Type: application/json


请求参数

参数名称必填类型说明
cardNumberstring卡号

返回示例

{
    "data": {
        "balance": "12.00",
        "cardExpiryDate": "08/2026",
        "cardNo": "5561672373861111",
        "cardStatus": "1",
        "cardStatusDesc": "使用中",
        "cardUserInfo": {
            "birthDate": "1992-09-20",
            "email": "[email protected]",
            "firstName": "dennis",
            "lastName": "hhb",
            "mobile": "9375161772"
        },
        "cvv": "1Hqa1r3Kb6nWIpVRn8/odg==",
        "localCurrency": "USD",
        "startActiveDate": "2024-08-10"
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datajson响应数据,见下方 data 信息object
msg操作成功响应消息string
status200响应码int
successtrue是否成功:true-成功,false-失败boolean

data字段说明

参数名称示例参数说明类型
balance3.234卡片余额string
cardNo235344343卡号string
cvv23684823920432cvv,需使用密钥解密后使用,请参考 解密string
cardExpiryDate09/23卡片有效期string
localCurrencyUSD币种string
startActiveDate02/23激活日期string
cardStatus0卡片状态 0-冻结 1-使用中 2-已销卡int/string
cardUserInfojsonObject注册用户信息object

cardUserInfo 字段说明

参数名称示例参数说明类型
birthDate1992-09-20出生年月string
email[email protected]注册邮箱string
firstNamedennis用户名string
lastNamehuang用户姓string
mobile169374627注册手机号string

查询交易记录

简要描述:
查询指定卡号的交易记录。单次查询时间范围最大为 3 个月。


请求URL:
${baseUrl}/op/card/L/transaction

请求方式:
POST

请求头部:
Content-Type: application/json


请求参数

参数名称必填类型说明
cardNumberstring卡号
pageTokenstring页码
pageSizestring数量
creationTimeFromstring起始时间,格式yyyy-MM-dd
creationTimeTostring结束时间,格式yyyy-MM-dd

返回示例

{
    "data": {
        "currentPage": 1,
        "pageSize": 2,
        "totalRecords": 3,
        "transactions": [
            {
                "cardId": "2408032111001269724",
                "crossBoardType": "1",
                "localCurrency": "USD",
                "localCurrencyAmt": "",
                "occurTime": 1722682107000,
                "platformType": "消费",
                "recordNo": "2408031848060073804",
                "respCode": "000000",
                "respCodeDesc": "交易成功",
                "transCurrency": "CNY",
                "transCurrencyAmt": "38.48",
                "transStatus": "APPROVED",
                "transType": "AUTH"
            },
            {
                "cardId": "2408032111001269724",
                "crossBoardType": "1",
                "localCurrency": "USD",
                "localCurrencyAmt": "",
                "occurTime": 1722682107000,
                "platformType": "消费",
                "recordNo": "2408031848060073804",
                "respCode": "000000",
                "respCodeDesc": "交易成功",
                "transCurrency": "CNY",
                "transCurrencyAmt": "38.48",
                "transStatus": "APPROVED",
                "transType": "AUTH"
            }
        ]
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datajson响应数据,见下方 data 字段object
msg操作成功响应消息string
status200响应码int
successtrue是否成功:true-成功,false-失败boolean

data 字段说明(transactions 列表项)

参数名称示例参数说明类型
recordNo245346345345流水号string
occurTime1722682107000交易发生时间(时间戳)long
transCurrencyCNY交易币种string
transCurrencyAmt38.48交易币种金额string
localCurrencyUSD卡币种string
localCurrencyAmt38.48卡本币种交易金额string
respCode000000交易响应码string
respCodeDesc交易成功交易响应码描述string
crossBoardType1跨境类型:0-境内 1-境外string
transTypeAUTH交易类型(AUTH-消费 REFUND-退款 FEE-手续费 TOP UP-增值 REVERSAL-冲正)string
transStatusAPPROVED交易状态(APPROVED-批准 DECLINED-拒绝)string
platformType消费描述string
merchantNameWEIXIN*Meituan交易商户信息string
merchantCategoryCode5999商户类型string
approvalCodeVWAJ0R批准代码string

解冻/冻结

接口描述:
用于对卡片进行挂失(冻结)或解挂(解冻)操作。


请求URL:
${baseUrl}/op/card/L/lock — 挂失
${baseUrl}/op/card/L/un/lock — 解挂

请求方式:
POST

请求头部:
Content-Type: application/json


请求参数

参数名必填类型说明
cardNumberstring卡号

返回示例

{
    "data": true,
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datatrue响应数据,true-成功,false-失败boolean
msg操作成功响应消息string
status200响应码int
successtrue是否成功,true-成功,false-失败boolean

销卡

接口描述:
注销卡片。调用接口后若返回成功,仅代表操作已提交,后台系统会进行实际注销处理,此过程可能需要一定时间。待注销完成后会异步推送通知,通知中将包含退款金额等信息。


请求URL:
${baseUrl}/op/card/P/close

请求方式:
POST

请求头部:
Content-Type: application/json


请求参数

参数名必选类型说明
cardNumberstring卡片ID

返回示例

{
    "data": true,
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datatrue响应数据,true-注销成功,false-失败boolean
msg操作成功响应消息string
status200响应码int
successtrue是否成功,true-成功,false-失败boolean

注意事项:

  • 该接口仅提交注销请求,具体注销及退款流程需等待后台处理。
  • 注销完成后会有专门的通知推送,包含退款金额(退还到备用金账户)。

OTP-Webhook

接口描述:
OTP通知,用户在使用卡片时,若需要验证码,会通过本接口推送当前OTP,需将OTP及时提供给用户。


接口地址:
后台设置

请求方式:
POST

请求头部:
Content-Type: application/json


请求参数

参数名称必填示例参数说明
otp123456验证码
cardNo493193**1091卡号
transactionCurrencyCNY币种
transactionAmount23.32交易金额
appKeyedy2378eh23gf29w2appKey
signa87694dbd3be64a356a42be95e123360接口签名

响应示例

接口响应内容为字符串 “ok”:

ok

注意事项:

  • OTP具有时效性,仅通知一次

Bill-Webhook

接口描述:
当卡余额有变动时,平台会推送通知至指定后台地址。

接口地址:
后台配置通知地址

请求方式:
POST

请求头部:
Content-Type: application/json


请求参数

参数名称必填示例参数说明
cardNumber1234567812345678卡号
recordNo245346345345流水号
occurTime2024-09-03 17:40:06交易发生时间
transCurrencyCNY交易币种
transCurrencyAmt38.48交易币种金额
localCurrencyUSD卡币种
localCurrencyAmt38.48卡本币种交易金额
respCode000000交易响应码
respCodeDesc交易成功交易响应码描述
merchantNameWEIXIN*Meituan交易商户信息
merchantCategoryCode5999商户类型
approvalCodeVWAJ0R批准代码
crossBoardType1跨境类型:0-境内 1-境外
transTypeAUTH交易类型:AUTH-消费 REFUND-退款 FEE-手续费 TOP UP-增值 REVERSAL-冲正
transStatusAPPROVED交易状态:APPROVED-批准 DECLINED-拒绝
platformType消费描述
appKeyedy2378eh23gf29w2appKey
signa87694dbd3be64a356a42be95e123360接口签名

请求示例

{
    "localCurrencyAmt": "10",
    "occurTime": "2024-09-03 17:40:06",
    "platformType": "开卡预存",
    "sign": "d1fd48a0268506f4a131442a27485385",
    "localCurrency": "USD",
    "transCurrency": "USD",
    "recordNo": "2409031607063343947",
    "crossBoardType": "1",
    "transType": "TOP UP",
    "respCodeDesc": "交易成功",
    "appKey": "psqxrezci72955wqxlhar898vx2q8lts",
    "respCode": "000000",
    "transCurrencyAmt": "10",
    "transStatus": "APPROVED"
}

响应示例

ok (body内容为字符串“ok“)


注意事项

  1. 若未按要求返回ok,平台将视为推送失败,平台将采用指数退避策略进行重试,初次推送失败后每隔1分钟进行重复推送5次。
  2. 若依然未成功回应,将在10分钟后再进行新一轮推送,如此共10组(共计最多50次)。
  3. 请确保及时正确响应,避免消息丢失。

close-Webhook

接口描述:
先提交注销请求,注销成功后进行通知。
退款金额将退回备用金账户,客户端需自行处理退款。
需在中台-安全中心配置通知地址。

接口地址:
后台设置

请求方式:
POST

请求头部:
Content-Type: application/json


请求参数

参数名称必填示例参数说明
cardNumber1234567812345678卡号
recordNo245346345345流水号
occurTime2024-09-03 17:40:06交易发生时间
localCurrencyUSD卡币种
localCurrencyAmt38.48退款金额,将退回备用金账户,需发卡方自行退还给客户
appKeyedy2378eh23gf29w2appKey
signa87694dbd3be64a356a42be95e123360接口签名

请求示例

{
    "localCurrencyAmt": "10",
    "occurTime": "2024-09-03 17:40:06",
    "sign": "d1fd48a0268506f4a131442a27485385",
    "localCurrency": "USD",
    "recordNo": "2409031607063343947",
    "appKey": "psqxrezci72955wqxlhar898vx2q8lts",
    "transCurrencyAmt": "10"
}

响应示例

请求成功时,body 内容需返回字符串 ok

ok

注意事项

  1. 未按要求返回 ok 时,平台将视为推送失败,将使用指数退避(exponential backoff)策略:首次失败后,每1分钟重试一次,连续推送5次为一组。
  2. 若5次重试仍未回应,间隔10分钟后,将开始下一组重试。共重试10组,总计50次。
  3. 若持续不回应,可能导致卡片注销退款未能及时处理,请务必保证消息接收与正确回应。

模拟验证码

简要描述:
用于模拟客户触发验证码功能,若已绑定通知地址,通知地址会收到本次模拟消息。仅适用于测试环境。


请求URL:
${baseUrl}/op/card/L/simulation/otp

请求方式:
POST

请求头部:
Content-Type: application/json


请求参数

参数名称必填类型说明
cardNumberstring卡号

返回示例

{
    "data": true,
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datatrue响应数据,true-操作成功,false-失败boolean
msg操作成功响应消息string
status200响应码int
successtrue是否成功:true-成功,false-失败boolean

模拟交易

简要描述:
用于模拟客户发起一笔交易。若已绑定通知地址,通知地址会收到本次模拟消息。仅适用于测试环境。


请求URL:
${baseUrl}/op/card/L/simulation/transaction

请求方式:
POST

请求头部:
Content-Type: application/json


请求参数

参数名称必填类型说明
cardNumberstring卡号

返回示例

{
    "data": true,
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datatrue响应数据,true-操作成功,false-失败boolean
msg操作成功响应消息string
status200响应码int
successtrue是否成功:true-成功,false-失败boolean

B

快速开始

API 公共参数

API 涉及的公共请求参数和返回参数如下:

请求参数

参数名类型是否必填说明
Request-Idstring每次请求的唯一ID
AuthorizationstringBearer <token>,JWT token,除获取token接口外必填
Content-Typestring固定值:application/json

返回参数

所有返回均为 JSON 格式,数据结构如下:

参数名类型说明
codestring错误码,SUCCESS为成功
messagestring错误描述
dataobject业务数据

获取 Token

默认 token 有效期为 2 小时。token 过期后,可以重新获取新 token。

  • 请求方法:POST
  • 请求地址:/oauth/api/v1/token

请求参数

参数名类型说明
app_idstring开发者 app ID
app_secretstring开发者 app secret
grant_typestring固定值:client_credentials

返回参数

参数名类型说明
access_tokenstringJWT token
expires_inlong过期时间(秒)
refresh_tokenstring刷新token(可选)
refresh_token_expires_inlong刷新token过期时间(秒)

卡操作

创建卡片

说明:

  • 批量开卡需循环调用本接口,建议调用频率不超过每秒2次。
  • 开卡成功后,系统将发送异步通知。如未收到通知,可通过查询接口补偿获取结果。

请求方式:POST
请求地址/card/api/v1/op/create

请求参数

参数名类型是否必填说明
partner_order_idstring商户请求ID
card_bin_idstring卡段ID
amountdecimal开卡金额(创建子卡时传0)
account_currencystring钱包币种,固定传USD
card_holder_idstring持卡人ID(卡段需要持卡人时才需传)
card_modelstring卡模式。CARD:充值卡,SHARE:共享卡
primary_card_idstring主卡ID(创建子卡时需要传)
total_auth_limitstring子卡限额(创建子卡时指定,0代表不限额)
auth_limit_flagstring是否限额。Y:是,N:否(创建子卡时需传)

返回参数

参数名类型说明
partner_order_idstring商户请求ID
card_idstring卡ID

卡详情查询

请求方式:GET
请求地址/card/api/v1/op/queryCardDetail

请求参数

以下参数二选一传:

参数名类型说明
partner_order_idstring商户请求ID
card_idstring卡ID

返回参数

参数名类型说明
partner_order_idstring商户请求ID
card_idstring卡ID
card_numberstring卡号
cvvstringcvv
expirystring过期时间
currencystring卡币种
active_datestring激活日
inactive_datestring失效日
card_brandstring卡品牌
card_modelstring卡类型(SHARE/CARD)
card_levelstringSubCard/主卡
card_statusstring卡状态(Pending/Active/Failure/Closed)
available_balancedecimal可用余额
total_auth_limitdecimal子卡限额
used_auth_limitdecimal子卡已用额度
primary_card_idstring主卡ID

卡充值

对子卡无需充值,仅需充值主卡。

请求方式:POST
请求地址/card/api/v1/op/recharge

请求参数

参数名类型说明
partner_order_idstring商户请求ID
card_idstring卡ID
amountdecimal充值金额
account_currencystring钱包币种

返回参数

参数名类型说明
partner_order_idstring商户请求ID
card_idstring卡ID
transaction_idstring交易ID

卡提现

仅主卡可提现。

请求方式:POST
请求地址/card/api/v1/op/withdraw

请求参数

参数名类型说明
partner_order_idstring商户请求ID
card_idstring卡ID
amountdecimal提现金额
account_currencystring钱包币种

返回参数

参数名类型说明
partner_order_idstring商户请求ID
card_idstring卡ID
transaction_idstring交易ID

卡注销

请求方式:POST
请求地址/card/api/v1/op/cancel

请求参数

参数名类型说明
partner_order_idstring商户请求ID
card_idstring卡ID

返回参数

参数名类型说明
partner_order_idstring商户请求ID
card_idstring卡ID
transaction_idstring交易ID

调整限额

请求方式:POST
请求地址/card/api/v1/op/updateTotalAuthLimit

请求参数

参数名类型说明
partner_order_idstring商户请求ID
card_idstring卡ID
total_auth_limitdecimal子卡限额,不限额传0
auth_limit_flagstring是否限额 是:Y,否:N

卡操作记录查询

请求方式:GET
请求地址/card/api/v1/trade/queryCardOpDetail

请求参数

参数名类型说明
partner_order_idstring商户持卡人ID
card_idstring卡ID
transaction_typestring交易类型,详见下表
begin_timeLocalDateTime查询开始时间,例:2025-10-01 10:00:00
end_timeLocalDateTime查询结束时间,例:2025-10-20 10:00:00
page_sizeint每页大小
page_noint当前页

返回参数

参数名类型说明
page_sizeint当前页大小
page_noint当前页数
totalint总数
pagesint总页数
listList<CardOpDetail>记录列表

CardOpDetail 字段

参数名类型说明
partner_order_idstring商户持卡人ID
card_idstring卡ID
primary_card_idstring主卡ID
transaction_idstring交易流水号
transaction_timelong交易时间
create_timelong创建时间
billing_currencystring账单币种
billing_amountdecimal账单金额
transaction_typestring卡操作类型,详见下表
transaction_statusstring交易状态(Success/Failure/Processing)
fail_reasonstring失败原因
reference_idstring关联ID
fund_account_typestring资金账户类型(Wallet/卡)
fund_directint资金方向(1增加,-1减少)
merchant_feeMerchantFee费用信息

MerchantFee 字段

参数名类型说明
total_fee_amountdecimal总费用
fee_currencystring费用币种
fee_detailList<MerchantFeeDetail>费用明细

MerchantFeeDetail 字段

参数名类型说明
fee_amountdecimal费用
fee_typestring费用类型

卡操作类型

类型说明
Create开卡
Recharge卡充值
Withdraw卡提现
Cancel注销卡

交易查询

交易列表

请求方式:GET
请求地址/card/api/v1/trade/queryCardTransactions

请求参数

参数名类型说明
partner_order_idstring商户持卡人ID
card_idstring卡ID
transaction_typestring交易类型,详见下方“交易类型“
begin_timeLocalDateTime查询开始时间,如:2025-10-01 10:00:00
end_timeLocalDateTime查询结束时间,如:2025-10-20 10:00:00
page_sizeint每页大小
page_noint当前页

返回参数

参数名类型说明
page_sizeint当前页大小
page_noint当前页
totalint总数
pagesint总页数
listList<CardTransactionDetail>记录列表

CardTransactionDetail 字段说明

参数名类型说明
partner_order_idstring商户持卡人ID
card_idstring卡ID
primary_card_idstring主卡ID
transaction_idstring交易流水号
transaction_timelong交易时间
create_timelong创建时间
transaction_currencystring交易币种
transaction_amountdecimal交易金额
billing_currencystring账单币种
billing_amountdecimal账单金额
auth_codestring授权码
transaction_typestring交易类型,详见下方“交易类型“
transaction_statusstring交易状态 Success:成功 Failure:失败
result_codestring交易结果code
fail_reasonstring失败原因
merchant_namestring商户名称
merchant_countrystring商户国家
merchant_citystring商户城市
reference_idstring关联ID
mccstringmcc
cross_board_typeint是否跨境 0:否 1:是
fund_account_typestring资金账户类型 Wallet:钱包 Card:卡
fund_directint资金方向 1:增加 -1:减少
merchant_feeMerchantFee费用信息

MerchantFee 字段说明

参数名类型说明
total_fee_amountdecimal总费用
fee_currencystring费用币种
fee_detailList<MerchantFeeDetail>费用明细

MerchantFeeDetail 字段说明

参数名类型说明
fee_amountdecimal费用
fee_typestring费用类型

交易类型

类型说明
AuthorizationQuery授权查询
Authorization授权交易
Reversal授权冲正
Clearing授权清算
Refund清算后退款
CrossBorder跨境费

Webhook 异步通知

重要说明

  • 异步通知时,商户系统需正确响应参数,返回字符串 “ok”,否则视为未成功。
  • 交易完成后,系统会根据商户订阅的 webhook 地址,通过 POST,将结果以 application/json 格式发送给商户。
  • 请务必验证签名,防止数据泄漏和伪造通知。

注意事项

  1. 幂等性
    同一通知可能多次发送,商户系统需能正确处理重复通知。建议做法:收到通知后,先检查业务数据状态,仅对未处理的通知进行处理,已处理直接返回 200 和 "OK"。状态检查和数据操作前须加锁,避免并发导致状态混乱。

  2. 时效性
    极少数情况下通知可能因网络等原因未送达,请务必通过主动查询接口补偿。建议根据实际业务,合理设置补偿查单的时机,如支付1小时后未收到通知可主动查单。

  3. 防抵赖
    商户侧须对通知内容做签名校验(签名公钥见商户后台),并校验通知内容与本地数据一致,防止伪造通知导致资金风险。


通知类型

类型说明
CardApply卡状态变更(开卡、注销)
CardOperate卡充值、卡充退
Authorization卡交易
Inbound入账

CardApply

开卡结果

字段说明
partner_order_id商户请求 ID
status交易结果 Success/Failure
card_id卡 ID
card_status卡状态 Active/Failure
fail_reason失败原因
card_number卡号
available_balance可用余额
cvvCVV
expiry过期时间
card_level卡等级
merchant_fee手续费,MerchantFee
primary_card_id主卡ID(仅子卡有)
total_auth_limit子卡限额

注销结果

字段说明
partner_order_id商户请求 ID
transaction_id交易 ID
status交易结果 Success/Failure
card_id卡 ID
card_status卡状态 Closed 已注销
fail_reason失败原因
merchant_fee手续费,MerchantFee

CardOperate

字段说明
partner_order_id商户请求 ID
transaction_id交易 ID
status交易结果 Success/Failure
card_id卡 ID
operate_type交易类型:card_in 卡充值,card_out 卡充退
amount发生金额
currency发生币种
merchant_fee手续费 MerchantFee

Authorization

参见交易查询


MerchantFee

字段说明
fee_currency当前手续费币种
total_fee_amount总手续费金额
fee_detail手续费明细 List<FeeDetail>

FeeDetail

字段说明
fee_amount手续费金额
fee_type手续费类型

Inbound

| 字段说明 | 参见 InboundDetail |


签名验证参考

Go 示例

import (
    "crypto/rsa"
    "crypto/x509"
    "crypto"
    "encoding/pem"
    "encoding/base64"
    "net/http"
    "io/ioutil"
)

// 验证签名
func verifySign(content, signBase64, pubKeyPEM string) bool {
    block, _ := pem.Decode([]byte(pubKeyPEM))
    if block == nil {
        return false
    }
    pub, err := x509.ParsePKIXPublicKey(block.Bytes)
    if err != nil {
        return false
    }
    rsaPub := pub.(*rsa.PublicKey)
    sig, _ := base64.StdEncoding.DecodeString(signBase64)
    h := crypto.SHA256.New()
    h.Write([]byte(content))
    return rsa.VerifyPKCS1v15(rsaPub, crypto.SHA256, h.Sum(nil), sig) == nil
}

// Webhook Handler 示例
func WebhookHandler(w http.ResponseWriter, r *http.Request) {
    appId := "1569641270953589506"
    publicKey := `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsIHIQAp4TToRZuF+/g/fr4xxJg/hGxyZGwp66l1LSS7sfsx/EnaCY0mYzEBZZ6qqEShdrtlowJa2SudemqeWbbH75vkcwvwL7cMX58pXNPny4vACaKSnIdz1wwue/tUWmubQdhb7wwJDDKB+TQoyhrZbNsW9tsASCu8WjdmxqH0i0It/FjrMw7R4pv0jrZfMmoZs0mhxnrF5HnPzRW+kFgKwDGIRzhsy32iMTk7lbOkSrBK923TuWy/mb5h3Vzw1c/PVtl9udFG2SbQsl848jXQx5TUhyh0XIVLVMRu/EAiq54bIsh/YNWx75nfCkH+h7T6d0L8qxIdQB/qdt/RZQwIDAQAB
-----END PUBLIC KEY-----`

    sign := r.Header.Get("sign")
    timestamp := r.Header.Get("x-timestamp")
    body, _ := ioutil.ReadAll(r.Body)
    content := appId + timestamp + string(body)

    if !verifySign(content, sign, publicKey) {
        // 签名有误,记录日志
        w.WriteHeader(http.StatusBadRequest)
        w.Write([]byte("sign error"))
        return
    }
    w.Write([]byte("ok"))
}

Rust 示例

use base64::{Engine as _, engine::general_purpose};
use ring::signature::{UnparsedPublicKey, RSA_PKCS1_2048_8192_SHA256};

fn verify_sign(content: &str, sign_b64: &str, public_key_der: &[u8]) -> bool {
    let signature = match general_purpose::STANDARD.decode(sign_b64) {
        Ok(sig) => sig,
        Err(_) => return false,
    };
    let pub_key = UnparsedPublicKey::new(&RSA_PKCS1_2048_8192_SHA256, public_key_der);
    pub_key.verify(content.as_bytes(), &signature).is_ok()
}

fn main() {
    let app_id = "1569641270953589506";
    let timestamp = "1716350279000";
    let body = r#"{"partner_order_id":"xxxx","status":"Success"}"#;
    let content = format!("{}{}{}", app_id, timestamp, body);

    let public_key_pem = r#"-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsIHIQAp4TToRZuF+/g/fr4xxJg/hGxyZGwp66l1LSS7sfsx/EnaCY0mYzEBZZ6qqEShdrtlowJa2SudemqeWbbH75vkcwvwL7cMX58pXNPny4vACaKSnIdz1wwue/tUWmubQdhb7wwJDDKB+TQoyhrZbNsW9tsASCu8WjdmxqH0i0It/FjrMw7R4pv0jrZfMmoZs0mhxnrF5HnPzRW+kFgKwDGIRzhsy32iMTk7lbOkSrBK923TuWy/mb5h3Vzw1c/PVtl9udFG2SbQsl848jXQx5TUhyh0XIVLVMRu/EAiq54bIsh/YNWx75nfCkH+h7T6d0L8qxIdQB/qdt/RZQwIDAQAB
-----END PUBLIC KEY-----"#;

    let public_key_der = pem::parse(public_key_pem)
        .expect("parse PEM")
        .contents();

    let sign_base64 = "xxxx";

    if verify_sign(&content, sign_base64, &public_key_der) {
        println!("签名验证通过");
    } else {
        println!("签名验证失败");
    }
}

Transfer

v4

获取所有报价

简要描述
获取所有可用的报价信息


请求URL
${baseUrl}/tf/v4/quotes/all


请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
currencystring资金来源币种,如 USD。可通过余额查询获知持有的货币类型。

返回示例

{
    "rates": [
        {
            "input": "USD",
            "output": "EUR",
            "rate": 0.840138
        },
        {
            "input": "USD",
            "output": "AUD",
            "rate": 1.521811
        },
        {
            "input": "USD",
            "output": "BDT",
            "rate": 122.5773
        }
    ],
    "lastUpdateTime": 1753683680263
}

返回参数说明

参数名称示例说明类型
data响应数据json
msg操作成功响应消息string
status200响应码int
successtrue是否成功bool

data 信息说明

参数名称示例说明
inputUSD输入币种
outputCNY输出币种
rate6.402552报价率

查询支持的业务模式

简要描述

查询当前支持的业务模式。

请求URL

${baseUrl}/tf/v4/business

请求方式

  • Method: POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
countrystring目标国家,例如 CHN,参数来源
typestring下发通道,例如 bank_account,参数来源

返回示例

{
    "data": [
        {
            "business": "C2C"
        },
        {
            "business": "B2B"
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datajson响应数据data信息
msg操作成功响应消息
status200响应码
successtrue是否成功,true表示成功

data 信息

参数名称示例参数说明
businessC2C支持的业务类型

获取报价

简要描述

获取汇率报价信息。

更新记录

更新日期更新内容
2025-09-16添加返回 fixedFee、preRatedFee 字段
2025-10-15添加返回 fullPay、fullPayFee 字段

请求URL

${baseUrl}/tf/v4/quotes

请求方式

  • Method: POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
sourceCurrencystring资金来源币种,可从 balance 接口获取支持的币种
countrystring目标国家,例如 CHN
businessstring业务类型,例如 C2C
typestring下发通道,例如 ewallet
targetCurrencystring下发币种,例如 CNY

返回示例

{
    "data": {
        "input": "USD",
        "output": "CNY",
        "rate": 6.402552,
        "fixedFee": 5,
        "preRatedFee": 0.012,
        "fullPay": true,
        "fullPayFee": 20
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datajson响应数据,data 信息
msg操作成功响应消息
status200响应码
successtrue是否成功:成功 true,失败 false

data 信息

参数名称示例参数说明
inputUSD输入币种
outputCNY输出币种
rate6.402552汇率报价
fixedFee12固定费用,币种与 input 相同
preRatedFee0.012按比例收取的费用,例如发送金额为 100,该费用为 100*0.012
fullPaytrue是否支持 fullPay
fullPayFee20fullPay 的费用

获取可发送国家

简要描述
获取可发送的国家列表,用于创建订单时的 sourceCountry 字段。

请求URL
POST ${baseUrl}/tf/v4/sourceCountry

请求方式

  • Method: POST
  • Content-Type: application/json

返回示例

{
    "data": [
        {
            "code": "ABW",
            "name": "Aruba",
            "shortCode": "AW"
        },
        {
            "code": "AFG",
            "name": "Afghanistan",
            "shortCode": "AF"
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
data-响应数据数组
msg操作成功响应消息字符串
status200响应码整数
successtrue是否成功(true/false)布尔值

data 对象字段说明

参数名称示例参数说明
codeCHN国家编码(用于下单)
nameAfghanistan国家名称
shortCodeAF国家简写

创建订单

简要描述

发起汇款。字段较多,分为几部分组成。可结合业务理解参考中台订单创建流程。不同下发模式所需信息不一致,主要可分为 wire 和其他(bank_account、cash_pickup、ewallet)。其他类型均为 C2C 模式,仅 wire 支持 B2B、B2C、C2B,wire 的校验较少。


请求URL

${baseUrl}/tf/v4/order/create

请求方式

  • Method:POST
  • Content-Type:application/json

参数说明

参数名必选类型说明条件
merOrderNostring商家订单号,唯一
notifyUrlstring订单通知地址,如提供则订单状态变更时会主动通知
extstring预留字段,处理特殊业务

金额相关

参数名必选类型说明条件
sourceCurrencystring使用的汇款备用金,例如USD、EUR。可先查询余额接口获取当前配置资金货币和金额。country=CHN && type=bank_account && currency=CNY 只支持USD
sendAmountstring发送金额,与 targetAmount 只能二选一,最多两位小数关联 sourceCurrency
targetAmountstring到账金额,与 sendAmount 只能二选一,最多两位小数。部分地区要求整数,有小数将自动去除,建议只用整数关联 currency
chargeCodestringwire的费用承担方式,默认 SHA;如 FP(支持时可在获取报价接口查看),费用由订单承担,客户收到全部 targetAmount/sendAmount 金额。type=wire

下发路径

参数名必选类型说明条件
countrystring目的国家,如 HKG
businessstring业务类型,如 C2C,参考数据
typestring下发通道,如 wire、ewallet、bank_account
currencystring下发币种,如 HKD,参考数据
partnerstring下发通道支持的合作伙伴,如 partner_ewallet,来源接口

收款账号相关

参数名必选类型说明条件
accountNumberstring银行账号type=bank_account 或 type=wire,accountNumber/iban 只能选一
ibanstringIBANtype=bank_account 或 type=wire,accountNumber/iban 只能选一;type=bank_account && currency=EUR
targetBankCodestring银行编码,如 003,来源接口type=bank_account
targetBankBranchstring银行分行,如 003-01,如有 bankCode 需查询type=bank_account
swiftCodestringSWIFT codetype=wire
corrSwiftCodestring代理行/中转行SWIFT codetype=wire,可选填
ewalletIdstring电子钱包账户type=ewallet
routingCodestring银行ABA路由代码,9位数字type=bank_account 且 country=AUS
sortCodestring排序代码(英国6位),格式3对数字type=bank_account && country=GBR && currency=GBP

收款方信息

参数名必选类型说明条件
targetAddressLinestring详细地址,备注勿重复填写国家和城市
targetAddressCitystring城市
targetAddressCityCodestring城市编码,如0926,来源接口country=IDN && business=C2C && type=ewallet
targetAddressStatestring州/省编码,如09,如为IDN需提交name,来源接口
targetAddressZipstring邮编C CAN-bank_account-CAD
targetAddressCountrystring国家或地区,如 HKG
targetMobileNumberstring手机号,如+6281329623212C,cash_pickup,type=ban_account_new && country=CHN
targetCompanyNamestring企业名称B 必填
targetNameFirststring名字C 必填
targetNameLaststring姓氏C 必填
targetNativeNameFirststring国籍本地名C,type=ban_account_new && country=CHN
targetNativeNameLaststring国籍本地姓C,type=ban_account_new && country=CHN
targetNationalitystring国籍,如 HKGC 必填
targetDateOfBirthstring出生年月,格式1999-10-01C,KOR-bank_account-KRW
targetEmailstring邮箱C,KOR-bank_account-KRW & targetMobileNumber非+82号码
targetIdNumberstring证件号C
targetIdTypestring证件类型,national/护照C,type=cash_pickup && country=VNM,targetIdNumber不为空需完善
targetIdExpirationstring证件有效期,格式1999-10-01,长期用2099-12-31C

发送方信息

参数名必选类型说明条件
sourceCountrystring发送国家或地区,需为跨境,必须与country不同来源接口
sourceReferenceNumberstring参考编号,C时必填,用于标识当前用户,便于找回
sourceAddressLinestring详细地址
sourceAddressCitystring城市
sourceAddressStatestring州/省C,type=ban_account_new && country=CHN
sourceAddressCountrystring国家
sourceAddressZipstring邮编
sourceNameFirststring名字C 必填
sourceNameLaststring姓氏C 必填
sourceGenderstring性别(M/F)C,type!=wire && country=NPL
sourceNationalitystring国籍,如HKGC 必填
sourceDateOfBirthstring出生年月,格式1999-10-01C 必填
sourceIdNumberstring证件号C,country=IDN && business=C2C && type=ewallet;country=CHN && business=C2C && type=bank_account
sourceIdTypestring证件类型,national/护照,sourceIdNumber不为空需完善C
sourceIdExpirationstring证件有效期,格式1999-10-01,长期用2099-12-31C
sourceIdIssueCountrystring证件签发国家,sourceIdNumber有值需完善C,sourceIdNumber有值
sourceMobileNumberstring手机号C,详见下方规则
sourceCompanyNamestring企业名称B 必填
sourceCompanyTradingNamestring企业经营名称B 必填
sourceCompanyRegistrationNumberstring企业注册号B
sourceCompanyRegistrationCountrystring企业注册国家或地区B

订单附属信息

参数名必选类型说明
remittancePurposestring交易目的,参考数据
sourceOfFundsstring资金来源,参考数据
relationshipstring交易关系,参考数据
occupationstring发送者职业,参考数据
unformattedNotestring转账附言,最大长度64

字段规则说明

  • sourceMobileNumber,targetMobileNumber
    • business=C2C && type=bank_account && country in (CMR, COG, GHA, KEN, UGA, BGD, CAD, IDN, KRW, NPL, USA, VNM)
    • business=C2C && type=ewallet && country in (BEN, CMR, COG, GHA, MDG, MWI, MOZ, NER, RWA, SEN, TZA, TGO, UGA, ZMB, BGD, IDN, NPL)
    • business=C2C && type=cash_pickup && country in (BGD, KHM, IDN, KRW, NPL, PHP, VNM)
  • sourceIdNumber
    • country=IDN && business=C2C && type=ewallet
    • country=CHN && business=C2C && type=bank_account
    • type=wire && country=HKG && currency=HKD
    • type=wire && country=AUS && currency=AUD
    • type=wire && country=SGP && currency=SGD
  • sourceAddressCountry、targetAddressCountry
    • type=wire && country=HKG && currency=HKD
    • type=wire && country=AUS && currency=AUD
    • type=wire && country=SGP && currency=SGD

返回示例

{
    "data": {
        "account": "543435",
        "completeTime": "",
        "createTime": "2024-08-31 23:08:58",
        "ext": "",
        "failReason": "",
        "merOrderNo": "240831230857132800",
        "orderNo": "240831230858245344",
        "sendAmount": 0,
        "chargeCode": "FP",
        "fullPayFee": "20",
        "fixedFee": 5,
        "preRatedFee": 0.012,
        "sourceAmount": 1586.15,
        "sourceCurrency": "USD",
        "status": 0,
        "targetAmount": 10000,
        "targetCurrency": "CNY"
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datajsonArray响应数据产品类型列表
msg操作成功响应消息
status200响应码
successtrue是否成功(true-成功,false-失败)

data-下单订单信息说明

参数名称示例参数说明
merOrderNo436343534234商家订单号
orderNo35432346345345平台订单号
account6244810070000117目标账户
sourceCurrencyUSD结算币种
sourceAmount20.1234结算金额,最多保留四位小数
sendAmount20.发送金额,选用 sendAmount 时有值,否则为0
targetCurrencyCNY目标币种
targetAmount10000目标金额
merQuotes7.2634提单的报价
chargeCodeSHAwire的费用承担方式
fullPayFee20FP承担费用时,sourceAmount包含此费用
fixedFee12固定费用,与sourceCurrency同币种
preRatedFee0.012兑换手续费,例如发送金额100,则此项为100*0.012
status1订单状态(1-处理中 2-成功 3-失败)
failReason信息错误失败信息,如失败时会返回
createTime2023-04-02 17:07:09订单创建时间
completeTime2023-04-02 17:07:09订单完成时间
ext订单额外信息,预留

业务状态码说明

状态码描述
200成功
500操作失败(不可直接失败,需查询订单后确定)
5000操作异常(需查询订单确认)
5101请勿重复下单
5102备用金余额不足

订单查询

简要描述

查询提交的订单。
UETR需在订单结束5-30分钟后获取,如有需要可主动查询。

更新记录

更新日期更新内容
2025-09-16添加返回 fixedFee、preRatedFee 字段
2025-10-08添加返回 chargeCode、fullPayFee 字段

请求URL

${baseUrl}/tf/v4/order/query

请求方式

  • Method: POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
orderNostring平台订单号,不为空则只用此字段查询
merOrderNostring渠道订单号

返回示例

{
    "data": {
        "account": "543435",
        "completeTime": "2024-08-31 15:17:56",
        "createTime": "2024-08-31 15:03:25",
        "ext": "",
        "failReason": "",
        "merOrderNo": "240831150324112064",
        "orderNo": "240831150325224032",
        "sourceAmount": 1586.150,
        "sendAmount": 0,
        "sourceCurrency": "USD",
        "status": 1,
        "targetAmount": 10000,
        "targetCurrency": "CNY",
        "fixedFee": 5,
        "preRatedFee": 0.012,
        "chargeCode": "FP",
        "fullPayFee": 20
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datajson响应数据订单信息
msg操作成功响应消息
status200响应码
successtrue是否成功:成功 true,失败 false

data - 订单信息

参数名称示例参数说明
merOrderNo436343534234商家订单号
orderNo35432346345345平台订单号
account6244810070000117目标账户
sourceCurrencyUSD结算币种
sourceAmount20.00结算金额,最大两位小数,如果大于两位小数则取两位(如计算金额为2.123,最终为2.13)
sendAmount20.00发送金额
fixedFee12固定费用,币种与输入一致
preRatedFee0.012兑换手续费,例如发送金额为100,则该费用为100*0.012
merQuotes7.3423结算汇率
targetCurrencyCNY目标币种
targetAmount10000目标金额
status1订单状态:1-处理中 2-成功 3-失败
failReason信息错误失败信息,订单失败时会返回失败原因
createTime2023-04-02 17:07:09订单创建时间
completeTime2023-04-02 17:07:09订单完成时间
ext{“pickupCode”:“63742374673463847”}(字符串)订单额外信息,备注:可能存在的额外信息见下方

ext - 订单额外信息

类型示例参数说明
cash_pickup{“pickupCode”:“63742374673463847”}取现凭证,现场出示
wire{“uetr”:“63742374673463847”}此 UETR 可提供给收款银行,用于协助交易追踪

订单通知

接口描述

当订单完成且提交订单时有通知地址,平台将会通知此接口。

更新记录

更新日期更新内容
2025-09-16添加返回 fixed, proRatedFee 字段

接口地址

由订单接口提供请求地址

请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名称必填示例参数说明
orderNo1448538596381429760平台订单号
merOrderNo1448535323381429760接入方订单号
status3订单状态:1-处理中 2-成功 3-失败
completeTime20220331121212订单完成时间
createTime20220331121212订单创建时间
account235234234目标账户
targetAmount1000目标金额
targetCurrencyCNY目标币种
sourceCurrencyUSD结算币种
sourceAmount1000结算金额
fixedFee12固定费用,币种与 sourceCurrency 相同
proRatedFee0.012每笔兑换手续费,例如发送金额为 100,则该费用为 100*0.012
failReason信息错误失败信息,仅失败时存在明确失败原因时返回
appKeyedy2378eh23gf29w2appKey
signa87694dbd3be64a356a42be95e123360接口签名
ext{“uetr”:“63742374673463847”}预留字段,依据订单类型返回

ext 字段说明

对应订单类型示例参数说明
cash_pickup{“pickupCode”:“63742374673463847”}取现凭证,现场出示
wire{“uetr”:“63742374673463847”}UETR,可提供给收款银行以协助交易追踪

响应示例

body 内容为字符串 ok:

ok

注意事项

  • 如未按要求返回 "ok",平台将视为推送失败。
  • 失败后将按指数退避策略重试:初始间隔为 1 分钟,每次推送失败后,重试时间间隔加倍,最多重试 5 次。
  • 如果 5 次仍未收到回应,则将在 10 分钟后进行最后一次推送。

当前国家支持的下发银行

简要描述

查看当前国家支持的下发银行列表。

请求URL

${baseUrl}/tf/v4/banks

请求方式

  • Method: POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
countrystring目标国家,例如 CHN

返回示例

{
    "data": [
        {
            "code": "7083",
            "name": "Bank Of China Limited"
        },
        {
            "code": "7126",
            "name": "The Bank Of Tokyo-Mitsubishi UFJ, Ltd"
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datajson响应数据 data信息
msg操作成功响应消息
status200响应码
successtrue是否成功,true表示成功

data 信息

参数名称示例参数说明
code003银行编码
nameThe Bank Of Tokyo-Mitsubishi UFJ, Ltd银行名称

当前国家支持的银行分行

简要描述

查看当前国家或地区支持的银行下属分行列表。

请求URL

${baseUrl}/tf/v4/branch

请求方式

  • Method: POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
countrystring目标国家,例如 CHN
bankCodestring银行编码,例如 003

返回示例

{
    "data": [
        {
            "code": "127 000",
            "name": "127 - DHAKA-SOUTH - TRUNCATION POINT"
        },
        {
            "code": "127 151",
            "name": "127 - DHAKA-SOUTH - DHAKA"
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datajson响应数据 data 信息
msg操作成功响应消息
status200响应码
successtrue是否成功:成功 true,失败 false

data 信息

参数名称示例参数说明
code003分行编码,使用此值
nameThe Bank Of Tokyo-Mitsubishi UFJ, Ltd 分行银行名称分行银行名称

下发通道支持的国家

简要描述
查询下发通道支持的国家列表,用于获取可用国家信息。


请求URL
${baseUrl}/tf/v4/type/countries


请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明示例
typestring下发通道,例如 wire,详见下方字典wire

返回示例

{
    "data": [
        {
            "code": "ABW",
            "name": "Aruba",
            "shortCode": "AW"
        },
        {
            "code": "AFG",
            "name": "Afghanistan",
            "shortCode": "AF"
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
data-响应数据,详见 data 信息数组
msg操作成功响应消息字符串
status200响应码整数
successtrue是否成功(true/false)布尔值

data 对象字段说明

参数名称示例参数说明
codeCHN国家编码(用于下单)
nameAfghanistan国家名称
shortCodeAF国家简写

下发通道类型字典说明

type参数说明
wire全球转账
ewallet电子钱包
bank_account本地银行
cash_pickup现金提款

支持的货币和通道伙伴

简要描述

查询当前国家和通道支持的货币以及相关通道合作伙伴。

请求URL

${baseUrl}/tf/v4/currency/partner

请求方式

  • Method: POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
typestring通道类型,例如 ewallet
countrystring目标国家,例如 IDN

返回示例

{
    "data": [
        {
            "country": "IDN",
            "currency": "IDR",
            "partner": "partner_artajasa",
            "type": "ewallet"
        },
        {
            "country": "IDN",
            "currency": "IDR",
            "partner": "partner_dana",
            "type": "ewallet"
        },
        {
            "country": "IDN",
            "currency": "IDR",
            "partner": "partner_gopay",
            "type": "ewallet"
        },
        {
            "country": "IDN",
            "currency": "IDR",
            "partner": "partner_linkaja",
            "type": "ewallet"
        },
        {
            "country": "IDN",
            "currency": "IDR",
            "partner": "partner_ovo",
            "type": "ewallet"
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datajson响应数据 data 信息
msg操作成功响应消息
status200响应码
successtrue是否成功,true 表示成功

data 信息

参数名称示例参数说明
countryIDN目的国家
currencyIDR可下发币种
typeewallet可下发通道
partnerpartner_ovo通道支持的合作伙伴

获取可达目标国家

简要描述

获取可达目标国家列表。

请求URL

${baseUrl}/tf/v4/countries

请求方式

  • Method: POST
  • Content-Type: application/json

返回示例

{
    "data": [
        {
            "code": "ABW",
            "name": "Aruba",
            "shortCode": "AW"
        },
        {
            "code": "AFG",
            "name": "Afghanistan",
            "shortCode": "AF"
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datajson响应数据data信息
msg操作成功响应消息
status200响应码
successtrue是否成功,true表示成功

data 信息

参数名称示例参数说明
codeCHN国家,使用此值
nameAfghanistan国家名称
shortCodeAF国家简写

查询支持下发通道

简要描述
查看当前国家支持的下发通道。


请求URL
${baseUrl}/tf/v4/target/types


请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明示例
countrystring目标国家,例如 CHNCHN

返回示例

{
    "data": [
        {
            "country": "HKG",
            "currency": "CNH",
            "type": "bank_account",
            "partner": ""
        },
        {
            "country": "HKG",
            "currency": "USD",
            "type": "wire",
            "partner": "partner_ewallet"
        },
        {
            "country": "HKG",
            "currency": "HKD",
            "type": "ewallet",
            "partner": "partner_ewallet"
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datajson响应数据,data 信息object
msg操作成功响应消息string
status200响应码int
successtrue是否成功bool

data 信息

参数名称示例参数说明
countryHKG目的国家
currencyUSD可下发币种
typewire可下发通道
partnerpartner_ewallet通道支持的合作伙伴

获取交易关系代码

简要描述

获取可用的交易关系代码。

请求URL

${baseUrl}/tf/v4/relationship/code

请求方式

  • Method:POST
  • Content-Type:application/json

返回示例

{
  "data": [
    {
      "code": "01",
      "name": "父母"
    },
    {
      "code": "02",
      "name": "兄弟姐妹"
    }
  ],
  "msg": "操作成功",
  "status": 200,
  "success": true
}

返回参数说明

参数名称类型示例说明
dataarray见下表响应数据
msgstring操作成功响应消息
statusint200响应码
successbooltrue是否成功:true/false

data 信息

参数名称类型示例说明
codestring01关系代码,使用此值
namestring兄弟姐妹交易关系描述

获取交易目的代码

简要描述

获取可使用的交易目的代码

请求URL

${baseUrl}/tf/v4/remittancePurpose/code

请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明示例
countrystring目标国家CHN
businessstring业务类型C2C
typestring下发通道ewallet
currencystring下发币种CNY

返回示例

{
    "data": [
        {
            "code": "001-01",
            "name": "Family/living expense"
        },
        {
            "code": "...",
            "name": "..."
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明
datajson响应数据
msg操作成功响应消息
status200响应码
successtrue是否成功:true 成功, false 失败

data 信息

参数名称示例说明
code001-01code,使用此值
nameFamily/living expense交易目的描述

获取资金来源代码

简要描述
获取可使用的资金来源代码


请求URL
${baseUrl}/tf/v4/sourceOfFunds/code


请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明示例
countrystring目标国家CHN
businessstring业务类型C2C

返回示例

{
    "data": [
        {
            "code": "01",
            "name": "Bank Deposit"
        },
        {
            "code": "03",
            "name": "Redemption of Investment products"
        },
        {
            "code": "05",
            "name": "Loan"
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datajson响应数据object
msg操作成功响应消息string
status200响应码int
successtrue是否成功bool

data 信息说明

参数名称示例参数说明类型
code01资金来源代码string
nameLoan资金来源描述string

发送人职业信息

简要描述

获取发送人职业信息,部分场景需要。

请求URL

${baseUrl}/tf/v4/occupation/code

请求方式

  • Method: POST
  • Content-Type: application/json

返回示例

{
    "data": [
        {
            "code": "001",
            "name": "Agriculture"
        },
        {
            "code": "002",
            "name": "Doctor"
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datajson响应数据 data 信息
msg操作成功响应消息
status200响应码
successtrue是否成功,true 表示成功

data 信息

参数名称示例参数说明
code01code,使用此值
nameLoan职业描述

CHN-bank_account_ewallet

简要描述
针对CHN的账户校验


请求URL
${baseUrl}/tf/v4/verify/CHN


请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明示例
typestring下发类型,例如 bank_account、ewalletbank_account
legalNameFirststring用户名张三
legalNameLaststring用户姓
accountstring目标账户,银行卡号或者电子账户622202**********

返回示例

{
    "data": {
        "verifyResult": true,
        "failReason": ""
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
data-响应数据, 见下方 data 信息object
msg操作成功响应消息string
status200响应码int
successtrue是否成功bool

data 对象字段说明

参数名称示例说明类型
verifyResulttrue校验结果bool
failReason失败原因string

IDN-bank_account

简要描述
针对IDN-bank_account的账户校验


请求URL
${baseUrl}/tf/v4/verify/CHN


请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明示例
accountNumberstring银行账号
bankstring银行代码
legalNameFirststringfirstName
legalNameLaststringlastName
mobileNumberstring手机号,例如+6285141631997+6285141631997
idNumberstring证件号
addressLinestring地址
addressCitystring城市
addressStatestring

返回示例

{
    "data": {
        "failReason": "",
        "verifyResult": true
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datajson响应数据,data信息object
msg操作成功响应消息string
status200响应码int
successtrue是否成功:成功true,失败falsebool

data 信息

参数名称示例参数说明类型
verifyResulttrue校验结果bool
failReason失败原因string

Africa-ewallet

简要描述
针对Africa-ewallet的电子账户校验


请求URL
${baseUrl}/tf/v4/verify/Africa/ewallet


请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明示例
countrystring国家,例如HKGHKG
ewalletIdstring电子账户
legalNameFirststringfirstName
legalNameLaststringlastName

返回示例

{
    "data": {
        "failReason": "",
        "verifyResult": true
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datajson响应数据,data信息object
msg操作成功响应消息string
status200响应码int
successtrue是否成功(true/false)bool

data 对象字段说明

参数名称示例参数说明类型
verifyResulttrue校验结果bool
failReason失败原因string

KHM-bank_account

简要描述
针对KHM-bank_account的账户校验


请求URL
${baseUrl}/tf/v4/verify/KHM/bank_account


请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明示例
accountNumberstring银行账号
bankstring银行代码
legalNameFirststringfirstName
legalNameLaststringlastName

返回示例

{
    "data": {
        "failReason": "",
        "verifyResult": true
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
datajson响应数据,data信息object
msg操作成功响应消息string
status200响应码int
successtrue是否成功:true/falsebool

data 对象字段说明

参数名称示例参数说明类型
verifyResulttrue校验结果bool
failReason失败原因string

KOR-bank_account

简要描述
针对KOR-bank_account的账户校验


请求URL
${baseUrl}/tf/v4/verify/KOR/bank_account


请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明示例
accountNumberstring银行账号
bankstring银行代码
mobileNumberstring手机号,例如+6234234234+6234234234
emailstring邮箱

返回示例

{
    "data": {
        "failReason": "",
        "verifyResult": true
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明类型
data-响应数据,data信息object
msg操作成功响应消息string
status200响应码int
successtrue是否成功(true/false)bool

data 对象字段说明

参数名称示例说明类型
verifyResulttrue校验结果bool
failReason失败原因string

PHL-ewallet

简要描述

针对 PHL-ewallet 的电子账户校验

请求URL

${baseUrl}/tf/v4/verify/PHL/ewallet

请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
ewalletIdstring电子账户
legalNameFirststringfirstName
legalNameLaststringlastName

返回示例

{
    "data": {
        "failReason": "",
        "verifyResult": true
    },
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datajson响应数据data 信息
msg操作成功响应消息
status200响应码
successtrue是否成功成功 true,失败 false

data 信息

参数名称示例参数说明
verifyResulttrue校验结果
failReason失败原因

查询国家州信息

简要描述
查询指定国家州的信息,获取州列表后可进一步获取对应城市信息。当前主要用于印度尼西亚(IDN)。


请求URL
${baseUrl}/tf/v4/states


请求方式

  • 方法:POST
  • Content-Type: application/json

请求参数

参数名必选类型说明示例
countrystring目标国家CHN

返回示例

{
    "data": [
        {
            "code": "01",
            "name": "Jawa Barat"
        },
        {
            "code": "02",
            "name": "Banten"
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明备注
data-响应数据,详见 data 信息数组
msg操作成功响应消息字符串
status200响应码整数
successtrue是否成功(true/false)布尔值

data 对象字段说明

参数名称示例说明
code003州编码
nameBanten州名称

查询城市

简要描述

查询当前州的城市,目前用于 IDN。

请求URL

${baseUrl}/tf/v4/city/code

请求方式

  • Method: POST
  • Content-Type: application/json

请求参数

参数名必选类型说明
countrystring国家,例如 IDN
stateCodestring州编码,例如 01

返回示例

{
    "data": [
        {
            "code": "0100",
            "name": "Kepala Daerah Provinsi Jawa Barat"
        },
        {
            "code": "0102",
            "name": "Kab. Bekasi"
        }
    ],
    "msg": "操作成功",
    "status": 200,
    "success": true
}

返回参数说明

参数名称示例参数说明schema
datajson响应数据 data 信息
msg操作成功响应消息
status200响应码
successtrue是否成功,true 表示成功

data 信息

参数名称示例参数说明
code0102城市编码
nameKab. Bekasi城市名称

v3