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 通过计算获取  

卡转卡附加参数

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

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

收款附言

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

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

卡转卡  IDR 附加参数

参数名称 类型 是否必须 描述 格式/示例
email string
客户邮箱
"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

代付银行列表

银行简称 银行名称 银行编码
ACEH Bank Aceh Syariah 116
ACEH_UUS Bank Agris UUS 1160
ACEH_SYR BPD ISTIMEWA ACEH SYARIAH 1161
AGRIS Bank IBK Indonesia 945
AMAR BANK AMAR INDONESIA 1162
AGRONIAGA Bank Agroniaga 494
ANDARA Bank Andara 466
ANGLOMAS Anglomas International Bank 531
ANTAR_DAERAH BANK ANTAR DAERAH 1163
ANZ Bank ANZ Indonesia 061
ANZ_PANIN Bank ANZ PANIN 0610
ARTAJASA ARTAJASA PEMBAYARAN ELEKTRONIK 987
ARTA_NIAGA_KENCANA Bank Arta Niaga Kencana 020
ARTHA Bank Artha Graha Internasional 037
ARTOS Bank ARTOS/ Bank Jago 542
BALI BPD Bali 129
BISNIS_INTERNASIONAL Bank Bisnis Internasional 459
BANGKOK Bangkok Bank 040
BANTEN BPD Banten 558
BARCLAYS BANK BARCLAYS INDONESIA 525
BCA Bank Central Asia 014
BCA_SYR Bank Central Asia (BCA) Syariah 536
BENGKULU Bank Bengkulu 133
BJB Bank Jawa Barat(BJB) 110
BJB_SYR Bank BJB Syariah 425
BNI Bank Negara Indonesia(BNI) 009
BNI_SYR Bank BNI Syariah 427
BOC BANK OF CHINA LIMITED 069
BRI Bank Rakyat Indonesia(BRI) 002
BRI_SYR Bank BRI Syariah 422
BNP_PARIBAS Bank BNP Paribas 1450
BOA BANK OF AMERICA NA 033
BPRKS BPR KS 688
BSI Bank Syariah Indonesia(BSI) 4510
BTN Bank Tabungan Negara (BTN) 200
BTN_UUS Bank Tabungan Negara (BTN) UUS 2000
BTPN Bank BTPN 213
BTPN_SYARIAH BTPN Syariah 5470
BTPN_SYR Bank BTPN Syariah 547
BUKOPIN Wokee/Bukopin 441
BUKOPIN_SYR Bank Bukopin Syariah 521
BUMI_ARTA Bank Bumi Arta 076
BUMIPUTERA BANK BUMIPUTERA 4850
CAPITAL Bank Capital Indonesia 054
CENTRATAMA BANK CENTRATAMA 5590
CHINACONS BANK CHINA CONSTRUCTION 9490
CHINATRUST CTBC Indonesia 949
CNB Centratama Nasional Bank(CNB) 559
CIMB Bank CIMB Niaga 022
CIMB_UUS Bank CIMB Niaga UUS 0220
CIMB_REKENING_PONSEL Bank CIMB Niaga REKENING PONSEL 0221
CITIBANK Citibank 031
COMMONWEALTH Bank Commonwealth 950
BPD_DIY BPD DIY 112
BPD_DIY_SYR BANK PEMBANGUNAN DAERAH DIY UNIT USAHA SYARIAH 1121
DANAMON Bank Danamon 011
DANAMON_UUS Bank Danamon UUS 0110
DBS Bank DBS Indonesia 046
DEUTSCHE Deutsche Bank 067
DINAR_INDONESIA Bank Dinar Indonesia 526
DIPO BANK DIPO INTERNATIONAL 5230
DKI Bank DKI 111
DKI_UUS Bank DKI UUS 778
EKA Bank EKA 699
EKONOMI_RAHARJA BANK EKONOMI RAHARJA 087
FAMA Bank Fama International 562
GANESHA Bank Ganesha 161
HANA LINE Bank/KEB Hana 484
HARDA_INTERNASIONAL Allo Bank/Bank Harda Internasional 567
HIMPUNAN_SAUDARA Bank Himpunan Saudara 1906 2120
HSBC HSBC 041
ICBC Bank ICBC Indonesia 164
INA_PERDANA Bank Ina Perdana 513
INDEX_SELINDO Bank Index Selindo 555
INDIA Bank of India Indonesia 146
JAGO BANK JAGO TBK 5421
JAMBI Bank Jambi 115
JASA_JAKARTA Bank Jasa Jakarta 472
JAWA_TENGAH Bank Jateng 113
JAWA_TENGAH_UUS BPD JAWA TENGAH UNIT USAHA SYARIAH 1130
JATIM Bank Jatim 114
JAWA_TIMUR BPD Jawa Timur 1140
JATIM_UUS Bank Jatim UUS 1141
JPMORGAN JPMORGAN CHASE BANK 032
JTRUST Bank JTrust Indonesia 095
KALIMANTAN_BARAT BPD Kalimantan Barat/Kalbar 123
KALIMANTAN_BARAT_UUS BPD Kalimantan Barat UUS 1230
KALIMANTAN_SELATAN BPD Kalimantan Selatan/Kalsel 122
KALIMANTAN_SELATAN_UUS BPD Kalimantan Selatan UUS 1220
KALIMANTAN_TENGAH BPD Kalimantan Tengah (Kalteng) 125
KALIMANTAN_TIMUR BPD Kalimantan Timur 124
KALIMANTAN_TIMUR_UUS BPD Kalimantan Timur UUS 1240
KESEJAHTERAAN_EKONOMI Seabank/Bank Kesejahteraan Ekonomi(BKE) 535
LAMPUNG BPD Lampung 121
MALUKU Bank Maluku 131
MANDIRI Bank Mandiri 008
MANDIRI_SYR Bank Syariah Mandiri 451
MANDIRI_TASPEN Bank Mandiri Taspen Pos 5640
MANTAP Bank MANTAP 564
MULTI_ARTA_SENTOSA Bank Multi Arta Sentosa(MAS) 548
MASPION Bank Maspion Indonesia 157
MAYAPADA Bank Mayapada 097
MAYBANK Bank Maybank 016
MAYBANK_SYR Bank Maybank Syariah Indonesia 947
MAYBANK_UUS Bank Maybank Syariah Indonesia UUS 0160
MAYORA Bank Mayora Indonesia 553
MEGA Bank Mega 426
MEGA_SYR Bank Mega Syariah 506
MESTIKA_DHARMA Bank Mestika Dharma 151
METRO_EXPRESS BANK METRO EXPRESS 1520
MNC_INTERNASIONAL Motion/Bank MNC Internasional 485
MUAMALAT Bank Muamalat Indonesia 147
MITRA_NIAGA Bank Mitra Niaga 491
MIZUHO Bank Mizuho Indonesia 048
MUTIARA Bank MUTIARA 10010
MULTICOR Bank MULTICOR 10006
NATIONALNOBU Bank National Nobu 503
NIAGA_SYR BANK NIAGA TBK. SYARIAH 583
NUSA_TENGGARA_BARAT BPD Nusa Tenggara Barat(NTB) 128
NUSA_TENGGARA_BARAT_UUS BPD Nusa Tenggara Barat (NTB) UUS 1280
NUSA_TENGGARA_TIMUR BPD Nusa Tenggara Timur(NTT) 130
NUSANTARA_PARAHYANGAN Bank Nusantara Parahyangan 145
OCBC Bank OCBC NISP 028
OCBC_UUS Bank OCBC NISP UUS 0280
PANIN Bank Panin 019
PANIN_SYR Panin Dubai Syariah 517
PAPUA Bank Papua 132
PERMATA Bank Permata 013
PERMATA_UUS Bank Permata UUS 0130
PRIMA_MASTER Bank Prima Master 520
PUNDI BANK PUNDI INDONESIA 584
QNB_KESAWAN QNB KESAWAN 167
QNB_INDONESIA QNB Indonesia 1670
OKE Bank Oke Indonesia 5260
RABOBANK Rabobank International Indonesia 089
RESONA Bank Resona Perdania 047
RIAU_DAN_KEPRI BPD Riau Dan Kepri 119
RIAU_DAN_KEPRI_UUS BPD Riau Dan Kepri UUS 1190
ROYAL Blu/BCA Digital 5010
SAHABAT_PURBA_DANARTA BANK PURBA DANARTA 5471
SAHABAT_SAMPOERNA Bank Sahabat Sampoerna 523
SBI_INDONESIA Bank SBI Indonesia 498
SHINHAN Bank Shinhan Indonesia 152
SINARMAS Bank Sinarmas 153
SINARMAS_UUS Bank Sinarmas UUS 1530
STANDARD_CHARTERED Standard Chartered Bank 050
SULAWESI Bank Sulteng 134
SULAWESI_TENGGARA Bank Sultra 135
SULSELBAR Bank Sulselbar 126
SULSELBAR_UUS Bank Sulselbar UUS 1260
SULUT BPD Sulawesi Utara(SulutGo) 127
SUMATERA_BARAT BPD Sumatera Barat 118
SUMATERA_BARAT_UUS BPD Sumatera Barat UUS 1180
NAGARI BANK NAGARI 1181
SUMSEL_BABEL BPD Sumsel Babel 120
SUMSEL_DAN_BABEL Bank Sumsel Babel 1200
SUMSEL_DAN_BABEL_UUS Bank Sumsel Dan Babel UUS 1201
SUMUT Bank Sumut 117
SUMUT_UUS Bank Sumut UUS 1170
MITSUI Bank Sumitomo Mitsui Indonesia 045
TOKYO Bank of Tokyo 042
UOB TMRW/Bank UOB Indonesia 023
VICTORIA_INTERNASIONAL Bank Victoria International 566
VICTORIA_SYR Bank Victoria Syariah 405
WOORI Bank Woori Saudara 212
YUDHA_BHAKTI Neo Commerce/Bank Yudha Bhakti(BNC) 490
DAERAH_ISTIMEWA_UUS BPD_Daerah_Istimewa_Yogyakarta_(DIY) 1120
CCB CCB Indonesia 088
RBS Royal Bank of Scotland (RBS) 501
OVO OVO 10001
DANA DANA 10002
GOPAY GOPAY 10003
SHOPEEPAY SHOPEEPAY 10008
LINKAJA LINKAJA 10009

卡转卡  MXN 附加参数

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

代付银行列表

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

Tianci渠道附加说明

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

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

银河附加参数

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

参数名称 类型 是否必须 描述 格式/示例
bank_code string 银行编号 "gcash"
remark string 备注信息 "test"
ttl string 超时时间,以秒为单位 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, EMAIL CPF
cpf string
cpf信息
"test"
to
string to_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: 支出,从账户中支付款项。