NAV

系统描述

本文档规定了接入支付系统使用的报文接口,包括业务处理流程、接口的通信方式、交易报文格式说明等。本文档是面向具有一定开发能力,了解相关计算机语言的接口对接开发、维护和管理人员。

相关术语

平台

平台是指提供支付能力的我司系统。

商户

商户是指接入平台的使用者。

商户号

商户号是商户在交易平台的唯一标识,是用来判断商户在平台合法性的唯一条件。

商户私钥

商户私钥是商户在进行交易请求前,对数据做加密验签使用的密钥。是平台验证商户交易请求合法性的唯一判断条件,商户应当妥善保管加密密钥,如有泄露,应及时联系平台进行处理,避免不必要的损失。

后台异步回调

系统在接收到交易数据处理完成后,交易系统主动发起通知给商户的网站,同时携带处理完成的结果信息反馈给商户网站

币种

币种是平台用来区分货币类型的字段,具体描述见接口描述。

支付类型

支付类型是平台用来区分支付产品类别的字段,具体描述见接口描述

商户订单号

商户订单号是有商户系统每生成一笔订单会产生的一个唯一标识该笔订单的号码,商户必须保证订单号的唯一性

协议规范与规则

传输方式:采用HTTPS传输

提交方式:POST

内容类型:application/json

字符编码:UTF-8

下行签名校验:HMAC(sha256,json_str, secretKey) == header(PAY-SIGN) ;用于校验平台返回的数据签名

上行鉴权校验: HMAC(sha256,json_str, secretKey) == header(PAY-ACCESS-SIGN)

交易金额:默认印尼盾,入参(请求)两位小数

时间参数:均使用精确到毫秒的13位时间戳,如:1622016572190。时间戳具体是指从格林尼治时间1970年01月01日00时00分00秒起至现在的毫秒数。

回调与接口响应

  1. 接口正常交互时,接口会在header返回PAY-SIGN
  2. 通知回调地址时,会在header传递PAY-SIGN

签名对json对象原始字符串进行hmacSHA256签名,无排序

举例:

  1. 接口正常响应时,只对data的json对象签名
    • 返回示例:{"code":200,"msg":"SUCCESS","data":{"certImgUrl":"","createdAt":1730785433449,"mchTradeNo":"TEST_ORDER_1234567877884466","state":"SUCCESS","tradeNo":"O1853674577155104768"}}
    • 以上述返回为例,只对这一部分签名 {"certImgUrl":"","createdAt":1730785433449,"mchTradeNo":"TEST_ORDER_1234567877884466","state":"SUCCESS","tradeNo":"O1853674577155104768"}
  2. 回调通知时,对请求body中整个json字符串进行hmacSHA256签名,无排序
  3. 校验hmac(sha256, jsonString , secretKey) == header(PAY-SIGN)

接口鉴权

签名说明

使用参数签名调用接口示例:

curl --request POST \
     --url ${HOST}/api/v1/account/balance \
     --header 'PAY-ACCESS-MCHNO: YourMchNo' \
     --header 'PAY-ACCESS-TIMESTAMP: 1733712250562' \
     --header 'PAY-ACCESS-SIGN: 22582bd0cff14c41edbf1ab98506286d' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '{"currency":"IDR","reqTime":1733712250562}'

发起请求:

所有REST私有请求头都必须包含以下内容:

PAY-ACCESS-MCHNO 字符串类型的mchNo商户号。

PAY-ACCESS-TIMESTAMP 发起请求的毫秒时间戳(UTC时区),如: 1733712250562

PAY-ACCESS-SIGN 使用HMAC SHA256哈希函数获得哈希值,字母都小写。

所有请求都应该含有application/json类型内容,并且是有效的JSON。

签名:

PAY-ACCESS-SIGN 的请求头是对timestamp + body字符串(+表示字符串连接),以及SecretKey,使用HMAC SHA256方法加密而得到的(签名字符串的字母都小写)。

如:sign=CryptoJS.HmacSHA256(timestamp + '{"currency":"IDR","amount":"1.23","reqTime":1733712250562}', SecretKey)

注意:json字符串排不排序由商户自行定义,body传什么就拼接签名什么

其中,timestamp的值与PAY-ACCESS-TIMESTAMP请求头相同,为毫秒时间戳格式,如: 1733712250562

body是指请求主体的字符串(body不需要排序,body传什么就拼接签名什么),如果请求没有主体则body可省略。如: {"currency":"IDR","amount":"1.23","reqTime":1733712250562}

银行代码

支付银行代码

二维码:

名称 BankCode 代码
QRIS QRIS

电子钱包:

名称 BankCode 代码
DANA DANA
OVO OVO
LINKAJA LINKAJA
SHOPEEPAY SHOPEEPAY
GOPAY GOPAY

银行代码:

名称 BankCode 代码
Bank Negara Indonesia (BNI) BNI
Bank Rakyat Indonesia (BRI) BRI
Bank Mandiri MANDIRI
Bank CIMB Niaga CIMB
Bank Permata PERMATA

代付银行代码

电子钱包:

名称 BankCode 代码
DANA DANA
OVO OVO
LINKAJA LINKAJA
SHOPEEPAY SHOPEEPAY
GOPAY GOPAY

银行代码:

银行名称 BankCode 代码
Anglomas International Bank ANGLOMAS
Bangkok Bank BANGKOK
Bank Agris AGRIS
Bank Agroniaga AGRONIAGA
Bank Amar Indonesia (formerly Anglomas International Bank) AMAR
Bank Andara ANDARA
Bank ANZ Indonesia ANZ
Bank Arta Niaga Kencana ARTA_NIAGA_KENCANA
Bank Artha Graha International ARTHA
BANK JAGO (Ex Bank Artos Indonesia ) ARTOS
Bank Bisnis Internasional BISNIS_INTERNASIONAL
Bank BJB BJB
Bank BJB Syariah BJB_SYR
Bank BNI Syariah BNI_SYR
Bank BNP Paribas BNP_PARIBAS
Bank Bukopin BUKOPIN
Bank Bumi Arta BUMI_ARTA
Bank Capital Indonesia CAPITAL
Bank Central Asia (BCA) BCA
Bank Central Asia (BCA) Syariah BCA_SYR
Bank Chinatrust Indonesia CHINATRUST
Bank CIMB Niaga CIMB
Bank CIMB Niaga UUS CIMB_UUS
Bank Commonwealth COMMONWEALTH
Bank Danamon DANAMON
Bank Danamon UUS DANAMON_UUS
Bank DBS Indonesia DBS
Bank Dinar Indonesia DINAR_INDONESIA
Bank DKI DKI
Bank DKI UUS DKI_UUS
Bank Fama International FAMA
Bank Ganesha GANESHA
Bank Hana HANA
Bank Harda Internasional HARDA_INTERNASIONAL
Bank Himpunan Saudara 1906 HIMPUNAN_SAUDARA
Bank ICBC Indonesia ICBC
Bank Ina Perdania INA_PERDANA
Bank Index Selindo INDEX_SELINDO
Bank Jasa Jakarta JASA_JAKARTA
Bank JTrust Indonesia (formerly Bank Mutiara) JTRUST
BANK SEABANK INDONESIA (Ex Bank Kesejahteraan Ekonomi) KESEJAHTERAAN_EKONOMI
Bank Mandiri MANDIRI
Bank Maspion Indonesia MASPION
Bank Mayapada International MAYAPADA
Bank Maybank MAYBANK
Bank Maybank Syariah Indonesia MAYBANK_SYR
Bank Mayora MAYORA
Bank Mega MEGA
Bank Mestika Dharma MESTIKA_DHARMA
Bank Mitra Niaga MITRA_NIAGA
Bank Mizuho Indonesia MIZUHO
Bank MNC Internasional MNC_INTERNASIONAL
Bank Muamalat Indonesia MUAMALAT
Bank Multi Arta Sentosa MULTI_ARTA_SENTOSA
Bank Nationalnobu NATIONALNOBU
Bank Negara Indonesia (BNI) BNI
Bank Nusantara Parahyangan NUSANTARA_PARAHYANGAN
Bank OCBC NISP OCBC
Bank OCBC NISP UUS OCBC_UUS
Bank of America Merill-Lynch BAML
Bank of China (BOC) BOC
Bank of India Indonesia INDIA
Bank of Tokyo Mitsubishi UFJ TOKYO
Bank Oke Indonesia (formerly Bank Andara) OKE
Bank Panin PANIN
Bank Panin Syariah PANIN_SYR
Bank Permata PERMATA
Bank Permata UUS PERMATA_UUS
Bank QNB Indonesia (formerly Bank QNB Kesawan) QNB_INDONESIA
Bank Rabobank International Indonesia RABOBANK
Bank Rakyat Indonesia (BRI) BRI
Bank Resona Perdania RESONA
Bank Royal Indonesia ROYAL
Bank Sahabat Sampoerna SAHABAT_SAMPOERNA
Bank SBI Indonesia SBI_INDONESIA
Bank Shinhan Indonesia (formerly Bank Metro Express) SHINHAN
Bank Sinarmas SINARMAS
Bank Sinarmas UUS SINARMAS_UUS
Bank Sumitomo Mitsui Indonesia MITSUI
Bank Syariah BRI BRI_SYR
Bank Syariah Bukopin BUKOPIN_SYR
Bank Syariah Mandiri MANDIRI_SYR
Bank Syariah Mega MEGA_SYR
Bank Tabungan Negara (BTN) BTN
Bank Tabungan Negara (BTN) UUS BTN_UUS
Bank Tabungan Pensiunan Nasional TABUNGAN_PENSIUNAN_NASIONAL
Bank UOB Indonesia UOB
Bank Victoria Internasional VICTORIA_INTERNASIONAL
Bank Victoria Syariah VICTORIA_SYR
Bank Woori Indonesia WOORI
Bank Woori Saudara Indonesia 1906 (formerly Bank Himpunan Saudara and Bank Woori Indonesia) WOORI_SAUDARA
Bank Yudha Bhakti YUDHA_BHAKTI
BPD Aceh ACEH
BPD Aceh UUS ACEH_UUS
BPD Banten (formerly Bank Pundi Indonesia) BANTEN
BPD Bengkulu BENGKULU
BPD Daerah Istimewa Yogyakarta (DIY) DAERAH_ISTIMEWA_UUS
BPD Jambi JAMBI
BPD Jambi UUS JAMBI_UUS
BANK JATENG(Ex BPD Jawa Tengah) JAWA_TENGAH
BPD Jawa Tengah UUS JAWA_TENGAH_UUS
BANK JATIM (Ex BPD Jawa Timur) JAWA_TIMUR
BPD Jawa Timur UUS JAWA_TIMUR_UUS
BPD Kalimantan Barat KALIMANTAN_BARAT
BPD Kalimantan Barat UUS KALIMANTAN_BARAT_UUS
BPD Kalimantan Selatan KALIMANTAN_SELATAN
BPD Kalimantan Selatan UUS KALIMANTAN_SELATAN_UUS
BPD Kalimantan Tengah KALIMANTAN_TENGAH
BPD Kalimantan Timur KALIMANTAN_TIMUR
BPD Kalimantan Timur UUS KALIMANTAN_TIMUR_UUS
BPD Lampung LAMPUNG
BPD Maluku MALUKU
BPD Nusa Tenggara Barat NUSA_TENGGARA_BARAT
BPD Nusa Tenggara Barat UUS NUSA_TENGGARA_BARAT_UUS
BPD Nusa Tenggara Timur NUSA_TENGGARA_TIMUR
BPD Papua PAPUA
BPD Riau Dan Kepri RIAU_DAN_KEPRI
BPD Riau Dan Kepri UUS RIAU_DAN_KEPRI_UUS
BPD Sulawesi Tengah SULAWESI
BPD Sulawesi Tenggara SULAWESI_TENGGARA
BPD Sulselbar SULSELBAR
BPD Sulselbar UUS SULSELBAR_UUS
BPD Sulut SULUT
BPD Sumatera Barat SUMATERA_BARAT
BPD Sumatera Barat UUS SUMATERA_BARAT_UUS
BPD Sumsel Dan Babel SUMSEL_DAN_BABEL
BPD Sumsel Dan Babel UUS SUMSEL_DAN_BABEL_UUS
BPD Sumut SUMUT
BPD Sumut UUS SUMUT_UUS
BTPN Syariah (formerly BTPN UUS and Bank Sahabat Purba Danarta) BTPN_SYARIAH
Centratama Nasional Bank CENTRATAMA
China Construction Bank Indonesia (formerly Bank Antar Daerah and Bank Windu Kentjana International) CCB
Citibank CITIBANK
Deutsche Bank DEUTSCHE
Hongkong and Shanghai Bank Corporation (HSBC) UUS HSBC_UUS
HSBC Indonesia (formerly Bank Ekonomi Raharja) HSBC
Indonesia Eximbank (formerly Bank Ekspor Indonesia) EXIMBANK
JP Morgan Chase Bank JPMORGAN
Mandiri Taspen Pos (formerly Bank Sinar Harapan Bali) MANDIRI_TASPEN
Prima Master Bank PRIMA_MASTER
Royal Bank of Scotland (RBS) RBS
Standard Chartered Bank STANDARD_CHARTERED
Bank Syariah Indonesia BSI
Bank Neo Commerce BNC
Bank Nagari BANK_NAGARI
Bank Pembangunan Daerah Bali BANK_BPD_BALI
Bank Jabar Banten Syariah BANK_JABAR_BANTEN_SYARIAH
PT Bank Mantap Sejahtera BANK_MANTAP
Bank Pembangunan Daerah Kepulauan Selayar BPR_KS
Bank IFI IBK
Bank Aladin Syariah BANK_ALADIN_SYARIAH

账户接口

查询账户余额

请求URL/api/v1/account/balance

请求方式POST

请求类型application/json

请求示例

{
    "currency": "IDR",
    "reqTime": 1726306060918
}

请求参数

参数名 类型 必传 描述
currency String 仅支持IDR
reqTime long 请求接口时间,13位时间戳

返回示例

{
    "code": 200,
    "msg": "SUCCESS",
    "data": {
        "balance": "12345.67",
        "currency": "IDR",
        "frozenBalance": "0",
        "settlementBalance": "0"
    }
}

返回参数

参数名 类型 必传 描述
balance String 余额
frozenBalance String 冻结余额
settlementBalance String 结算中余额,在支付完成、代付退款完成后一分钟内同步到余额帐户"balance"
currency String 仅支持IDR

支付接口

支付下单

请求URL/api/v1/charge

请求方式POST

请求类型application/json

请求示例

{
  "mchTradeNo": "111111111111",
  "originalCurrency": "CNY",
  "originalAmount": "100",
  "payType": "QRIS",
  "bankCode": "QRIS",
  "subject": "tempor",
  "body": "eiusmod",
  "notifyUrl": "https://timely-validity.com/",
  "debtorName": "cen",
  "phoneNumber": "628157123123",
  "email": "fake@gmail.com",
  "reqTime": 1738567036974
}

请求参数

参数名 类型 必填 描述
mchTradeNo String 商户生成的订单号,请确保唯一性, 长度64位以内
originalCurrency String 原始货币代码(仅支持IDR/USD/CNY)
originalAmount String 原始货币金额(IDR 0位小数,其他币种2位小数)
subject String 标题,长度50位以内,禁止出现标点符号,特殊符号,可能影响商户交易成功率
body String 内容描述,长度128位以内,禁止出现标点符号,特殊符号,可能影响商户交易成功率
payType String 支付类型,QRIS:二维码,VA:虚拟账户支付,EWALLET:电子钱包
bankCode String 银行代码,指定特定银行,payType=QRIS时该值也为QRIS
notifyUrl String 我方通知商户接收交易结果地址,长度200位以内.需返回SUCCESS确定接收成功,传值才会发起回调
debtorName String 付款人姓名,长度128位以内
phoneNumber String 付款人手机号码,长度64位以内
email String 付款人邮箱地址,长度150位以内
reqTime long 请求接口时间,13位时间戳

返回示例

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "currency": "IDR",
    "totalAmount": "235264",
    "currencyRate": "2352.64",
    "originalAmount": "100",
    "originalCurrency": "CNY",
    "tradeNo": "DS25110619864114140042158096670",
    "mchTradeNo": "39ff1385-e1bd-438d-b91e-082e0411caa4",
    "payUrl": "https://payurltest.zft1818.com?data=MDloTDhsVFB5QTdlTGRjcFBpMk02UHV2cG9tWnB2S1hMNzBPZWN1ZjR3RUFhSTBrYUVsRi9ZbUF6MTJpUU52K3dLZ296cHhRdmJzUDR0NTJYdXlzK0Y4cTJZVXBOc3U3M3g3alNMOGVjamF5YnJXSHBWM3NrRkVJTWt6bHRCaUNlekpoZnVQaTZNbm9QMVJjcjYxSHBpYUhlaWpyNWhWbmtqbzRidjgra2gxbXZ3djhwS1RZVzNQeTNQQXdvVmlrUE9POE1DQ0tsODdwMnJrR3VOTEExalRXWVEvNzJILy95N0FLaG1MQjVTZXV0WE5FQXZ4b2FLRDhEZkdWbEZFQkZWSWphTjhBVlhCUDh5UndHRVlwU0JjSTFRVTZ6bTNyTmlaWG1oNEVXMFJxVnNLS2ZvZGo2ZjJhRHQzMXJxKzZiVkFQNzFzWnZNbzVYb2ZUZm9WRTBtOEpaU2RlS2t5SXg5V2lKaWJlU2NoSFFNeC82V0laSVlUdGt1bkxVQzRzZmUvVVRZMnd6UnJWMkhNZG9rRTFDVGdqazRSaCtFMlNFeUt2RGdKRFRMYkQ4L2NWdUlCR2E4TzNvMktPcGJLNG1QRHBoNEszZDFFektzMlVHZEFzK2xVWlBGTkQrQkZkdUQ2Z2ErYnM4elB1NWFQenk1QXdWL3lIK1FXRGFkWVFLYkkrVkVubjAxeWdBTERhQ2N0bFBBPT0=",
    "qrcode": "00020101021226530012COM.DOKU.WWW0117936008990000140520205140520303URE51440014ID.CO.QRIS.WWW0215ID10221466140520303URE520454995303360540833304.005802ID5915YesChat Sandbox6009Indonesia6104109562330704109550211762432361924cb0b73056304D6C9",
    "state": "PENDING",
    "ext": ""
  }
}

返回参数

参数名 类型 必传 描述
tradeNo String 平台支付订单号
mchTradeNo String 商户传入的订单号
state String 订单状态
payUrl String 支付页,用于用户扫码支付的中间页
qrcode String 二维码文本内容或二维码图片url或支付url,部分银行不支持
currency String 仅支持IDR
totalAmount String 结算货币金额(IDR,不包含手续费)
currencyRate String 货币汇率
originalCurrency String 原始货币代码(下单时的货币)
originalAmount String 原始货币金额(下单时的货币金额)
ext String 冗余扩展字段,根据不同业务解释,暂时未用上

查询支付订单

请求URL/api/v1/charge/detail

请求方式POST

请求类型application/json

请求示例

{
    "tradeNo": "I1726294720789M1726283265RJ27G",
    "mchTradeNo": "TEST_ORDER_123456789000004",
    "reqTime": 1726295520933
}

请求参数

参数名 类型 必传 描述
tradeNo String 平台生成的订单号,与mchTradeNo二者传一即可,两者都传只认平台订单号
mchTradeNo String 商户生成的订单号,与tradeNo二者传一即可
reqTime long 请求接口时间,13位时间戳

返回示例

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "body": "eiusmod",
    "createdAt": 1762548729917,
    "currency": "IDR",
    "totalAmount": "235264",
    "currencyRate": "2352.64",
    "ext": "{}",
    "mchNo": "ZmWEdXj1yEr86xn3",
    "mchTradeNo": "2eb1c0c4-cc43-469d-9e3f-f61c45e8cfb6",
    "tradeNo": "DS25110719867787054222336004553",
    "originalCurrency": "CNY",
    "originalAmount": "100",
    "payAmount": "0",
    "refund": null,
    "state": "PENDING",
    "subject": "tempor",
    "successTime": 0
  }
}

返回参数

参数名 类型 必传 描述
tradeNo String 平台支付订单号
mchTradeNo String 商户传入的订单号
subject String 商品标题
body String 商品描述
currency String 仅支持IDR
totalAmount String 结算货币金额(IDR,不包含手续费)
currencyRate String 货币汇率
originalCurrency String 原始货币代码(下单时的货币)
originalAmount String 原始货币金额(下单时的货币金额)
state String 订单状态
createdAt long 订单创建时间,13位时间戳
successTime long 订单支付成功时间,13位时间戳
refund array 退款记录
ext String 根据业务单独解释
mchNo String 商户号
payAmount String 系统结算金额(印尼币)

refund内容

参数名 类型 必传 描述
refundNo String 退款单号
refundOutNo String 商户退款单号
refundAmount String 退款金额(IDR)
refundTime long 13位时间戳

state字段说明:

state 描述
SUCCESS 支付成功
PENDING 交易创建,等待付款
REFUND 退款

支付通知

请求URL:该链接是通过统一下单接口提交的参数notifyUrl设置,如果无法访问链接,商户系统将无法接收到支付中心的通知。

请求方式POST

请求类型application/json

签名: header : PAY-SIGN

推送及时性: 默认及时,200 QPS

通知示例

{
  "body": "eiusmod",
  "createdAt": 1762548729917,
  "currency": "IDR",
  "totalAmount": "235264",
  "currencyRate": "2352.64",
  "originalAmount": "100",
  "originalCurrency": "CNY",
  "mchNo": "ZmWEdXj1yEr86xn3",
  "mchTradeNo": "2eb1c0c4-cc43-469d-9e3f-f61c45e8cfb6",
  "payAmount": "235264",
  "state": "SUCCESS",
  "subject": "tempor",
  "successTime": 0,
  "tradeNo": "DS25110719867787054222336004553",
  "ext": "{}",
  "refund": [
    {
      "refundNo": "",
      "refundOutOo": "",
      "refundAmount": "",
      "refundTime": ""
    }
  ]
}

通知参数

参数名 类型 必传 描述
tradeNo String 平台支付订单号
mchTradeNo String 商户传入的订单号
subject String 商品标题
body String 商品描述
currency String 仅支持IDR
totalAmount String 结算货币金额(IDR,不包含手续费)
currencyRate String 货币汇率
originalCurrency String 原始货币代码(下单时的货币)
originalAmount String 原始货币金额(下单时的货币金额)
state String 订单状态
createdAt long 订单创建时间,13位时间戳
successTime long 订单支付成功时间,13位时间戳
refund array 退款记录
ext String 根据业务单独解释
mchNo String 商户号
payAmount String 系统结算金额(印尼币)

商户返回结果

需要对这整个 JSON 字符串进行签名验签 hmac(sha256, jsonString , secretKey) == header("PAY-SIGN")

state字段说明:

state 描述
SUCCESS 支付成功
PENDING 交易创建,等待付款
REFUND 退款

代付接口

代付下单

商户业务系统通过转账接口发起转账申请。

请求URL/api/v1/transfer

请求方式POST

请求类型application/json

请求示例

{
  "mchTradeNo": "TEST_ORDER_12345678677285346",
  "originalCurrency": "CNY",
  "originalAmount": "100",
  "payType": "VA",
  "bankCode": "BNI",
  "accountNo": "23504509880",
  "phoneNumber": "6217300498201",
  "email": "fake@gmail.com",
  "recipientName": "Yenny",
  "transferDesc": "test",
  "notifyUrl": "http://xxx/success",
  "reqTime": 1726306060918
}

请求参数

参数名 类型 必填 描述
mchTradeNo String 商户生成的订单号,请确保唯一性,长度64位以内
originalCurrency String 原始货币代码(仅支持IDR/USD/CNY)
originalAmount String 原始货币金额(IDR不支持小数,其他2位小数)即对方收款金额,实际扣款金额(商户IDR余额)包含手续费可能大于此金额
payType String 支付类型,VA:虚拟账户支付,EWALLET:电子钱包
bankCode String 银行代码,指定特定银行
accountNo String 收款账号,长度64位以内
phoneNumber String 付款人手机号码,长度64位以内
email String 付款人邮箱地址,长度150位以内
recipientName String 收款人姓名,长度255位以内
transferDesc String 转账描述信息,长度255位以内
notifyUrl String 异步通知地址,长度200位以内
reqTime long 请求接口时间,13位时间戳

返回示例

{
    "code": 200,
    "msg": "SUCCESS",
    "data": {
        "accountNo": "23504509880",
        "mchTradeNo": "TEST_ORDER_123456789000008",
        "state": "PENDING",
        "tradeNo": "DF251107198670290890055270536252",
        "currency": "IDR",
        "totalAmount": "235264",
        "originalCurrency": "CNY",
        "originalAmount": "100",
        "currencyRate": "2352.64"
    }
}

返回参数

参数名 类型 必传 描述
mchTradeNo String 商户生成的转账订单号
tradeNo String 平台生成的转账单号
state String 转账状态
accountNo String 收款账号
currency String 仅支持IDR
totalAmount String 结算货币金额(IDR,不包含手续费)
originalCurrency String 原始货币代码(下单时的货币)
originalAmount String 原始货币金额(下单时的货币金额)
currencyRate String 货币汇率

查询代付订单

请求URL:/api/v1/transfer/detail

请求方式POST

请求类型application/json

请求示例

{
    "reqTime": 1726298455397,
    "tradeNo": "DF251107198670290890055270536252",
    "mchTradeNo": ""
}

请求参数

参数名 类型 必填 描述
tradeNo String 平台生成的代付单号,与mchTradeNo二者传一即可,都传时只认tradeNo
mchTradeNo String 商户生成的代付单号,与tradeNo二者传一即可
reqTime long 请求接口时间,13位时间戳

返回示例

{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "accountNo": "23504509880",
    "createdAt": 1762530741948,
    "currency": "IDR",
    "totalAmount": "235264",
    "currencyRate": "2352.64",
    "originalAmount": "100",
    "originalCurrency": "CNY",
    "ext": "",
    "failDesc": "",
    "mchNo": "pmQpJyYMz9RrZwOA",
    "mchTradeNo": "TEST_ORDER_12345678677285342",
    "tradeNo": "DF2511071986703258168635393117780",
    "recipientName": "Yenny",
    "refund": null,
    "state": "PENDING",
    "successTime": 0,
    "transferDesc": "test"
  }
}

返回参数

参数名 类型 必传 描述
mchTradeNo String 商户生成的代付订单号
tradeNo String 平台生成的代付订单号
accountNo String 收款账号
currency String 仅支持IDR
totalAmount String 结算货币金额(IDR,不包含手续费)
originalCurrency String 原始货币代码(下单时的货币)
originalAmount String 原始货币金额(下单时的货币金额)
currencyRate String 货币汇率
state String 转账状态
createdAt long 订单创建时间,13位时间戳
successTime long 转账成功时间,13位时间戳
refund array 退款记录
failDesc String 错误描述
ext String 扩展字段
mchNo String 商户号
recipientName String 收款人姓名
transferDesc String 转账描述信息

refund数据格式:

参数名 类型 必传 描述
refundAmount String 退款金额(IDR)
refundNo String 系统退款单号
refundTime long 退款时间,毫秒时间戳

state字段说明:

state 描述
SUCCESS 交易完成
PENDING 下单成功等待结算转账
FAIL 转账执行失败(余额不足、账号无效等)
REFUND 退款

代付通知

请求URL:该链接是通过转账申请接口提交的参数notifyUrl设置,如果无法访问链接,商户系统将无法接收到支付中心的通知。

请求方式POST

请求类型application/json

签名header: PAY-SIGN

推送及时性: 默认及时,200 QPS

通知示例数据

{
  "accountNo": "23504509880",
  "createdAt": 1762530741948,
  "currency": "IDR",
  "totalAmount": "235264",
  "currencyRate": "2352.64",
  "originalAmount": "100",
  "originalCurrency": "CNY",
  "mchNo": "pmQpJyYMz9RrZwOA",
  "mchTradeNo": "TEST_ORDER_12345678677285342",
  "tradeNo": "DF2511071986703258168635393117780",
  "recipientName": "Yenny",
  "state": "PENDING",
  "successTime": 0,
  "failDesc": "",
  "ext": "",
  "refund": [
    {
      "refundNo": "",
      "refundAmount": "",
      "refundTime": "0"
    }
  ]
}

通知参数

参数名 类型 必传 描述
mchTradeNo String 商户生成的代付订单号
tradeNo String 平台生成的代付订单号
accountNo String 收款账号
currency String 仅支持IDR
totalAmount String 结算货币金额(IDR,不包含手续费)
originalCurrency String 原始货币代码(下单时的货币)
originalAmount String 原始货币金额(下单时的货币金额)
currencyRate String 货币汇率
state String 转账状态
createdAt long 订单创建时间,13位时间戳
successTime long 转账成功时间,13位时间戳
refund array 退款记录
failDesc String 错误描述
ext String 扩展字段
mchNo String 商户号
recipientName String 收款人姓名

商户返回结果

需要对这整个 JSON 字符串进行签名验签 hmac(sha256, jsonString, secretKey) == header("PAY-SIGN")

state字段说明:

state 描述
SUCCESS 交易完成
PENDING 下单成功等待结算转账
FAIL 转账执行失败(余额不足、账号无效等)
REFUND 退款

refund数据格式:

参数名 类型 必传 描述
refundAmount String 退款金额(IDR)
refundNo String 系统退款单号
refundTime String 退款时间,毫秒时间戳

沙箱支付

代收模拟支付

请求URL/api/v1/sandbox/charge/simulatePayment

请求方式POST、GET

请求类型application/json

请求示例

{
    "tradeNo": "TEST_ORDER_1727222488355072"
}

请求参数

参数名 类型 必填 描述
tradeNo String 系统订单号

返回示例

{
    "code": 200,
    "msg": "SUCCESS",
    "data": null
}

代付模拟成功

请求URL/api/v1/sandbox/transfer/simulatePayment

请求方式POST、GET

请求类型application/json

请求示例

{
    "tradeNo": "TEST_ORDER_1727222488355072"
}

请求参数

参数名 类型 必填 描述
tradeNo String 系统订单号

返回示例

{
    "code": 200,
    "msg": "SUCCESS",
    "data": null
}

代付模拟失败

请求URL/api/v1/sandbox/transfer/simulatePaymentFail

请求方式POST、GET

请求类型application/json

请求示例

{
    "tradeNo": "TEST_ORDER_1727222488355072"
}

请求参数

参数名 类型 必填 描述
tradeNo String 系统订单号

返回示例

{
    "code": 200,
    "msg": "SUCCESS",
    "data": null
}

接口状态码

The API uses the following error codes:

Code 提示 说明
200 SUCCESS 业务调用成功
400 Params error 参数异常
405 Invalid order no 业务条件不满足
429 Too many requests 请求过快
500 Internal service error 内部服务错误
1000 Merchant not exist or disabled 商户不存在或被禁用
1001 Invalid secret key 密钥错误
1002 IP is not on the whitelist ip不在白名单
1003 Order repeat 商户订单号重复
1004 Create order failed 订单创建失败
1005 Order not exist 订单不存在
1006 Insufficient Balance 余额不足
1007 The order is non refundable 订单不可退款
1008 The refund amount is not correct 退款金额不正确
1011 Invalid notify url 无效回调通知url
1012 No notify URL whitelist configured 没有配置通知url白名单
1013 Wallet is less or disabled 钱包被禁或不存在
1014 The account triggers the risk control rule 该账户触发风控规则
1015 Invalid document number 无效debtorDocumentNumber 或debtorDocumentNumber与debtorName不匹配
1016 Invalid amount 无效金额
1100 Invalid timestamp 请求头PAY-ACCESS-TIMESTAMP时间戳过期或为空,请传入当前UTC时区的13位毫秒时间戳数字,且该值要参与签名
1101 Invalid mchNo 请求头PAY-ACCESS-MCHNO无效商户号
1102 Invalid Content-Type 请求头Content-Type 请使用“application/JSON”格式
1103 Invalid signature 请求头PAY-ACCESS-SIGN无效签名
2004 System error, please contact customer service 系统错误,请联系客服