翼支付商戶接入規(guī)范條碼支付分冊_第1頁
翼支付商戶接入規(guī)范條碼支付分冊_第2頁
翼支付商戶接入規(guī)范條碼支付分冊_第3頁
翼支付商戶接入規(guī)范條碼支付分冊_第4頁
翼支付商戶接入規(guī)范條碼支付分冊_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

翼支付商戶接入規(guī)范條形碼支付修訂歷史記錄日期版本說明修訂2023.06.081.0初稿林健,張善良2023.07.151.1新增2.1下單業(yè)務(wù)返回碼新增2.2查詢接口新增2.3退款http接口(含分賬)廢棄2.5退款ws接口廢棄2.6分賬退款ws接口新增2.4沖正http接口廢棄2.7沖正ws接口劉永富林健韋家駒2023.07.201.2修訂及完善查詢接口相關(guān)文檔韋家駒2023.07.211.3下單接口返回值調(diào)整。增長HTTP退款和沖正接口的相關(guān)文檔韋家駒20查詢接口增長退款標(biāo)志,及支付賬戶號韋家駒

目錄1. 引言 71.1 編寫目的 71.2 編寫原則 71.3 讀者對象 71.4 需求來源 71.5 術(shù)語定義 72. 條碼支付 72.1 下單支付 72.1.1 接口描述 72.1.2 接口地址 82.1.3 接口參數(shù) 82.1.4 接口響應(yīng) 92.1.5 響應(yīng)示例 102.1.6 接口說明 102.1.7 客戶端測試用例 112.2 查詢 132.2.1 接口描述 132.2.2 接口地址 132.2.3 接口參數(shù) 142.2.4 接口響應(yīng) 142.2.5 響應(yīng)示例 152.2.6 接口說明 152.2.7 客戶端測試用例 162.3 退款 162.3.1 接口描述 162.3.2 接口地址 162.3.3 接口參數(shù) 172.3.4 接口響應(yīng) 182.3.5 響應(yīng)示例 182.3.6 接口說明 182.3.7 客戶端測試用例 192.4 沖正 202.4.1 接口描述 202.4.2 接口地址 202.4.3 接口參數(shù) 202.4.4 接口響應(yīng) 212.4.5 響應(yīng)示例 222.4.6 接口說明 222.4.7 客戶端測試用例 222.5 退款【建議使用2.3】 232.5.1 接口描述 232.5.2 接口地址 232.5.3 接口參數(shù) 242.5.4 接口響應(yīng) 242.5.5 響應(yīng)示例 242.5.6 接口說明 252.5.7 客戶端測試用例 252.6 分賬退款【建議使用2.3】 262.6.1 接口描述 262.6.2 接口地址 262.6.3 接口參數(shù) 262.6.4 接口響應(yīng) 272.6.5 響應(yīng)示例 272.6.6 接口說明 272.6.7 客戶端測試用例 282.7 沖正【建議使用2.4】 282.7.1 接口描述 282.7.2 接口地址 292.7.3 接口參數(shù) 292.7.4 接口響應(yīng) 302.7.5 響應(yīng)示例 302.7.6 接口說明 302.7.7 客戶端測試用例 302.8 交易結(jié)果告知接口 312.8.1 接口描述 312.8.2 接口地址 312.8.3 接口定義 322.8.4 接口說明 333. 條碼支付交互流程 344. 權(quán)限申請 355. 響應(yīng)碼說明 356. 商品信息填寫說明 43

引言編寫目的本文檔的目的是為翼支付條碼產(chǎn)品定義一個(gè)標(biāo)準(zhǔn)接口規(guī)范,以幫助外部商戶更好的接入翼支付網(wǎng)關(guān)平臺系統(tǒng)。編寫原則根據(jù)翼支付系統(tǒng)管理規(guī)范,從業(yè)務(wù)人員的角度對需求的闡述,以及對需求描述的細(xì)化限度。此文檔將在開發(fā)過程隨著需求的變更而更改和修訂。讀者對象本手冊的讀者對象默認(rèn)為:接入翼支付條碼產(chǎn)品的商戶開發(fā)人員。需求來源產(chǎn)品部門術(shù)語定義條碼支付下單支付接口描述接口名稱商戶下單支付接口描述商戶請求翼支付網(wǎng)關(guān),生成訂單且完畢支付接口類型HTTPS傳輸方式Post數(shù)據(jù)編碼Utf-8接口提供者翼支付網(wǎng)關(guān)平臺接口使用者商戶接口地址生產(chǎn)地址/barcode/placeOrder接口參數(shù)屬性含義類型長度必填備注merchantId商戶號n30M由翼支付網(wǎng)關(guān)平臺統(tǒng)一分派subMerchantId子商戶號ans30O由商戶平臺自己分派,在做支付時(shí),可以一并發(fā)送過來,翼支付網(wǎng)關(guān)平臺可以負(fù)責(zé)記錄,如沒有可以不填寫barcode條形碼號n30M商戶POS掃描用戶客戶端條形碼orderNo訂單號an30M由商戶平臺提供,數(shù)字或字母組成orderReqNo訂單請求交易流水號an30M由商戶平臺提供,數(shù)字或字母組成channel渠道n5M默認(rèn)填:05busiType業(yè)務(wù)類型an5M默認(rèn)填:0001orderDate訂單日期n20M由商戶提供,長度14位格式y(tǒng)yyyMMddhhmmssorderAmt訂單總金額n10M單位:分訂單總金額=產(chǎn)品金額+附加金額productAmt產(chǎn)品金額n10M單位:分attachAmt附加金額n10M單位:分goodsName商品名稱ans256O商品信息storeId門店號n10M門店號backUrl后臺返回地址ans255O商戶提供的用于異步接受交易返回結(jié)果的后臺url,商戶可根據(jù)需要填寫ledgerDetail分賬信息ans256O商戶需要在結(jié)算時(shí)進(jìn)行分賬情況,需填寫此字段,詳情見接口說明attach附加信息ans128O商戶附加信息macMAC校驗(yàn)域an256M采用標(biāo)準(zhǔn)的MD5算法,由商戶實(shí)現(xiàn)接口響應(yīng)屬性含義類型長度必填備注success是否成功booleanMTrue:成功False:失敗代表商戶下單的成功與失敗result調(diào)用返回值ans100O當(dāng)success為true時(shí),result為下單詳情,success為false時(shí),result為nullerrorCode錯(cuò)誤碼ans10O當(dāng)success為true時(shí),為null,當(dāng)success為false時(shí),為錯(cuò)誤碼errorMsg錯(cuò)誤描述ans10O當(dāng)success為true時(shí),為null,當(dāng)success為false時(shí),為錯(cuò)誤描述請求成功success為true時(shí)響應(yīng)結(jié)果result為:屬性含義類型長度必填備注merchantId商戶號n30M由翼支付網(wǎng)關(guān)平臺統(tǒng)一分派merchantIdorderNo商戶總訂單號an30M查詢到的商戶訂單號orderNoorderReqNo商戶總訂單請求流水號an30M查詢到的商戶請求流水號orderReqNoorderDate預(yù)留字段始終為nullourTransNo翼支付交易號an30M翼支付生成的內(nèi)部流水號(用戶支付后生成)transAmt訂單金額n10MtransStatus交易狀態(tài)A:請求(支付中)B:成功(支付成功)C:失敗encodeType署名方式n1O1代表MD53代表RSA9代表CA默認(rèn)為1signsign校驗(yàn)域an30M請求及響應(yīng)示例請求參數(shù)示例:merchantId=000&subMerchantId=000&barcode=5886972&orderNo=60&orderReqNo=601&orderDate=49&channel=05&busiType=0001&&orderAmt=1&productAmt=1&attachAmt=0&goodsName=%E6%9D%A1%E7%A0%81%E6%94%AF%E4%BB%98&storeId=202331&backUrl=http%3A%2F%2F%3A8030%2FwebBgNotice.action&ledgerDetail=&attach=&mac=3B5E200FD1EF8988693F242438A32475響應(yīng)參數(shù)示例:成功:{"success":true,"result":{"merchantId":"000","orderNo":"62","orderReqNo":"621","orderDate":null,"transStatus":"B","transAmt":"1","ourTransNo":"","encodeType":"1","sign":"E1E4E5141AB332F0F2E2A1EA0DE32120"},"errorCode":null,"errorMsg":null}失?。簕"success":false,"result":null,"errorCode":"BE300001","errorMsg":"訂單MAC域驗(yàn)證失敗"}接口說明商戶的商戶號由翼支付統(tǒng)一分派,商戶需與翼支付的運(yùn)營人員對接,提供商戶資料,申請正式的商戶號。商戶要保證訂單號的唯一性。訂單請求流水號不能反復(fù),建議以日期時(shí)間(yyyyMMDDhhmmss格式)加一固定長度(不小于6位)流水號組成,如:25+0000001等。訂單流水號和訂單號可以相同。(使用翼支付提供的“流程測試”商戶時(shí)除外,假如相同會(huì)提醒訂單或流水號反復(fù)的錯(cuò)誤)MAC校驗(yàn),保證了交易信息到翼支付網(wǎng)關(guān)平臺的完整性,參與MAC運(yùn)算的字符及其順序如下:順序MERCHANTID=&ORDERNO=123456&ORDERREQNO=1234567&ORDERDATE=&BARCODE=111111&ORDERAMT=1&KEY=123456此處的KEY為商戶的數(shù)據(jù)KEY,可以通過翼支付的統(tǒng)一運(yùn)營地址生成。此數(shù)據(jù)KEY對本文檔其它接口進(jìn)行MAC校驗(yàn)時(shí)同樣合用。規(guī)定:將上述固定順序組織的字符串,參數(shù)名均為大寫,使用標(biāo)準(zhǔn)md5算法進(jìn)行摘要,然后將摘要果轉(zhuǎn)成16進(jìn)制字符串,字符串建議使用大寫,就是校驗(yàn)域MAC的值,并在提交訂單時(shí),將MAC值和訂單信息一起提交到翼支付網(wǎng)關(guān)翼支付網(wǎng)關(guān)平臺。需保證MAC校驗(yàn)時(shí)中的各個(gè)參數(shù),與下單請求時(shí)的參數(shù)完全一致。商戶若需分賬,則填寫ledgerDetail字段,例如:規(guī)則::4|:3|:1說明:訂單總金額4+3+1=8分,商戶分賬4分,每組相應(yīng)關(guān)系之間“|”分隔分賬權(quán)限與一般支付權(quán)限不同。商戶分賬支付的權(quán)限需要額外申請,并且在結(jié)算時(shí)翼支付將形成各個(gè)分賬商戶的對賬文獻(xiàn)。下單支付接口返回的success值并不是最終支付結(jié)果。支付結(jié)果在下單成功情況下,result的transStatus字段代表支付結(jié)果。返回結(jié)果中的翼支付網(wǎng)關(guān)流水號ourTransNo,當(dāng)用戶完畢支付后才會(huì)生成。對于有密支付情況,由于用戶未實(shí)際支付,返回的流水號為空字符串。商戶可在查詢接口獲得該流水號。9.接口響應(yīng)中的sign值是網(wǎng)關(guān)根據(jù)返回結(jié)果進(jìn)行的前面,保證收到結(jié)果的完整性,商戶可以根據(jù)需要進(jìn)行驗(yàn)簽,目前署名默認(rèn)為MAC形式,參與MAC運(yùn)算的字符及其順序如下:順序:MERCHANTID=&ORDERNO=&ORDERREQNO=20231001&ORDERDATE=null&OURTRANSNO=&TRANSAMT=10&TRANSSTATUS=B&ENCODETYPE=1&KEY=123456ORDERDATE在下單接口返回時(shí)暫未使用,目前始終為null??蛻舳藴y試用例注:此用例僅供參考importmons.util.CryptTool;importorg.apache.http.Consts;importorg.apache.http.HttpEntity;importorg.apache.http.HttpStatus;importorg.apache.http.NameValuePair;importorg.apache.http.client.config.RequestConfig;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.util.EntityUtils;import.ssl.SSLContext;importspace.QName;importjava.security.cert.CertificateException;importjava.security.cert.X509Certificate;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.apache.http.conn.ssl.SSLConnectionSocketFactory;importorg.apache.http.conn.ssl.SSLContextBuilder;importorg.apache.http.conn.ssl.TrustStrategy;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;publicclassTestClient{publicstaticvoidmain(String[]args)throwsException{StringmerchantId="000";StringorderNo="22";StringorderReqNo="221";StringorderDate="49";Stringbarcode="204002";StringorderAmt="1";StringBuildersb=newStringBuilder();//組裝mac加密明文串sb.append("MERCHANTID=").append(merchantId);sb.append("&ORDERNO=").append(orderNo);sb.append("&ORDERREQNO=").append(orderReqNo);sb.append("&ORDERDATE=").append(orderDate);sb.append("&BARCODE=").append(barcode);sb.append("&ORDERAMT=").append(orderAmt);sb.append("&KEY=").append("111");//此處是商戶的keyStringmac=CryptTool.md5Digest(sb.toString());//進(jìn)行md5加密(商戶自己封裝MD5加密工具類,此處只提供參考)Map<String,String>param=newHashMap<String,String>();//組裝請求參數(shù)param.put("merchantId",merchantId);param.put("subMerchantId",merchantId);param.put("barcode",barcode);param.put("orderNo",orderNo);param.put("orderReqNo",orderReqNo);param.put("orderDate",orderDate);param.put("channel","05");param.put("busiType","0001");param.put("TransType","B");param.put("orderAmt",orderAmt);param.put("productAmt","1");param.put("attachAmt","0");param.put("goodsName","條碼支付");param.put("storeId","202331");param.put("backUrl",":8030/webBgNotice.action");param.put("ledgerDetail","");param.put("attach","");param.put("mac",mac);//創(chuàng)建信任證書

CloseableHttpClienthttpClient=createSSLClientDefault();HttpPosthttpPost=null;CloseableHttpResponseresponse=null;try{httpPost=newHttpPost("");List<NameValuePair>paramList=newArrayList<NameValuePair>();for(Stringkey:param.keySet()){paramList.add(newBasicNameValuePair(key,param.get(key)));}httpPost.setEntity(newUrlEncodedFormEntity(paramList,Consts.UTF_8));httpPost.setConfig(RequestConfig.custom().setConnectTimeout(30000).setSocketTimeout(30000).build());response=httpClient.execute(httpPost);HttpEntityentity=response.getEntity();intstatusCode=response.getStatusLine().getStatusCode();if(HttpStatus.SC_OK==statusCode)//假如響應(yīng)碼是200System.out.println(EntityUtils.toString(entity));;}finally{if(response!=null){response.close();}if(httpPost!=null){httpPost.releaseConnection();}httpClient.close();}}}//創(chuàng)建鏈接

publicstaticCloseableHttpClientcreateSSLClientDefault()throwsException{

SSLContextsslContext=newSSLContextBuilder().loadTrustMaterial(null,newAllTrustStrategy()).build();

SSLConnectionSocketFactorysslSf=newSSLConnectionSocketFactory(sslContext);

returnHttpClients.custom().setSSLSocketFactory(sslSf).build();

}

//加載證書

privatestaticclassAllTrustStrategyimplementsTrustStrategy{

publicbooleanisTrusted(X509Certificate[]x509Certificates,Strings)throwsCertificateException{

returntrue;

}

}

}說明當(dāng)使用org.apache.http.client之外的第三方類封裝HTTP請求時(shí),需要注意HTTP請求中的字符串,需要通過URL編碼,其中的中文字符使用UTF-8。HTTP請求中的Content-Type使用application/x-www-form-urlencoded;charset=UTF-8,請求方法為POST。錯(cuò)誤碼錯(cuò)誤碼描述備注BE199999請求參數(shù)有誤檢查HTTP請求相關(guān)代碼BARCODE_VALIDATE_ERROR條形碼驗(yàn)證異常849卡信息解密失敗用戶信息異常5146查詢綁卡信息犯錯(cuò)用戶信息異常4008綁卡信息不存在用戶信息異常-301訂單MAC域驗(yàn)證失敗-302校驗(yàn)訂單犯錯(cuò)檢查訂單金額-304商戶未配置此交易權(quán)限1001商戶未注冊1002商戶未配置密鑰信息檢查數(shù)據(jù)KEY是否申請1003商戶未開通銀行-3061分賬商戶不存在-3062分賬金額有誤-3063分賬金額總和不等于訂單金額-3064分賬商戶父商戶有誤-3065分賬信息不允許有兩個(gè)相同商戶BARCODE_STORE_CODE_IS_EMPTY條碼門店號不能為空BE999999系統(tǒng)繁忙,請稍后再試系統(tǒng)因素,聯(lián)系技術(shù)支協(xié)查訂單查詢接口描述接口名稱訂單查詢接口接口描述為商戶提供入口接口類型HTTPS傳輸方式POST數(shù)據(jù)編碼Utf-8接口提供者翼支付網(wǎng)關(guān)平臺接口使用者商戶業(yè)務(wù)平臺接口地址生產(chǎn)地址/query/queryOrder接口參數(shù)屬性含義類型長度必填備注merchantId商戶號n30M由翼支付網(wǎng)關(guān)平臺統(tǒng)一分派orderNo訂單號an30M由商戶平臺提供,數(shù)字或字母組成orderReqNo訂單請求交易流水號an30M由商戶平臺提供,數(shù)字或字母組成orderDate訂單日期an20M日期格式:yyyyMMddmacmac校驗(yàn)域an256M默認(rèn)為0,當(dāng)加密方式為1時(shí)故意義,采用標(biāo)準(zhǔn)的MD5算法,由商戶實(shí)現(xiàn)接口響應(yīng)參數(shù)含義類型和長度備注success是否查詢到訂單booleanTrue:成功False:失敗result調(diào)用返回值ans100當(dāng)success為true時(shí)取此值,result中包含的信息見下表errorCode錯(cuò)誤碼ans10當(dāng)success為false時(shí)取此值,result為空errorMsg錯(cuò)誤描述ans10當(dāng)success為false時(shí)取此值,result為空refundFlag退款標(biāo)記n10代表為退款,1已退款2部分退款3已沖正查詢成功success為true時(shí)響應(yīng)結(jié)果result(MAP)為:參數(shù)含義類型長度必填備注merchantId商戶號n30M由翼支付網(wǎng)關(guān)平臺統(tǒng)一分派orderNo商戶總訂單號an30M查詢到的商戶訂單號orderReqNo商戶總訂單請求流水號an30M查詢到的商戶請求流水號orderDate商戶下單時(shí)間n20MyyyyMMDDHHmmss查詢到的訂單實(shí)際日期,也許與查詢請求日期不同ourTransNo網(wǎng)關(guān)平臺流水號n30M翼支付生成的內(nèi)部流水號transAmt交易金額n10M單位:分transStatus交易狀態(tài)n1MA:請求(支付中)B:成功(支付成功)C:失敗G:訂單作廢encodeType加密方式n1O1代表MD53代表RSA9代表CA默認(rèn)為1signsign校驗(yàn)域anM驗(yàn)證署名,署名方式根據(jù)encodeType決定refundFlag退款標(biāo)記n1M0代表為退款,1已退款2部分退款3已沖正customerID客戶支付手機(jī)號n11M客戶條碼消費(fèi)時(shí)的支付手機(jī)號,中間4位被隱去,用*代替如180****2687請求及響應(yīng)示例請求示例orderReqNo=&orderNo=07&orderDate=20230713&mac=880D9E9DE657E3C351697D3B6CFE5626&merchantId=000HTTP請求對參數(shù)的順序沒有規(guī)定,保證參數(shù)名稱完全一致(涉及大小寫)。響應(yīng)示例訂單存在{"success":true,"result":{"merchantId":"000","orderNo":"23","orderReqNo":"23000001","orderDate":"58","transStatus":"B","transAmt":"1","ourTransNo":"","encodeType":"1","sign":"B0C948619CB5895FEABEB","customerID":"180****2687","refundFlag":"0"},"errorCode":null,"errorMsg":null}訂單不存在

{"success":false,"result":null,"errorCode":"BE110062","errorMsg":"沒有找到符合條件的記錄。"}其它錯(cuò)誤

{"success":false,"result":null,"errorCode":"BE199999","errorMsg":"訂單日期格式有誤"}接口響應(yīng)的格式為JSON。接口說明MAC校驗(yàn),保證了交易信息到翼支付網(wǎng)關(guān)平臺的完整性,參與MAC運(yùn)算的字符及其順序如下:順序:MERCHANTID=&ORDERNO=&ORDERREQNO=20231001&ORDERDATE=&KEY=123456規(guī)定:將上述固定順序組織的字符串,參數(shù)名均為大寫,使用標(biāo)準(zhǔn)md5算法進(jìn)行摘要,然后將摘要果轉(zhuǎn)成16進(jìn)制字符串,字符串建議使用大寫,就是校驗(yàn)域MAC的值,并在提交訂單時(shí),將MAC值和訂單信息一起提交到翼支付網(wǎng)關(guān)翼支付網(wǎng)關(guān)平臺。KEY值為商戶的數(shù)據(jù)KEY。接口響應(yīng)的success字段標(biāo)記的是查詢過程的結(jié)果,并不代表交易的成功和失敗。交易的結(jié)果當(dāng)success為true時(shí),取result中的tranStatus字段。字段為A,代表請求狀態(tài),表白用戶正在輸入密碼或交易自身在進(jìn)行中。字段為B時(shí),代表本次交易成功。字段為C時(shí),代表本次交易失敗。字段為G時(shí),代表本次交易已被作廢。訂單請求時(shí),為了加快查詢的速度,需給定下單的日期,實(shí)際的查詢范圍,會(huì)在給定日期的前一天到給定日期的后一天范圍內(nèi)進(jìn)行。接口響應(yīng)中的sign值是網(wǎng)關(guān)根據(jù)返回結(jié)果進(jìn)行的前面,保證收到結(jié)果的完整性,商戶可以根據(jù)需要進(jìn)行驗(yàn)簽,目前署名默認(rèn)為MAC形式,參與MAC運(yùn)算的字符及其順序如下:順序:MERCHANTID=&ORDERNO=&ORDERREQNO=20231001&ORDERDATE=0000&OURTRANSNO=&TRANSAMT=10&TRANSSTATUS=B&ENCODETYPE=1&KEY=123456客戶端測試用例importmons.util.CryptTool;importorg.apache.http.Consts;importorg.apache.http.HttpEntity;importorg.apache.http.HttpStatus;importorg.apache.http.NameValuePair;importorg.apache.http.client.config.RequestConfig;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.util.EntityUtils;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;import.ssl.SSLContext;importspace.QName;importjava.security.cert.CertificateException;importjava.security.cert.X509Certificate;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.apache.http.conn.ssl.SSLConnectionSocketFactory;importorg.apache.http.conn.ssl.SSLContextBuilder;importorg.apache.http.conn.ssl.TrustStrategy;publicclassQueryClient{publicstaticvoidmain(String[]args)throwsException{StringmerchantId="000";StringorderNo="07";StringorderReqNo="";StringorderDate="20230713";StringBuildersb=newStringBuilder();//組裝mac加密明文串sb.append("MERCHANTID=").append(merchantId);sb.append("&ORDERNO=").append(orderNo);sb.append("&ORDERREQNO=").append(orderReqNo);sb.append("&ORDERDATE=").append(orderDate);sb.append("&KEY=").append("111");//此處是商戶的keyStringmac=CryptTool.md5Digest(sb.toString());//進(jìn)行md5加密(商戶自己封裝MD5加密工具類,此處只提供參考)Map<String,String>param=newHashMap<String,String>();//組裝請求參數(shù),參數(shù)名大小寫敏感param.put("merchantId",merchantId);param.put("orderNo",orderNo);param.put("orderReqNo",orderReqNo);param.put("orderDate",orderDate);param.put("mac",mac);//創(chuàng)建信任證書

CloseableHttpClienthttpClient=createSSLClientDefault();HttpPosthttpPost=null;CloseableHttpResponseresponse=null;try{//發(fā)起HTTP的POST請求httpPost=newHttpPost("");List<NameValuePair>paramList=newArrayList<NameValuePair>();for(Stringkey:param.keySet()){paramList.add(newBasicNameValuePair(key,param.get(key)));}//UTF8+URL編碼httpPost.setEntity(newUrlEncodedFormEntity(paramList,Consts.UTF_8));httpPost.setConfig(RequestConfig.custom().setConnectTimeout(30000).setSocketTimeout(30000).build());response=httpClient.execute(httpPost);HttpEntityentity=response.getEntity();intstatusCode=response.getStatusLine().getStatusCode();if(HttpStatus.SC_OK==statusCode)//假如響應(yīng)碼是200System.out.println(EntityUtils.toString(entity));}finally{if(response!=null){response.close();}if(httpPost!=null){httpPost.releaseConnection();}httpClient.close();}}}publicstaticCloseableHttpClientcreateSSLClientDefault()throwsException{

SSLContextsslContext=newSSLContextBuilder().loadTrustMaterial(null,newAllTrustStrategy()).build();

SSLConnectionSocketFactorysslSf=newSSLConnectionSocketFactory(sslContext);

returnHttpClients.custom().setSSLSocketFactory(sslSf).build();

}

//加載證書

privatestaticclassAllTrustStrategyimplementsTrustStrategy{

publicbooleanisTrusted(X509Certificate[]x509Certificates,Strings)throwsCertificateException{

returntrue;

}

}

}錯(cuò)誤碼錯(cuò)誤碼描述備注1002商戶未配置密鑰信息檢查數(shù)據(jù)KEY是否申請BE300001訂單MAC域驗(yàn)證失敗BE199999請求參數(shù)有誤具體的參數(shù)錯(cuò)誤,在描述中有體現(xiàn)BE110062沒有找到符合條件的記錄。BE999999系統(tǒng)繁忙,請稍后再試系統(tǒng)因素,聯(lián)系技術(shù)支協(xié)查普通退款接口描述接口名稱支付交易普通退款接口接口描述通過調(diào)用退款接口向翼支付網(wǎng)關(guān)平臺發(fā)出退款請求完畢退款。接口類型HTTPS數(shù)據(jù)編碼UTF-8接口提供者翼支付網(wǎng)關(guān)平臺接口使用者商戶接口地址生產(chǎn)地址/refund/commonRefund接口參數(shù)屬性含義類型長度必填備注merchantId商戶代碼n20M由翼支付網(wǎng)關(guān)平臺統(tǒng)一分派給各接入商戶subMerchantId商戶子代碼ans20O商戶子代碼如沒有則填空merchantPwd商戶調(diào)用密碼an20M商戶執(zhí)行時(shí)需填入相應(yīng)密碼oldOrderNo原扣款訂單號an30M原扣款成功的訂單號oldOrderReqNo原訂單請求支付流水號an30M原扣款成功的請求支付流水號refundReqNo退款流水號an30M該流水在商戶處必須是唯一的,并且每次發(fā)起退款時(shí),都必須是唯一的refundReqDate退款請求日期n14MyyyyMMDDtransAmt退款交易金額n12M單位為分,小于等于原訂單金額ledgerDetail分賬明細(xì)n1024O分賬示例::10|:10分賬規(guī)則:父商戶可以全額退款,子商戶的分賬退款金額必須小于支付分賬金額,分賬金額不能為0。channel渠道n5M01:WEB02:WAP04:語音05:客戶端macMac校驗(yàn)域an32Mmd5摘要bgUrl退款回調(diào)地址ans256O商戶的退款回調(diào)地址,當(dāng)退款受理成功后,會(huì)有回調(diào)消息以HTTP形式發(fā)送至商戶接口響應(yīng)屬性含義類型長度必填備注success是否成功booleanMtrue:成功false:失敗result調(diào)用返回值ans100O預(yù)留字段errorCode錯(cuò)誤碼ans10O當(dāng)success為true時(shí),為null,當(dāng)success為false時(shí),為錯(cuò)誤碼errorMsg錯(cuò)誤描述ans10O當(dāng)success為true時(shí),為null,當(dāng)success為false時(shí),為錯(cuò)誤描述請求響應(yīng)示例請求示例oldOrderReqNo=&oldOrderNo=07&&mac=880D9E9DE657E3C351697D3B6CFE5626&merchantId=000&transAmt=1&channel=01&refundReqNo=r&refundReqDate=20230708&merchantPwd=123456響應(yīng)示例成功{"success":true,"result":null,"errorCode":null,"errorMsg":null。"}失敗{"success":false,"result":null,"errorCode":"BE110062","errorMsg":"沒有找到符合條件的記錄。"}接口說明商戶要保證退款流水號的唯一性。MAC校驗(yàn),保證了交易信息到翼支付網(wǎng)關(guān)平臺的完整性,參與MAC運(yùn)算的字符及其順序如下:MERCHANTID=&MERCHANTPWD=123456&OLDORDERNO=123456&OLDORDERREQNO=1234567&REFUNDREQNO=&REFUNDREQDATE=20230720&TRANSAMT=1&LEDGERDETAIL=:1&KEY=123456商戶業(yè)務(wù)平臺將上述固定順序組織的字符串,參數(shù)名均為大寫,使用標(biāo)準(zhǔn)md5算法進(jìn)行摘要,然后將摘要果轉(zhuǎn)成16進(jìn)制字符串,字符串建議使用大寫,就是校驗(yàn)域MAC的值,將MAC值和訂單信息調(diào)用接口時(shí),一起提供應(yīng)翼支付網(wǎng)關(guān)平臺??蛻舳藴y試用例importmons.util.CryptTool;importorg.apache.http.Consts;importorg.apache.http.HttpEntity;importorg.apache.http.HttpStatus;importorg.apache.http.NameValuePair;importorg.apache.http.client.config.RequestConfig;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.util.EntityUtils;mport.ssl.SSLContext;importspace.QName;importjava.security.cert.CertificateException;importjava.security.cert.X509Certificate;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.apache.http.conn.ssl.SSLConnectionSocketFactory;importorg.apache.http.conn.ssl.SSLContextBuilder;importorg.apache.http.conn.ssl.TrustStrategy;publicclassTestClient{publicstaticvoidmain(String[]args)throwsException{StringmerchantId="000";StringmerchantPwd="111";StringoldOrderNo="31";StringoldOrderReqNo="231";StringrefundReqNo="49";StringrefundReqDate="20230720";StringtransAmt="1";Stringchannel="02";StringledgerDetail="000:1";StringBuildersb=newStringBuilder();//組裝mac加密明文串sb.append("MERCHANTID=").append(merchantId);sb.append("&MERCHANTPWD=").append(merchantPwd);sb.append("&OLDORDERNO=").append(oldOrderNo);sb.append("&OLDORDERREQNO=").append(oldOrderReqNo);sb.append("&REFUNDREQNO=").append(refundReqNo);sb.append("&REFUNDREQDATE=").append(refundReqDate);sb.append("&TRANSAMT=").append(transAmt);sb.append("&LEDGERDETAIL=").append(ledgerDetail);sb.append("&KEY=").append("111");//此處是商戶的keyStringmac=CryptTool.md5Digest(sb.toString());//進(jìn)行md5加密(商戶自己封裝MD5加密工具類,此處只提供參考)Map<String,String>param=newHashMap<String,String>();//組裝請求參數(shù)param.put("merchantId",merchantId);param.put("merchantPwd",merchantPwd);param.put("oldOrderNo",oldOrderNo);param.put("oldOrderReqNo",oldOrderReqNo);param.put("refundReqNo",refundReqNo);param.put("refundReqDate",refundReqDate);param.put("transAmt",transAmt);param.put("channel",channel);param.put("ledgerDetail",ledgerDetail);param.put("mac",mac);//創(chuàng)建信任證書

CloseableHttpClienthttpClient=createSSLClientDefault();HttpPosthttpPost=null;CloseableHttpResponseresponse=null;try{httpPost=newHttpPost("");List<NameValuePair>paramList=newArrayList<NameValuePair>();for(Stringkey:param.keySet()){paramList.add(newBasicNameValuePair(key,param.get(key)));}httpPost.setEntity(newUrlEncodedFormEntity(paramList,Consts.UTF_8));httpPost.setConfig(RequestConfig.custom().setConnectTimeout(30000).setSocketTimeout(30000).build());response=httpClient.execute(httpPost);HttpEntityentity=response.getEntity();intstatusCode=response.getStatusLine().getStatusCode();if(HttpStatus.SC_OK==statusCode)//假如響應(yīng)碼是200System.out.println(EntityUtils.toString(entity));}finally{if(response!=null){response.close();}if(httpPost!=null){httpPost.releaseConnection();}httpClient.close();}}}//創(chuàng)建鏈接publicstaticCloseableHttpClientcreateSSLClientDefault()throwsException{

SSLContextsslContext=newSSLContextBuilder().loadTrustMaterial(null,newAllTrustStrategy()).build();

SSLConnectionSocketFactorysslSf=newSSLConnectionSocketFactory(sslContext);

returnHttpClients.custom().setSSLSocketFactory(sslSf).build();

}

//加載證書

privatestaticclassAllTrustStrategyimplementsTrustStrategy{

publicbooleanisTrusted(X509Certificate[]x509Certificates,Strings)throwsCertificateException{

returntrue;

}

}

}錯(cuò)誤碼錯(cuò)誤碼描述備注-309校驗(yàn)商戶調(diào)用密碼犯錯(cuò)-301校驗(yàn)商戶MAC校驗(yàn)域犯錯(cuò)1002商戶未配置密鑰信息BE100002受理機(jī)構(gòu)代碼為空BE110028分賬信息有誤BE110062沒有找到符合條件的記錄。原訂單不存在BE199999請求參數(shù)有誤具體的參數(shù)錯(cuò)誤,在描述中有體現(xiàn)BE300000商戶不存在BE300006受理機(jī)構(gòu)未配置此交易權(quán)限原支付機(jī)構(gòu)不支持退款BE300007商戶未配置此交易權(quán)限商戶沒有給定渠道的普通退款權(quán)限BE300012分賬金額總和不等于訂單總金額BE300013商戶IP驗(yàn)證異常BE300018訂單不支持部分扣款原訂單支付機(jī)構(gòu)不支持部分退款BE301001訂單金額出現(xiàn)異常,交易失敗退款金額不符合規(guī)定BE301007不支持批量支付訂單的退款,退款失敗BE301008訂單的業(yè)務(wù)類型不支持退款,退款失敗BE301009訂單狀態(tài)不為成功,退款失敗BE301010退款訂單受理中,退款失敗BE301011訂單已退款或沖正,退款失敗BE999999系統(tǒng)繁忙,請稍后再試系統(tǒng)因素,聯(lián)系技術(shù)支協(xié)查沖正暫未上線,預(yù)計(jì)8.11暫未上線,預(yù)計(jì)8.11接口描述接口名稱支付交易沖正接口接口描述通過調(diào)用退款接口向翼支付網(wǎng)關(guān)平臺發(fā)出沖正請求完畢沖正。接口類型HTTPS數(shù)據(jù)編碼UTF-8接口提供者翼支付網(wǎng)關(guān)平臺接口使用者商戶接口地址生產(chǎn)地址/reverse/reverse接口參數(shù)屬性含義類型長度必填備注merchantId商戶代碼n20M由翼支付網(wǎng)關(guān)平臺統(tǒng)一分派給各接入商戶subMerchantId商戶子代碼ans20O商戶子代碼如沒有則填空merchantPwd商戶調(diào)用密碼an20M商戶執(zhí)行時(shí)需填入相應(yīng)密碼oldOrderNo原扣款訂單號an30M原扣款成功的訂單號oldOrderReqNo原訂單請求支付流水號an30M原扣款成功的請求支付流水號refundReqNo退款流水號an30M該流水在商戶處必須是唯一的,并且每次發(fā)起退款時(shí),都必須是唯一的refundReqDate退款請求日期n14MyyyyMMDDtransAmt沖正金額n12M單位為分,必須為原訂單金額channel渠道n5M01:WEB02:WAP04:語音05:客戶端macMac校驗(yàn)域an32Mmd5摘要接口響應(yīng)屬性含義類型長度必填備注success是否成功booleanMtrue:成功false:失敗result調(diào)用返回值ans100O預(yù)留字段errorCode錯(cuò)誤碼ans10O當(dāng)success為true時(shí),為null,當(dāng)success為false時(shí),為錯(cuò)誤碼errorMsg錯(cuò)誤描述ans10O當(dāng)success為true時(shí),為null,當(dāng)success為false時(shí),為錯(cuò)誤描述響應(yīng)示例請求示例oldOrderReqNo=&oldOrderNo=07&&mac=880D9E9DE657E3C351697D3B6CFE5626&merchantId=000&transAmt=1&channel=01&refundReqNo=r&refundReqDate=20230708&merchantPwd=123456響應(yīng)示例成功{"success":true,"result":null,"errorCode":null,"errorMsg":null。"}失敗{"success":false,"result":null,"errorCode":"BE110062","errorMsg":"沒有找到符合條件的記錄。"}接口說明商戶要保證沖正流水號的唯一性。沖正與退款接口不同在于,沖正接口對于除成功狀態(tài)外的交易,可以使交易作廢。當(dāng)交易已經(jīng)成功時(shí),沖正接口會(huì)申請退款。沖正接口的調(diào)用時(shí)間僅限于原交易發(fā)生的當(dāng)天,退款不受此限制。MAC校驗(yàn),保證了交易信息到翼支付網(wǎng)關(guān)平臺的完整性,參與MAC運(yùn)算的字符及其順序如下:MERCHANTID=&MERCHANTPWD=123456&OLDORDERNO=123456&OLDORDERREQNO=1234567&REFUNDREQNO=&REFUNDREQDATE=20230720&TRANSAMT=1&KEY=123456商戶業(yè)務(wù)平臺將上述固定順序組織的字符串,參數(shù)名均為大寫,使用標(biāo)準(zhǔn)md5算法進(jìn)行摘要,然后將摘要結(jié)果轉(zhuǎn)成16進(jìn)制字符串,字符串建議使用大寫,就是校驗(yàn)域MAC的值,將MAC值和訂單信息調(diào)用接口時(shí),一起提供應(yīng)翼支付網(wǎng)關(guān)平臺??蛻舳藴y試用例importmons.util.CryptTool;importorg.apache.http.Consts;importorg.apache.http.HttpEntity;importorg.apache.http.HttpStatus;importorg.apache.http.NameValuePair;importorg.apache.http.client.config.RequestConfig;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.impl.client.CloseableHttpClient;importorg.apache.http.impl.client.HttpClients;importorg.apache.http.message.BasicNameValuePair;importorg.apache.http.util.EntityUtils;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;publicclassTestClient{publicstaticvoidmain(String[]args)throwsException{StringmerchantId="000";StringmerchantPwd="111";StringoldOrderNo="31";StringoldOrderReqNo="231";StringrefundReqNo="49";StringrefundReqDate="20230720";StringtransAmt="1";Stringchannel="02";StringBuildersb=newStringBuilder();//組裝mac加密明文串sb.append("MERCHANTID=").append(merchantId);sb.append("&MERCHANTPWD=").append(merchantPwd);sb.append("&OLDORDERNO=").append(oldOrderNo);sb.append("&OLDORDERREQNO=").append(oldOrderReqNo);sb.append("&REFUNDREQNO=").append(refundReqNo);sb.append("&REFUNDREQDATE=").append(refundReqDate);sb.append("&TRANSAMT=").append(transAmt);sb.append("&KEY=").append("111");//此處是商戶的keyStringmac=CryptTool.md5Digest(sb.toString());//進(jìn)行md5加密(商戶自己封裝MD5加密工具類,此處只提供參考)Map<String,String>param=newHashMap<String,String>();//組裝請求參數(shù)param.put("merchantId",merchantId);param.put("merchantPwd",merchantPwd);param.put("oldOrderNo",oldOrderNo);param.put("oldOrderReqNo",oldOrderReqNo);param.put("refundReqNo",refundReqNo);param.put("refundReqDate",refundReqDate);param.put("transAmt",transAmt);param.put("channel",channel);param.put("mac",mac);CloseableHttpClienthttpClient=HttpClients.createDefault();HttpPosthttpPost=null;CloseableHttpResponseresponse=null;try{httpPost=newHttpPost("");List<NameValuePair>paramList=newArrayList<NameValuePair>();for(Stringkey:param.keySet()){paramList.add(newBasicNameValuePair(key,param.get(key)));}httpPost.setEntity(newUrlEncodedFormEntity(paramList,Consts.UTF_8));httpPost.setConfig(RequestConfig.custom().setConnectTimeout(30000).setSocketTimeout(30000).build());response=httpClient.execute(httpPost);HttpEntityentity=response.getEntity();intstatusCode=response.getStatusLine().getStatusCode();if(HttpStatus.SC_OK==statusCode)//假如響應(yīng)碼是200System.out.println(EntityUtils.toString(entity));}finally{if(response!=null){response.close();}if(httpPost!=null){httpPost.releaseConnection();}httpClient.close();}}}錯(cuò)誤碼錯(cuò)誤碼描述備注-309校驗(yàn)商戶調(diào)用密碼犯錯(cuò)-301校驗(yàn)商戶MAC校驗(yàn)域犯錯(cuò)1002商戶未配置密鑰信息BE100002受理機(jī)構(gòu)代碼為空BE110028分賬信息有誤BE110062沒有找到符合條件的記錄。原訂單不存在BE199999請求參數(shù)有誤具體的參數(shù)錯(cuò)誤,在描述中有體現(xiàn)BE300000商戶不存在BE300006受理機(jī)構(gòu)未配置此交易權(quán)限原支付機(jī)構(gòu)不支持退款BE300007商戶未配置此交易權(quán)限商戶沒有給定渠道的普通退款權(quán)限BE300012分賬金額總和不等于訂單總金額BE300013商戶IP驗(yàn)證異常BE300018訂單不支持部分扣款原訂單支付機(jī)構(gòu)不支持部分退款BE301001訂單金額出現(xiàn)異常,交易失敗退款金額不符合規(guī)定BE301007不支持批量支付訂單的退款,退款失敗BE301008訂單的業(yè)務(wù)類型不支持退款,退款失敗BE301009訂單狀態(tài)不為成功,退款失敗BE301010退款訂單受理中,退款失敗BE301011訂單已退款或沖正,退款失敗BE301012訂單不為未退款,沖正失敗BE301013訂單狀態(tài)為作廢,沖正失敗BE301014原訂單不為當(dāng)天訂單,沖正失敗BE999999系統(tǒng)繁忙,請稍后再試系統(tǒng)因素,聯(lián)系技術(shù)支協(xié)查退款【建議使用2.3】接口描述接口名稱

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論