订单接口
包含代收/代付/充值/结算等订单接口
请求
请求地址
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 附加参数
| 参数名称 | 类型 | 是否必须 | 描述 | 格式/示例 | 
|---|---|---|---|---|
| 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 附加参数
| 参数名称 | 类型 | 是否必须 | 描述 | 格式/示例 | 
|---|---|---|---|---|
| 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 
代码示例
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: 支出,从账户中支付款项。