Skip to main content

订单接口

包含代收/代付/充值/结算等订单接口

请求

请求地址

http POST https://DOMAIN/octopus/api/order/new

基本参数

参数名称 类型 是否必须 描述 格式/示例
transaction_type string 交易类型 二选一: income(收入)/expense(支出)
amount string 交易金额 "100.00"
merchant_order_id string 商户订单ID 商户自行生成的唯一订单号
merchant_uid string 商户UID 联系管理员获得
currency string 交易货币 cny(人民币)/usd(美元)/thb(泰铢)/vnd(越南盾)/php(菲律宾比索)/sgd(新加坡元)/idr(印尼盾)/bdt(孟加拉国塔卡)
payment string 支付方式 商户后台可见,在商户后台勾选渠道后,可见支持的所有模式名称
redirect_url string 交易完成后重定向的URL,银河渠道为必填 "https://example.com/redirect"
notify_url string 服务器端通知URL "https://example.com/notify"
response_type string 响应类型(如返回JSON或重定向等) 目前仅支持:"json" 留空则为302重定向
country string 国家代码

国际标准国家代码缩写,例如:"US"

在A2A模式下,必须提供国别代码。因此统一为必填。

accounting_type string 记账类型 recharge(充值)/receive(收款)/pay(付款)/settle(结算)
from string 收入校验: 付款方账户 "6660006666789"
from_name string 收入校验: 付款方名称 "John Doe"
from_bank_name string 收入校验: 付款方银行名称 "Bank of Example"
to string 支出校验: 收款方账户 "6660006666987"
to_name string 支出校验: 收款方名称 "Jane Doe"
to_bank_name string 支出校验: 收款方银行名称 "Example Bank"
 

签名参数增加header

参数名称 类型 是否必须 描述 格式/示例
Content-Type string
application/json
OC-Key string 请客服提供
OC-Signature string 通过计算获取  

卡转卡附加参数

这是采用卡转卡时,额外需要提供的参数

参数名称类型是否必须描述格式/示例
additionalstring

收款附言

当越南支付使用 fypay时,这里强制填写fypay

"any words"
float_precisionstring浮动金额范围代收浮动范围(2代表 在正的2位小数范围内,-2代表 在负的2位小数范围内)"-2"
ttlstring超时时间,以秒为单位1200

卡转卡  IDR 附加参数

参数名称类型是否必须描述格式/示例
emailstring
客户邮箱
"any words"
     
     

收款银行 from_bank_name,列表
:

BCA
BRI
BNI
CIMB
PERMATA
MANDIRI
MAYBANK
LINKAJA
OVO
QRIS
DANA
DANAMON
SHOPEEPAY
ALFAMART
BNC
BSI
GOPAY_QRIS
TRANSFER_BCA

代付银行列表

银行简称银行名称银行编码
ACEHBank Aceh Syariah116
ACEH_UUSBank Agris UUS1160
ACEH_SYRBPD ISTIMEWA ACEH SYARIAH1161
AGRISBank IBK Indonesia945
AMARBANK AMAR INDONESIA1162
AGRONIAGABank Agroniaga494
ANDARABank Andara466
ANGLOMASAnglomas International Bank531
ANTAR_DAERAHBANK ANTAR DAERAH1163
ANZBank ANZ Indonesia061
ANZ_PANINBank ANZ PANIN0610
ARTAJASAARTAJASA PEMBAYARAN ELEKTRONIK987
ARTA_NIAGA_KENCANABank Arta Niaga Kencana020
ARTHABank Artha Graha Internasional037
ARTOSBank ARTOS/ Bank Jago542
BALIBPD Bali129
BISNIS_INTERNASIONALBank Bisnis Internasional459
BANGKOKBangkok Bank040
BANTENBPD Banten558
BARCLAYSBANK BARCLAYS INDONESIA525
BCABank Central Asia014
BCA_SYRBank Central Asia (BCA) Syariah536
BENGKULUBank Bengkulu133
BJBBank Jawa Barat(BJB)110
BJB_SYRBank BJB Syariah425
BNIBank Negara Indonesia(BNI)009
BNI_SYRBank BNI Syariah427
BOCBANK OF CHINA LIMITED069
BRIBank Rakyat Indonesia(BRI)002
BRI_SYRBank BRI Syariah422
BNP_PARIBASBank BNP Paribas1450
BOABANK OF AMERICA NA033
BPRKSBPR KS688
BSIBank Syariah Indonesia(BSI)4510
BTNBank Tabungan Negara (BTN)200
BTN_UUSBank Tabungan Negara (BTN) UUS2000
BTPNBank BTPN213
BTPN_SYARIAHBTPN Syariah5470
BTPN_SYRBank BTPN Syariah547
BUKOPINWokee/Bukopin441
BUKOPIN_SYRBank Bukopin Syariah521
BUMI_ARTABank Bumi Arta076
BUMIPUTERABANK BUMIPUTERA4850
CAPITALBank Capital Indonesia054
CENTRATAMABANK CENTRATAMA5590
CHINACONSBANK CHINA CONSTRUCTION9490
CHINATRUSTCTBC Indonesia949
CNBCentratama Nasional Bank(CNB)559
CIMBBank CIMB Niaga022
CIMB_UUSBank CIMB Niaga UUS0220
CIMB_REKENING_PONSELBank CIMB Niaga REKENING PONSEL0221
CITIBANKCitibank031
COMMONWEALTHBank Commonwealth950
BPD_DIYBPD DIY112
BPD_DIY_SYRBANK PEMBANGUNAN DAERAH DIY UNIT USAHA SYARIAH1121
DANAMONBank Danamon011
DANAMON_UUSBank Danamon UUS0110
DBSBank DBS Indonesia046
DEUTSCHEDeutsche Bank067
DINAR_INDONESIABank Dinar Indonesia526
DIPOBANK DIPO INTERNATIONAL5230
DKIBank DKI111
DKI_UUSBank DKI UUS778
EKABank EKA699
EKONOMI_RAHARJABANK EKONOMI RAHARJA087
FAMABank Fama International562
GANESHABank Ganesha161
HANALINE Bank/KEB Hana484
HARDA_INTERNASIONALAllo Bank/Bank Harda Internasional567
HIMPUNAN_SAUDARABank Himpunan Saudara 19062120
HSBCHSBC041
ICBCBank ICBC Indonesia164
INA_PERDANABank Ina Perdana513
INDEX_SELINDOBank Index Selindo555
INDIABank of India Indonesia146
JAGOBANK JAGO TBK5421
JAMBIBank Jambi115
JASA_JAKARTABank Jasa Jakarta472
JAWA_TENGAHBank Jateng113
JAWA_TENGAH_UUSBPD JAWA TENGAH UNIT USAHA SYARIAH1130
JATIMBank Jatim114
JAWA_TIMURBPD Jawa Timur1140
JATIM_UUSBank Jatim UUS1141
JPMORGANJPMORGAN CHASE BANK032
JTRUSTBank JTrust Indonesia095
KALIMANTAN_BARATBPD Kalimantan Barat/Kalbar123
KALIMANTAN_BARAT_UUSBPD Kalimantan Barat UUS1230
KALIMANTAN_SELATANBPD Kalimantan Selatan/Kalsel122
KALIMANTAN_SELATAN_UUSBPD Kalimantan Selatan UUS1220
KALIMANTAN_TENGAHBPD Kalimantan Tengah (Kalteng)125
KALIMANTAN_TIMURBPD Kalimantan Timur124
KALIMANTAN_TIMUR_UUSBPD Kalimantan Timur UUS1240
KESEJAHTERAAN_EKONOMISeabank/Bank Kesejahteraan Ekonomi(BKE)535
LAMPUNGBPD Lampung121
MALUKUBank Maluku131
MANDIRIBank Mandiri008
MANDIRI_SYRBank Syariah Mandiri451
MANDIRI_TASPENBank Mandiri Taspen Pos5640
MANTAPBank MANTAP564
MULTI_ARTA_SENTOSABank Multi Arta Sentosa(MAS)548
MASPIONBank Maspion Indonesia157
MAYAPADABank Mayapada097
MAYBANKBank Maybank016
MAYBANK_SYRBank Maybank Syariah Indonesia947
MAYBANK_UUSBank Maybank Syariah Indonesia UUS0160
MAYORABank Mayora Indonesia553
MEGABank Mega426
MEGA_SYRBank Mega Syariah506
MESTIKA_DHARMABank Mestika Dharma151
METRO_EXPRESSBANK METRO EXPRESS1520
MNC_INTERNASIONALMotion/Bank MNC Internasional485
MUAMALATBank Muamalat Indonesia147
MITRA_NIAGABank Mitra Niaga491
MIZUHOBank Mizuho Indonesia048
MUTIARABank MUTIARA10010
MULTICORBank MULTICOR10006
NATIONALNOBUBank National Nobu503
NIAGA_SYRBANK NIAGA TBK. SYARIAH583
NUSA_TENGGARA_BARATBPD Nusa Tenggara Barat(NTB)128
NUSA_TENGGARA_BARAT_UUSBPD Nusa Tenggara Barat (NTB) UUS1280
NUSA_TENGGARA_TIMURBPD Nusa Tenggara Timur(NTT)130
NUSANTARA_PARAHYANGANBank Nusantara Parahyangan145
OCBCBank OCBC NISP028
OCBC_UUSBank OCBC NISP UUS0280
PANINBank Panin019
PANIN_SYRPanin Dubai Syariah517
PAPUABank Papua132
PERMATABank Permata013
PERMATA_UUSBank Permata UUS0130
PRIMA_MASTERBank Prima Master520
PUNDIBANK PUNDI INDONESIA584
QNB_KESAWANQNB KESAWAN167
QNB_INDONESIAQNB Indonesia1670
OKEBank Oke Indonesia5260
RABOBANKRabobank International Indonesia089
RESONABank Resona Perdania047
RIAU_DAN_KEPRIBPD Riau Dan Kepri119
RIAU_DAN_KEPRI_UUSBPD Riau Dan Kepri UUS1190
ROYALBlu/BCA Digital5010
SAHABAT_PURBA_DANARTABANK PURBA DANARTA5471
SAHABAT_SAMPOERNABank Sahabat Sampoerna523
SBI_INDONESIABank SBI Indonesia498
SHINHANBank Shinhan Indonesia152
SINARMASBank Sinarmas153
SINARMAS_UUSBank Sinarmas UUS1530
STANDARD_CHARTEREDStandard Chartered Bank050
SULAWESIBank Sulteng134
SULAWESI_TENGGARABank Sultra135
SULSELBARBank Sulselbar126
SULSELBAR_UUSBank Sulselbar UUS1260
SULUTBPD Sulawesi Utara(SulutGo)127
SUMATERA_BARATBPD Sumatera Barat118
SUMATERA_BARAT_UUSBPD Sumatera Barat UUS1180
NAGARIBANK NAGARI1181
SUMSEL_BABELBPD Sumsel Babel120
SUMSEL_DAN_BABELBank Sumsel Babel1200
SUMSEL_DAN_BABEL_UUSBank Sumsel Dan Babel UUS1201
SUMUTBank Sumut117
SUMUT_UUSBank Sumut UUS1170
MITSUIBank Sumitomo Mitsui Indonesia045
TOKYOBank of Tokyo042
UOBTMRW/Bank UOB Indonesia023
VICTORIA_INTERNASIONALBank Victoria International566
VICTORIA_SYRBank Victoria Syariah405
WOORIBank Woori Saudara212
YUDHA_BHAKTINeo Commerce/Bank Yudha Bhakti(BNC)490
DAERAH_ISTIMEWA_UUSBPD_Daerah_Istimewa_Yogyakarta_(DIY)1120
CCBCCB Indonesia088
RBSRoyal Bank of Scotland (RBS)501
OVOOVO10001
DANADANA10002
GOPAYGOPAY10003
SHOPEEPAYSHOPEEPAY10008
LINKAJALINKAJA10009

卡转卡  MXN 附加参数

参数名称类型是否必须描述格式/示例
emailstring
客户邮箱
"any words"
     
     

代付银行列表

銀行編碼銀行名稱
2001BANXICO
37006BANCOMEXT
37009BANOBRAS
37019BANJERCITO
37135NAFIN
37166BaBien
37166BANSEFI
37168HIPOTECARIA FED
40002BANAMEX
40012BBVA MEXICO
40014SANTANDER
40021HSBC
40030BAJIO
40036INBURSA
40042MIFEL
40044SCOTIABANK
40058BANREGIO
40059INVEX
40060BANSI
40062AFIRME
40072BANORTE
40106BANK OF AMERICA
40108MUFG
40110JP MORGAN
40112BMONEX
40113VE POR MAS
40126CREDIT SUISSE
40127AZTECA
40128AUTOFIN
40129BARCLAYS
40130COMPARTAMOS
40132MULTIVA BANCO
40133ACTINVER
40136INTERCAM BANCO
40137BANCOPPEL
40138ABC CAPITAL
40140CONSUBANCO
40141VOLKSWAGEN
40143CIBANCO
40145BBASE
40147BANKAOOL
40148PAGATODO
40150INMOBILIARIO
40151DONDE
40152BANCREA
40154BANCO COVALTO
40154BANCO FINTERRA
40155ICBC
40156SABADELL
40157SHINHAN
40158MIZUHO BANK
40159BANK OF CHINA
40160BANCO S3
90600MONEXCB
90601GBM
90602MASARI
90605VALUE
90608VECTOR
90613MULTIVA CBOLSA
90616FINAMEX
90617VALMEX
90620PROFUTURO
90630CB INTERCAM
90631CI BOLSA
90634FINCOMUN
90638AKALA
90638NU MEXICO
90642REFORMA
90646STP
90648TACTIV CB
90652CREDICAPITAL
90653KUSPIT
90656UNAGRA
90659ASP INTEGRA OPC
90661ALTERNATIVOS
90670LIBERTAD
90677CAJA POP MEXICA
90680CRISTOBAL COLON
90683CAJA TELEFONIST
90684TRANSFER
90685FONDO (FIRA)
90686INVERCAP
90688CREDICLUB
90689FOMPED
90703TESORED
90706ARCUS
90710NVIO
90722Mercado Pago W
90723Cuenca
90901CLS
90902INDEVAL
90903CoDi Valida
90728SPIN BY OXXO
40124CBM BANCO
90699FONDEADORA

卡转卡  渠道 promptpay 附加参数

代付银行列表

image.png

Tianci渠道附加说明

tianci渠道代付时,需要提供以下参数

参数名称类型是否必须描述格式/示例
to_bank_namestring收款银行编号可以从后台查询。选择Thaiqr,查询代付银行列表,并且选择对应的银行编号
to_namestring收款人姓名"John Doe"
tostring收款人账号"6660006666987"

银河附加参数

这是采用银河渠时,额外需要提供的参数

参数名称类型是否必须描述格式/示例
bank_codestring银行编号"gcash"
remarkstring备注信息"test"
ttlstring超时时间,以秒为单位1200

代收 bank_code:

  • gcash
  • PMP: PayMaya
  • UBP: UnionBank
  • USDT-TRC: usdt-trc

代付 bank_code:

  • bpi: BPI / BPI Family Savings Bank
  • Unibank: BDO Unibank, Inc.
  • mbt: Metropolitan Bank and Trust Co.
  • LBOB: LANDBANK / OFBank
  • SBC: Security Bank Corporation
  • UBP: Union Bank of the Philippines
  • PNB: Philippine National Bank (PNB)
  • CBC: China Banking Corporation
  • EWBC: East West Banking Corporation
  • RCBC: RCBC/DiskarTech
  • PSB: Philippine Savings Bank
  • AUB: Asia United Bank Corporation
  • PBC: Philippine Bank of Communications
  • DBP: Development Bank of the Philippines
  • RBB: Robinsons Bank Corporation
  • APY: Alipay / Lazada Wallet
  • AB: AllBank (A Thrift Bank), Inc.
  • BM: Bangko Mabuhay
  • BCH: Bank of China
  • BC: Bank of Commerce
  • BK: BanKo, A Subsidiary of BPI
  • BNB: BDO NeTwork Bank
  • BRB: Binangonan Rural Bank / BRBDigital
  • CB: Camalig Bank
  • CARD Bank: CARD Bank Inc.
  • SME: CARD SME Bank
  • CLB: Cebuana Lhuillier Bank / Cebuana Xpress
  • CBS: China Bank Savings, Inc.
  • CPI: CIMB Philippines, Inc.
  • Bayad: CIS Bayad Center / Bayad
  • CTBC: CTBC Bank (Philippines) Corporation
  • DCP: DCPay / COINS.PH
  • DCDB: Dumaguete City Development Bank
  • DB: Dungganon Bank (A Microfinance Rural Bank), Inc.
  • Komo: East West Rural Bank / Komo
  • ERB: Entrepreneur Rural Bank, Inc./ENTRP
  • ESB: Equicom Savings Bank, Inc.
  • GOT: GoTyme Bank
  • GP: GrabPay
  • IRI: I-Remit / iCASH
  • IEM: Infoserve / Nationlink
  • ISLA: ISLA Bank (A Thrift Bank), Inc.
  • LSB: Legazpi Savings Bank
  • LDB: Luzon Development Bank
  • MBS: Malayan Bank Savings and Mortgage Bank, Inc.
  • MYA: Maya Bank, Inc.
  • PMP: Maya Philippines, Inc./Maya Wallet
  • MBP: Maybank Philippines, Inc.
  • MCCB: Mindanao Consolidated CoopBank
  • NB: Netbank
  • OP: OmniPay, Inc.
  • PAS: Pacific Ace Savings Bank
  • PPS: PalawanPay
  • PRB: Partner Rural Bank (Cotabato), Inc.
  • PBB: Philippine Business Bank, Inc., A Savings Bank
  • PTC: Philippine Trust Company
  • PDB: Producers Bank
  • QB: Queenbank
  • QCRB: Quezon Capital Rural Bank
  • Asenso: Rural Bank of Guinobatan / Asenso
  • SB: Seabank
  • SP: ShopeePay
  • SCB: Standard Chartered Bank
  • STP: Starpay
  • SLB: Sterling Bank of Asia, Inc (A Savings Bank)
  • SSB: Sun Savings Bank, Inc.
  • TC: TayoCash
  • TDB: Tonik Bank
  • TPI: TraxionPay/DigiCOOP/COOPNET
  • USB: UCPB Savings Bank
  • UDB: UnionDigital Bank
  • UNO: UNObank
  • USSC: USSC Money Services
  • VB: Veterans Bank
  • WDB: Wealth Development Bank
  • TYB: Yuanta Savings Bank Philippines, Inc.
  • JC: Zybi Tech Inc. / JuanCash

巴西PIX 附加参数

这是采用PIX渠道时,参数説明

参数名称类型是否必须描述格式/示例
to_bank_name
string交易方式,默認值CPF,範圍:CPF, CNPJ, PHONE, EMAILCPF
cpfstringcpf信息
to
stringto_bank_name 是EMAIL时,填写email账号
to_bank_name 是CPF时,填写cpf账号
[email protected]
to_name
string姓名

代收 bank_code:

代码示例

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.util.*;

public class Main {
    private static final String API_KEY = "API_KEY";
    private static final String API_SECRET = "API_SECRET";
    private static final String MerchantUID = "Merchant_UID";
    private static final String API_URL = "https://DOMAIN/octopus/api/order/new";

    public static void main(String[] args) {
        try {
            Map<String, String> data = new TreeMap<>();
            data.put("transaction_type", "income");
            data.put("amount", "100.00");
            data.put("currency", "php");
            data.put("payment", "gcash");
            data.put("merchant_order_id", "123qq");
            data.put("merchant_uid", MerchantUID);
            data.put("redirect_url", "https://example.com/redirect");
            data.put("notify_url", "https://example.com/notify");
            data.put("response_type", "json");
            data.put("country", "ph");

            StringBuilder dataString = new StringBuilder();
            for (Map.Entry<String, String> entry : data.entrySet()) {
                if (dataString.length() > 0) dataString.append("&");
                dataString.append(entry.getKey()).append("=").append(entry.getValue());
            }

            Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
            SecretKeySpec secret_key = new SecretKeySpec(API_SECRET.getBytes(), "HmacSHA256");
            sha256_HMAC.init(secret_key);
            String signature = javax.xml.bind.DatatypeConverter.printHexBinary(sha256_HMAC.doFinal(dataString.toString().getBytes())).toLowerCase();

            URL url = new URL(API_URL);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("OC-Key", API_KEY);
            conn.setRequestProperty("OC-Signature", signature);
            conn.setDoOutput(true);

            String jsonInputString = new JSONObject(data).toString();
            try(OutputStream os = conn.getOutputStream()) {
                byte[] input = jsonInputString.getBytes("utf-8");
                os.write(input, 0, input.length);           
            }

            // Read the response ...
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

响应

接口返回值文档 接口响应可能包含两种结果类型:success和error。下面是这两种结果的格式说明和示例。

当请求处理成功时,接口将返回以下结构的JSON数据:

字段名 类型 描述 示例值
result string 操作结果 "success"/"error"
data interface{} 操作返回的数据 {"payment": {...}, "payment_url": "url"}

payment对象总json字段说明

  • from:发送方的账户号码。
  • from_name:发送方的账户名称。
  • from_bank_name:发送方的银行名称。
  • to:接收方的账户号码。
  • to_name:接收方的账户名称。
  • to_bank_name:接收方的银行名称。
  • payment_status:支付状态。
  • payment_fail_reason:支付失败原因。
  • final_amount:交易的最终金额。
  • currency:交易使用的货币种类。
  • transaction_type:交易类型(收入/支出)。
  • payment_uid:支付的唯一标识。
  • channel:交易渠道。

代码示例

// 成功的响应
{
  "result": "success",
  "data": {
    "payment": {
      // 支付信息的具体字段
    },
    "payment_url": "https://example.com/payments/checkout"
  }
}
// 有错误
{
  "result": "error",
  "data": "An error occurred processing your request"
}
//或
{
  "result": "error",
  "data": {
    "error": "Invalid parameters",
    "details": "The 'amount' field is required."
  }
}

订单查询

订单查询接口用于查询特定订单的状态和详情。通过向API发送请求,包含必要的身份验证信息和订单识别信息,可以接收关于订单的当前状态、付款状态、金额等详细信息的响应。

请求地址

http POST https://DOMAIN/octopus/api/order/get

请求参数

请求订单查询接口时,需要提供以下参数:

  • merchant_order_id: 商户订单ID,这是在创建订单时由商户自行生成的唯一订单号。

返回 JSON 字段说明

  • from:发送方的账户号码。
  • from_name:发送方的账户名称。
  • from_bank_name:发送方的银行名称。
  • to:接收方的账户号码。
  • to_name:接收方的账户名称。
  • to_bank_name:接收方的银行名称。
  • amount:订单的原始金额。
  • final_amount:订单的最终金额。
  • currency:交易使用的货币种类。
  • country:交易国家。
  • transaction_type:交易类型(收入/支出)。
  • accounting_type:会计类型(对于收入:接收、充值;对于支出:支付、结算)。
  • merchant_order_id:商户订单号。
  • merchant_uid:商户的唯一标识。
  • merchant_name:商户名称。
  • channel:交易渠道。
  • payment_status:支付状态。
  • payment_fail_reason:支付失败原因。
  • payment:支付方式。
  • response_type:响应类型。
  • ip:用户IP地址。
  • user_agent:用户代理。
  • distribute_rules:分配规则。
  • payment_uid:支付的唯一标识。
  • redirect_url:重定向URL。
  • notify_url:通知URL。
  • notify_status:通知状态。
  • notify_fail_reason:通知失败原因。
  • accounting_status:会计状态。
  • accounting_fail_reason:会计处理失败原因。
  • signature_key:签名密钥。

代码示例

import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.json.JSONObject;

public class OrderQuery {
    private static final String API_KEY = "API_KEY";
    private static final String API_SECRET = "API_SECRET";
    private static final String API_URL = "https://DOMAIN/octopus/api/order/get";

    public static void main(String[] args) {
        try {
            Map<String, String> params = new HashMap<>();
            params.put("merchant_order_id", "12345611");

            // 对参数按键排序并构造查询字符串
            List<String> keys = new ArrayList<>(params.keySet());
            Collections.sort(keys);
            StringBuilder dataToSign = new StringBuilder();
            for (String key : keys) {
                if (dataToSign.length() > 0) {
                    dataToSign.append("&");
                }
                dataToSign.append(key).append("=").append(params.get(key));
            }

            Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
            SecretKeySpec secret_key = new SecretKeySpec(API_SECRET.getBytes(), "HmacSHA256");
            sha256_HMAC.init(secret_key);
            String signature = javax.xml.bind.DatatypeConverter.printHexBinary(sha256_HMAC.doFinal(dataToSign.toString().getBytes())).toLowerCase();

            String dataString = new JSONObject(params).toString();

            URL url = new URL(API_URL);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("OC-Key", API_KEY);
            conn.setRequestProperty("OC-Signature", signature);
            conn.setDoOutput(true);

            try(OutputStream os = conn.getOutputStream()) {
                byte[] input = dataString.getBytes("utf-8");
                os.write(input, 0, input.length);           
            }

            // Read the response...

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

常用枚举字段说明

支付状态 (payment_status)

支付状态反映了订单支付过程的当前状态。

  • none: 默认值,表示状态未设置。
  • pending: 等待中,订单已创建但支付尚未开始。
  • processing: 支付中,支付正在处理。
  • completed: 支付完成,表示支付成功结束。
  • failed: 支付失败,支付过程中遇到错误。
  • reject: 支付拒绝,支付未能通过验证或被拒绝。
  • refund: 撤回,已对支付进行退款处理。
  • overdue: 逾期,支付未在规定时间内完成。

通知状态 (notify_status)

通知状态用于追踪订单支付结果的通知过程。

  • none: 默认值,表示状态未设置。
  • delivered: 通知中,通知已发送但未确认接收。
  • completed: 通知完成,接收方已成功接收通知。
  • failed: 通知失败,由于某些原因通知未能成功送达。

记账状态 (accounting_status)

记账状态反映了订单记账处理的当前状态。

  • none: 默认值,表示状态未设置。
  • delivered: 记账中,记账处理正在进行中。
  • accounted: 记账完成,记账成功完成。
  • failed: 记账失败,记账过程中出现问题。

交易类型 (transaction_type)

交易类型指明了订单的财务性质,是收入还是支出。

  • income: 收入,表示此订单为收入。
  • expense: 支出,表示此订单为支出。

记账类型 (accounting_type)

记账类型具体化了交易类型的财务处理方式。

  • recharge: 充值,指向账户的资金增加。
  • receive: 收款,从其他方收到款项。
  • settle: 结算,完成与商户或第三方的款项结算。
  • pay: 支出,从账户中支付款项。