联动开发文档
综述
平台采用JAVA语言开发,信息交互采用HTTP协议,以JSON格式进行交互,基于RSA 1024算法保障信息交互安全性。 密钥格式:PKCS8 测试环境返回数据utf-8编码。生产上GBK编码 ** 一定要注意
术语说明
请求发起方:一般指用户,用户(商户或服务商)使用平台功能,发起对平台接口调用时的主动发起者。
请求接收方:一般指平台,平台在接收到发起方请求后,接收请求进行响应。
密文串: 待加密字符串通过公钥加密形成的密文串使用base64进行编码,并以UTF-8为标准转化成字符串
交互说明
联动生成两对秘钥对,其中一对为平台秘钥对,另一对为服务商秘钥对
平台密钥对(公钥、私钥),将【平台公钥】发给服务商。
服务商密钥对(公钥、私钥),将【服务商私钥】发给服务商。
服务商调用平台:
服务商使用【平台公钥】对字段进行加密,平台使用【平台私钥】进行字段解密。
平台调用服务商:
平台使用【服务商公钥】对字段进行加密,服务商使用【服务商私钥】进行字段解密。
请求加密
【1】明文
根据接口文档中的字段描述,对加密字段进行处理
{`` "rpid":"41509208",`` "card_screen_num":"6222600260001072555"``}
【2】密文
{`` "rpid":"41509208",`` "card_screen_num":"CAVXXa+ynpCDov7YNCNYtn1dvePG7b/ZtzeoprQX2fUao3ClZubsnNa3htSpyM/6+EKDHYisA5pOvnH9oZPGFhWORbAquR1gBm2Fxj0Uz74aRsp1kEwVkGlQKPCLlGGHjEm4pz8UHIMXg4nLheQxs4IplWwmyjfus/nw9w7aJI0="``}
加解密示例
public static void main(String[] args) {`` try {`` // 生成密钥对`` KeyPair keyPair = getKeyPair();`` String privateKey = new String(Base64.encodeBase64(keyPair.getPrivate().getEncoded()));`` String publicKey = new String(Base64.encodeBase64(keyPair.getPublic().getEncoded()));`` System.out.println("私钥:" + privateKey);`` System.out.println("公钥:" + publicKey);`` // RSA加密`` String data = "{\"agentNo\":\"1000125981\"}";`` String encryptData = encrypt(data, getPublicKey(publicKey));`` System.out.println("加密后内容:" + encryptData);`` // RSA解密`` String decryptData = decrypt(encryptData, getPrivateKey(privateKey));`` System.out.println("解密后内容:" + decryptData);`` } catch (Exception e) {`` e.printStackTrace();`` System.out.print("加解密异常");`` }`` }
示例工具类
============================================================================================`` ``package com.UnionPay.buss_gateway.util;`` ``import java.io.ByteArrayOutputStream;``import java.security.KeyFactory;``import java.security.KeyPair;``import java.security.KeyPairGenerator;``import java.security.PrivateKey;``import java.security.PublicKey;``import java.security.Signature;``import java.security.spec.PKCS8EncodedKeySpec;``import java.security.spec.X509EncodedKeySpec;``import javax.crypto.Cipher;``import javax.servlet.http.HttpServletRequest;``import org.apache.commons.codec.binary.Base64;`` ``public class RSAUtil {`` /**`` * RSA最大加密明文大小`` */`` private static final int MAX_ENCRYPT_BLOCK = 117;`` `` /**`` * RSA最大解密密文大小`` */`` private static final int MAX_DECRYPT_BLOCK = 128;`` `` /**`` * 获取密钥对`` * @return 密钥对`` */`` public static KeyPair getKeyPair() throws Exception {`` KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");`` generator.initialize(1024);`` return generator.generateKeyPair();`` }`` `` /**`` * 获取私钥`` * @param privateKey 私钥字符串`` * @return`` */`` public static PrivateKey getPrivateKey(String privateKey) throws Exception {`` KeyFactory keyFactory = KeyFactory.getInstance("RSA");`` byte[] decodedKey = Base64.decodeBase64(privateKey.getBytes());`` PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(decodedKey);`` return keyFactory.generatePrivate(keySpec);`` }`` `` /**`` * 获取公钥`` * @param publicKey 公钥字符串`` * @return`` */`` public static PublicKey getPublicKey(String publicKey) throws Exception {`` KeyFactory keyFactory = KeyFactory.getInstance("RSA");`` byte[] decodedKey = Base64.decodeBase64(publicKey.getBytes());`` X509EncodedKeySpec keySpec = new X509EncodedKeySpec(decodedKey);`` return keyFactory.generatePublic(keySpec);`` }`` `` /**`` * RSA加密`` * @param data 待加密数据`` * @param publicKey 公钥`` * @return`` */`` public static String encrypt(String data, PublicKey publicKey) throws Exception {`` Cipher cipher = Cipher.getInstance("RSA");`` cipher.init(Cipher.ENCRYPT_MODE, publicKey);`` int inputLen = data.getBytes().length;`` ByteArrayOutputStream out = new ByteArrayOutputStream();`` int offset = 0;`` byte[] cache;`` int i = 0;`` // 对数据分段加密`` while (inputLen - offset > 0) {`` if (inputLen - offset > MAX_ENCRYPT_BLOCK) {`` cache = cipher.doFinal(data.getBytes(), offset, MAX_ENCRYPT_BLOCK);`` } else {`` cache = cipher.doFinal(data.getBytes(), offset, inputLen - offset);`` }`` out.write(cache, 0, cache.length);`` i++;`` offset = i * MAX_ENCRYPT_BLOCK;`` }`` byte[] encryptedData = out.toByteArray();`` out.close();`` // 获取加密内容使用base64进行编码,并以UTF-8为标准转化成字符串`` // 加密后的字符串`` return new String(Base64.encodeBase64String(encryptedData));`` }`` `` /**`` * RSA解密`` * @param data 待解密数据`` * @param privateKey 私钥`` * @return`` */`` public static String decrypt(String data, PrivateKey privateKey) throws Exception {`` Cipher cipher = Cipher.getInstance("RSA");`` cipher.init(Cipher.DECRYPT_MODE, privateKey);`` byte[] dataBytes = Base64.decodeBase64(data);`` int inputLen = dataBytes.length;`` ByteArrayOutputStream out = new ByteArrayOutputStream();`` int offset = 0;`` byte[] cache;`` int i = 0;`` // 对数据分段解密`` while (inputLen - offset > 0) {`` if (inputLen - offset > MAX_DECRYPT_BLOCK) {`` cache = cipher.doFinal(dataBytes, offset, MAX_DECRYPT_BLOCK);`` } else {`` cache = cipher.doFinal(dataBytes, offset, inputLen - offset);`` }`` out.write(cache, 0, cache.length);`` i++;`` offset = i * MAX_DECRYPT_BLOCK;`` }`` byte[] decryptedData = out.toByteArray();`` out.close();`` // 解密后的内容`` return new String(decryptedData, "UTF-8");`` }`` `` /**`` * 签名`` * @param data 待签名数据`` * @param privateKey 私钥`` * @return 签名`` */`` public static String sign(String data, PrivateKey privateKey) throws Exception {`` byte[] keyBytes = privateKey.getEncoded();`` PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);`` KeyFactory keyFactory = KeyFactory.getInstance("RSA");`` PrivateKey key = keyFactory.generatePrivate(keySpec);`` Signature signature = Signature.getInstance("MD5withRSA");`` signature.initSign(key);`` signature.update(data.getBytes());`` return new String(Base64.encodeBase64(signature.sign()));`` }`` `` /**`` * 验签`` * @param srcData 原始字符串`` * @param publicKey 公钥`` * @param sign 签名`` * @return 是否验签通过`` */`` public static boolean verify(String srcData, PublicKey publicKey, String sign) throws Exception {`` byte[] keyBytes = publicKey.getEncoded();`` X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);`` KeyFactory keyFactory = KeyFactory.getInstance("RSA");`` PublicKey key = keyFactory.generatePublic(keySpec);`` Signature signature = Signature.getInstance("MD5withRSA");`` signature.initVerify(key);`` signature.update(srcData.getBytes());`` return signature.verify(Base64.decodeBase64(sign.getBytes()));`` }`` `` /**`` * 对请求参数加签时进行排序`` * @param obj 请求参数的对象`` * @return 排序后的字符串`` */`` private static String sortParam(Object obj) {`` final TreeMap<String,Object> treeMap = JSON.parseObject(JSON.toJSONString(obj), TreeMap.class);`` StringBuilder buf = new StringBuilder();`` for (Map.Entry<String, Object> param : treeMap.entrySet()) {`` if(param.getKey().equals("sign")){`` continue;`` }`` buf.append(param.getKey()).append("=").append(param.getValue()).append("&");`` }`` buf.setLength(buf.length()-1);`` return buf.toString();`` }``}
1.3.8 注意事项
【1】公私钥
注意检查您的公私钥是由联动优势邮件下发的,请注意上生产后替换测试环境公私钥。
请求地址 : -测试环境 http://111.205.18.100:20002/buss-gateway/gate -生产环境 https://sdmer.umfintech.com/buss-gateway/gate
测试环境请求参数(联调时根据实际情况提供即可) 用户编号:xxxx(联动侧生成,联调的时候加) 品牌编号:xxxxx 一级代理商编号:xxxxx
测试环境公私钥 平台公钥 : MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBLqDjPqTOAbYseIBdKHR/Z8jiTW+rE4Irr/05snXd31b5iA9gY/4acB2tAu1RGYs8YmpQZPFHBrO671/DegAsLEcDLcKDIRCCoeGUmo1cUc0HIPid36HDLIJZwn5J0DqOzMBXMqDKAWqDPhru3NtBYsXvuhv9wutij5eM8NCQxQIDAQAB
平台私钥: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMEuoOM+pM4Btix4gF0odH9nyOJNb6sTgiuv/Tmydd3fVvmID2Bj/hpwHa0C7VEZizxialBk8UcGs7rvX8N6ACwsRwMtwoMhEIKh4ZSajVxRzQcg+J3focMsglnCfknQOo7MwFcyoMoBaoM+Gu7c20Fixe+6G/3C62KPl4zw0JDFAgMBAAECgYAufOUUqm+Ib5sCSqFBScn3GueZpd7YgWJS1xAOAWch1GwesmJY5NcyT4akqs6nNIlwJ5LD8/aoC/HWa2JVLRe7HkLG7b5x9wxfIcIdvxf2KdTN8FDgG1CnekSvAB59uAvXv3K5rWvnfgY30D4yjnRRaJPugAXQkRt9XcZYe5kxRQJBAO7SSWSgUaDvHB16+Qj+EubGJutjtQonU6J2apcutW0P7yfH1Jsavo5xhqgm499aDm613UFnp24FhOBYUbCrR5sCQQDPE+3mMxiPRQ9Y9YZuQldlwHrecxc5CPV5MeGNr99W6w+osk2jwNsYG9cQvAMfi8CVBFnk/DRTgEKYvMjH938fAkEA1iTPVKCAsWrWbgTPe2W/cxjo2xb7xc//qWS/LTLf0ZyBGM2RcUbo6XcYhHzixWrOGC2Q6M3WDsx6GmR3U5Ax0wJANAV9rmcHtHZU9LQ5oVlpO1avh1LCcsGdaWTulPmp0dwbgvXIK2s3n0bfMIULA9HH/6eoLa5uNsvx7wz+I745YQJARJ2s/v4kb42bUGITMBCpIl+57qjsQUZ+QzyqbMB4xPnjCwdbLsWyVnGNPe0u2EZDwbH5DSfVjctb06eo08EoTA==
服务商公钥 : MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDSdSZN/16yc1rbR+3Iah2BCaMS5encty26G1Zzp6D51asgSgyrzLQinLKELKuX2H28hPDH6P8cdP3ZlT7UMp432Q0F7bcLQwk6a/qdj84bPuB2xeB5+Dk4Etq28CmXm78KRDEun5wbYYuhD+sXpPpLFyMcjLubhpAOaHY6cLoggQIDAQAB
服务商私钥 : MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANJ1Jk3/XrJzWttH7chqHYEJoxLl6dy3LbobVnOnoPnVqyBKDKvMtCKcsoQsq5fYfbyE8Mfo/xx0/dmVPtQynjfZDQXttwtDCTpr+p2Pzhs+4HbF4Hn4OTgS2rbwKZebvwpEMS6fnBthi6EP6xek+ksXIxyMu5uGkA5odjpwuiCBAgMBAAECgYBh7mGEqfBG2abNowri134jLXjUsmfAbPy6PT5dUwN1PhgDTnHW/8pS0NfA6YhvgC4CK1pfq+wKMeZt+STjWSqFuUxLUI0rQf3NM4nVOELf6sN/33PI0D1rAI7E2pZhhv1yChbnnls5fdsOt3sN6w47rL1q9XGllOAGB+Sy+1FWgQJBAP/4yrtpgqyAt7YDszWMUlCvXsy8v8K9VC5bF6npLzAjXsbJEnNHY3T0op4gV3FCrJORxGqq4WfHNxrHGTojTsMCQQDSexN3ZxaQR2AuYkrFgT8C2OUtoAgTlbfa4Vs70LE9acOaV9gIT67ZWEx1eIGPnpSd83ZUU6gRTmP/J8kanadrAkEAnqbpoPdoktrFAv+QF+R9MJ1BuMxUXrNSddjn9dwd70w89iCyWtkof9kQ4clR6VVV+bEjeKmpQ9VqBiLZM/umWQJBALxyHPemgHkkrmRY9IDoOrYd4vJ6eUCvpzB82+Yt7sIBU3N4ep7WWMGXYL076yPe40iXlbXiQHNeMAFeaZs+04kCQEZFPjVghUimxrgDRwLYnBQbp8QEmcv9jev/yvZ0fkro3/ICYEhHatak1uiw1q2DDEg7s7e15DS6AYUIoaVjj2Q=
2、商户费率查询
简要描述
· 商户费率查询,商户绑机后才能查询,否则会返回[]
变更历史
日期 | 变更人 | 变更说明 |
---|---|---|
2022-01-17 | 赵建伟 | 费率列表添加特惠费率 |
2022-09-05 | 赵建伟 | 费率列表添加特惠费率(GF) creditGFRate creditGFRateMin creditGFRateMax |
2023-03-02 | 赵建伟 | 费率列表添加特惠费率(PA) creditPARate creditPARateMin creditPARateMax |
2023-09-20 | 张海超 | 费率列表添加特惠费率(MS) creditMSRate creditMSRateMin creditMSRateMax |
2024-03-21 | 赵建伟 | 新增字段 payMethod 支付方式 payMethod = 5 表示钱包费率 |
请求URL:
· http://ip:port/buss-gateway/gate
请求方式
· POST
请求参数说明
名称 | 参数 | 必选 | 数据类型 | 长度 | 说明 |
---|---|---|---|---|---|
服务请求流水 | rpid | 是 | String | 15 | 2字母开头+13位数字 |
用户编号 | userNo | 是 | String | 平台下发 | |
请求路径 | reqPath | 是 | String | /rateApi/getMerchantRate | |
请求参数 | data | 是 | String | RSA公钥加密后的数据 |
名称
参数
必填
说明
品牌编号
brandNo
是
联动生成
代理商编号
agentNoLevelOne
是
联动生成
商户编号
rateObjNo
是
联动生成
返回参数说明
名称 | 参数 | 必选 | 说明 |
---|---|---|---|
服务请求流水 | rpid | 是 | 服务调用标志 |
返回码 | ret_code | 是 | 0000-成功 |
返回信息 | ret_msg | 是 | 操作成功 |
返回数据 | data | 是 | 加密数据 |
名称
参数
必填
说明
商户编号
rateObjNo
是
–
商户费率类型
rateType
是
0[优享] 1[优惠] 3[特惠]
结算类型
settleCycle
是
0-D0、1-T1
支付方式
payMethod
是
5-联动钱包
借记卡费率
debitRate
是
–
借记卡费率,最低
debitRateMin
是
–
借记卡费率,最高
debitRateMax
是
–
借记卡封顶(分),最低
debitCapMin
是
–
借记卡封顶(元),最低
debitCapMinYuan
是
–
借记卡封顶(分),最高
debitCapMax
是
–
借记卡封顶(元),最高
debitCapMaxYuan
是
–
贷记卡费率
creditRate
是
–
贷记卡费率,最低
creditRateMin
是
–
贷记卡费率,最高
creditRateMax
是
–
云闪付借记卡费率
applePayDebitRate
否
–
云闪付借记卡费率,最低
applePayDebitRateMin
否
–
云闪付借记卡费率,最高
applePayDebitRateMax
否
–
云闪付贷记卡费率
applePayCreditRate
否
–
云闪付贷记卡费率,最低
applePayCreditRateMin
否
–
云闪付贷记卡费率,最高
applePayCreditRateMax
否
–
银联二维码费率
unionpayQRRate
否
–
银联二维码费率,最低
unionpayQRRateMin
否
–
银联二维码费率,最高
unionpayQRRateMax
否
–
微信费率
wechatRate
否
–
微信费率,最低
wechatRateMin
否
–
微信费率,最高
wechatRateMin
否
–
支付宝费率
alipayRate
否
–
支付宝费率,最低
alipayRateMin
否
–
支付宝费率,最高
alipayRateMax
否
–
GF特惠贷记卡费率
creditGFRate
否
–
GF特惠贷记卡费率,最低
creditGFRateMin
否
–
GF特惠贷记卡费率,最高
creditGFRateMax
否
–
PA特惠贷记卡费率
creditPARate
否
–
PA特惠贷记卡费率,最低
creditPARateMin
否
–
PA特惠贷记卡费率,最高
creditPARateMax
否
–
MS特惠贷记卡费率
creditMSRate
否
–
Ms特惠贷记卡费率,最低
creditMSRateMin
否
–
MS特惠贷记卡费率,最高
creditMSRateMax
否
–
钱包费率
qbRateList
否
当payMethod=5 并且 rateType = 3 会返
钱包qbRateList说明
名称 | 参数 | 必填 | 说明 |
---|---|---|---|
档位 | lvlNo | 否 | – |
对应档位贷记卡的最小值 | ldqbCreditRateMin | 否 | – |
对应档位贷记卡的最大值 | ldqbCreditRateMax | 否 | – |
对应档位贷记卡费率 | ldqbCreditRate | 否 | – |
对应档位借记卡的最小值 | ldqbDebitRateMin | 否 | – |
对应档位借记卡的最大值 | ldqbDebitRateMax | 否 | – |
对应档位借记卡费率 | ldqbDebitRate | 否 | – |
返回参数示例
{`` "data": "adIwSogd25q6JzDTjS1/RV26umC3R/VxQjqRIoGvvw107Apu24AEzg4t4WvUFHxVu6tpr9/zqGPt4u6tL63zM8EW2hFUeVINxC/Piq5NhHyp2H828mquzVFWdTRxP774313/Uwo1Z1pUccOhq5ZpoXgz1CF5tOlFKhfIPQ4QLCA=", `` "rpid": "aa1111111119112", `` "ret_msg": "操作成功!", `` "ret_code": "0000"``}
返回参数data说明
{`` "rateList": [{`` "rateObjNo": "115293090107465",`` "rateType": 0,`` "settleCycle": 0,`` "debitRate": 0.6,`` "debitRateMin": 0.49,`` "debitRateMax": 0.6,`` "debitCap": 2500,`` "debitCapYuan": 25.00,`` "debitCapMin": 1500,`` "debitCapMinYuan": 15.00,`` "debitCapMax": 3000,`` "debitCapMaxYuan": 30.00,`` "creditRate": 0.6,`` "creditRateMin": 0.505,`` "creditRateMax": 0.7,`` "applePayDebitRate": 0.38,`` "applePayDebitRateMin": 0.36,`` "applePayDebitRateMax": 0.38,`` "applePayCreditRate": 0.38,`` "applePayCreditRateMin": 0.36,`` "applePayCreditRateMax": 0.38,`` "unionpayQRRate": 0.38,`` "unionpayQRRateMin": 0.36,`` "unionpayQRRateMax": 0.38,`` "wechatRate": 0.38,`` "wechatRateMin": 0.38,`` "wechatRateMax": 0.38,`` "alipayRate": 0.38,`` "alipayRateMin": 0.38,`` "alipayRateMax": 0.38,`` "payMethod": 0`` }, {`` "rateObjNo": "115293090107465",`` "rateType": 0,`` "settleCycle": 1,`` "debitRate": 0.6,`` "debitRateMin": 0.49,`` "debitRateMax": 0.6,`` "debitCap": 2500,`` "debitCapYuan": 25.00,`` "debitCapMin": 1500,`` "debitCapMinYuan": 15.00,`` "debitCapMax": 3000,`` "debitCapMaxYuan": 30.00,`` "creditRate": 0.6,`` "creditRateMin": 0.505,`` "creditRateMax": 0.7,`` "applePayDebitRate": 0.38,`` "applePayDebitRateMin": 0.36,`` "applePayDebitRateMax": 0.38,`` "applePayCreditRate": 0.38,`` "applePayCreditRateMin": 0.36,`` "applePayCreditRateMax": 0.38,`` "unionpayQRRate": 0.38,`` "unionpayQRRateMin": 0.36,`` "unionpayQRRateMax": 0.38,`` "wechatRate": 0.38,`` "wechatRateMin": 0.38,`` "wechatRateMax": 0.38,`` "alipayRate": 0.38,`` "alipayRateMin": 0.38,`` "alipayRateMax": 0.38,`` "payMethod": 0`` }, {`` "rateObjNo": "115293090107465",`` "rateType": 3,`` "settleCycle": 0,`` "creditRate": 0.58,`` "creditRateMin": 0.5,`` "creditRateMax": 0.7,`` "creditGFRate": 0.58,`` "creditGFRateMin": 0.56,`` "creditGFRateMax": 0.7,`` "creditPARate": 0.6,`` "creditPARateMin": 0.5,`` "creditPARateMax": 0.67,`` "creditMSRate": 0.52,`` "creditMSRateMin": 0.52,`` "creditMSRateMax": 0.52,`` "payMethod": 0`` }, {`` "rateObjNo": "115293090107465",`` "rateType": 3,`` "settleCycle": 1,`` "creditRate": 0.58,`` "creditRateMin": 0.5,`` "creditRateMax": 0.7,`` "creditGFRate": 0.58,`` "creditGFRateMin": 0.56,`` "creditGFRateMax": 0.7,`` "creditPARate": 0.6,`` "creditPARateMin": 0.5,`` "creditPARateMax": 0.67,`` "creditMSRate": 0.52,`` "creditMSRateMin": 0.52,`` "creditMSRateMax": 0.52,`` "payMethod": 0`` }, {`` "rateObjNo": "115293090107465",`` "rateType": 3,`` "payMethod": 5,`` "qbRateList": [{`` "lvlNo": "LDQBDW_9",`` "ldqbDebitRateMin": 0.21,`` "ldqbDebitRateMax": 0.38`` }, {`` "lvlNo": "LDQBDW_1",`` "ldqbDebitRateMin": 0.21,`` "ldqbDebitRateMax": 0.38`` }, {`` "lvlNo": "LDQBDW_2",`` "ldqbDebitRate": 0.51,`` "ldqbDebitRateMin": 0.44,`` "ldqbDebitRateMax": 0.44`` }]`` }, {`` "rateObjNo": "115293090107465",`` "rateType": 3,`` "payMethod": 5,`` "qbRateList": [{`` "lvlNo": "LDQBDW_9",`` "ldqbCreditRateMin": 0.21,`` "ldqbCreditRateMax": 0.38`` }, {`` "lvlNo": "LDQBDW_1",`` "ldqbCreditRateMin": 0.21,`` "ldqbCreditRateMax": 0.38`` }, {`` "lvlNo": "LDQBDW_2",`` "ldqbCreditRate": 0.53,`` "ldqbCreditRateMin": 0.66,`` "ldqbCreditRateMax": 0.66`` }]`` }],`` "actAddCharge": "2.00"``}``}
备注
3、商户费率修改
简要描述
· 修改商户费率接口 成为正式商户以后可调用
变更历史
日期 | 变更人 | 变更说明 |
---|---|---|
2022-01-17 | 赵建伟 | 费率列表添加特惠费率 |
2022-09-06 | 赵建伟 | 费率列表添加特惠广发费率 |
2023-03-02 | 赵建伟 | 费率列表添加特惠平安费率 |
2023-09-20 | 张海超 | 费率列表添加特惠民生费率 |
2024-03-21 | 赵建伟 | 添加联动钱包费率修改 qbRateList |
请求URL:
· http://ip:port/buss-gateway/gate
请求方式
· POST
请求参数说明
名称 | 参数 | 必选 | 数据类型 | 长度 | 说明 |
---|---|---|---|---|---|
服务请求流水 | rpid | 是 | String | 15 | 2字母开头+13位数字 |
用户编号 | userNo | 是 | String | 平台下发 | |
请求路径 | reqPath | 是 | String | /rateApi/modify | |
请求参数 | data | 是 | String | RSA公钥加密后的数据 |
名称
参数
必填
长度
说明
品牌编号
brandNo
是
max(10)
联动生成
代理商编号
agentNoLevelOne
是
max(10)
联动生成
终端sn号
posNo
是
max(20)
终端sn号
活动附加手续费
actAddCharge
否
max(20)
活动附加手续费*(元)
费率列表
rateList
是
max(256)
List
钱包费率列表
qbRateList
是
max(256)
根据查询接口返回的档位类型进行传值
费率列表(rateList)说明
[{`` "rateType": 0,`` "debitRate": 0.555,`` "settleCycle": 0`` },`` {`` "rateType": 0,`` "debitRate": 0.555,`` "settleCycle": 1,`` "debitCapYuan": 12`` },`` {`` "rateType": 0,`` "creditRate": 0.555,`` "alipayRate": 0.33,`` "wechatRate": 0.33,`` "unionpayQRRate": 0.33`` },`` {`` "rateType": 1,`` "debitRate": 0.555,`` "settleCycle": 0`` },`` {`` "rateType": 1,`` "debitRate": 0.555,`` "settleCycle": 1,`` "debitCapYuan": 12`` },`` {`` "rateType": 1,`` "creditRate": 0.555`` }, {`` "rateType": 3,`` "creditRate": 0.64,`` "creditGFRate":0.64,`` "creditPARate":0.65,`` "creditMSRate":0.61,`` "settleCycle": 1`` }, {`` "rateType": 3,`` "creditRate": 0.65,`` "creditGFRate":0.64,`` "creditPARate":0.65,`` "creditMSRate":0.61,`` "settleCycle": 0`` }`` ``]
钱包费率列表(qbRateList)说明
[{`` "lvlNo": 1,`` "ldqbDebitRate": 0.555,`` "ldqbCreditRate": 0.555`` },`` {`` "lvlNo": 2,`` "ldqbDebitRate": 0.555,`` "ldqbCreditRate": 0.555`` }``]
返回参数说明
名称 | 参数 | 必选 | 说明 |
---|---|---|---|
服务请求流水 | rpid | 是 | 服务调用标志 |
返回码 | ret_code | 是 | 0000-成功 |
返回信息 | ret_msg | 是 | 操作成功 |
返回参数示例
{`` "data": "adIwSogd25q6JzDTjS1/RV26umC3R/VxQjqRIoGvvw107Apu24AEzg4t4WvUFHxVu6tpr9/zqGPt4u6tL63zM8EW2hFUeVINxC/Piq5NhHyp2H828mquzVFWdTRxP774313/Uwo1Z1pUccOhq5ZpoXgz1CF5tOlFKhfIPQ4QLCA=", `` "rpid": "aa1111111119112", `` "ret_msg": "操作成功!", `` "ret_code": "0000"``}
备注 data解密后数据 {“merNo”:”110000000118313″,”respMsg”:”终端费率修改成功”,”respCode”:”1″} ret_code = 0000 && respCode = 1 表示修改成功
4、商户绑机信息查询
简要描述
· 商户绑机信息查询
请求URL:
· http://ip:port/buss-gateway/gate
请求方式
· POST
请求参数说明
名称 | 参数 | 必选 | 数据类型 | 长度 | 说明 |
---|---|---|---|---|---|
服务请求流水 | rpid | 是 | String | 15 | 2字母开头+13位数字 |
用户编号 | userNo | 是 | String | 平台下发 | |
请求路径 | reqPath | 是 | String | /merchantApi/getList | |
请求参数 | data | 是 | String | RSA公钥加密后的数据 |
名称
参数
必填
说明
品牌编号
brandNo
是
联动生成
代理商编号
agentNoLevelOne
是
联动生成
绑定起始时间
startBindTime
是
yyyy-MM-dd
绑定结束时间
endBindTime
是
yyyy-MM-dd
页码
pageNo
是
–
每页的大小
pageSize
是
–
返回参数说明
名称 | 参数 | 必选 | 说明 |
---|---|---|---|
服务请求流水 | rpid | 是 | 服务调用标志 |
返回码 | ret_code | 是 | 0000-成功 |
返回信息 | ret_msg | 是 | 操作成功 |
返回数据 | data | 是 | 加密数据 |
名称
参数
必填
说明
商户编号
merNo
是
–
商户名称
merName
是
–
商户入网时间
merAddTime
是
–
绑机时间
boundTime
是
–
机身tusn号
machineNum
是
–
终端号
posNo
是
–
返回参数示例
{`` "data": "adIwSogd25q6JzDTjS1/RV26umC3R/VxQjqRIoGvvw107Apu24AEzg4t4WvUFHxVu6tpr9/zqGPt4u6tL63zM8EW2hFUeVINxC/Piq5NhHyp2H828mquzVFWdTRxP774313/Uwo1Z1pUccOhq5ZpoXgz1CF5tOlFKhfIPQ4QLCA=", `` "rpid": "aa1111111119112", `` "ret_msg": "操作成功!", `` "ret_code": "0000"``}
返回参数data说明
{``"merNo":"100000000103472",``"merName":"陈泽振",``"merAddTime":"2020-04-28",``"boundTime":"2020-04-27",``"machineNum":"0000290320100012",``"posNo":"100000893567",``}
备注
5、 代理商交易查询
简要描述:
· 代理商交易查询接口
变更历史
日期 | 变更人 | 变更类型 | 变更说明 |
---|---|---|---|
2021-05-11 | 赵建伟 | 修改 | 交易类型 去除 H201消费-支付宝支付、H202消费-微信支付、H302消费-银联二维码、V007购买会员 |
2021-05-11 | 赵建伟 | 添加 | 支付类型 0-银行卡收单 1-银联二维码 2-微信 3-支付宝 |
2021-10-09 | 赵建伟 | 添加 | 交易开始日期时间 – 交易结束日期时间不能超过24小时 |
2022-01-17 | 赵建伟 | 修改 | 返回值费率类型添加类型3 |
2022-09-06 | 赵建伟 | 添加 | 返回卡BIN银行号 |
2023-02-16 | 赵建伟 | 添加 | 查询条件-交易流水号 |
2023-09-20 | 张海超 | 修改 | 增加卡Bin银行号返回类型 |
2024-03-22 | 赵建伟 | 修改 | payType 增加类型4 联动钱包 |
请求URL:
· http://ip:port/buss-gateway/gate
请求方式:
· POST
请求参数说明:
名称 | 参数 | 必选 | 数据类型 | 长度 | 说明 |
---|---|---|---|---|---|
服务请求流水 | rpid | 是 | String | 15 | 2字母开头+13位数字 |
用户编号 | userNo | 是 | String | 平台下发 | |
请求路径 | reqPath | 是 | String | /agentTrans/getTransList | |
请求参数 | data | 是 | String | RSA公钥加密后的数据 |
名称
参数
必选
数据类型
长度
说明
品牌编号
brandNo
是
String
8~10
一级代理商编号
agentNoLevelOne
否
String
15
服务商选传,代理商必传
商户号
merNo
否
String
15
终端序列号
posSn
否
String
1~32
第几页
pageNo
是
Integer
默认传1 分页查询,默认每页100条
交易开始日期
localDateStart
是
String
10
yyyy-MM-dd
交易开始时间
localTimeStart
是
String
8
HH:mm:ss
交易结束日期
localDateEnd
是
String
10
yyyy-MM-dd
交易结束时间
localTimeEnd
是
String
8
HH:mm:ss
交易流水号
serial
否
String
–
–
请求参数示例
{`` "rpid": "aa1111111119112",`` "userNo": "123",`` "reqPath": "/agentTrans/getTransList",`` "data": "IuFv3ZAaU6bYhgT+xEI9Qa44wLoH4S1neK5K77iefRZjGIyNTLkx8qVOXRJxqlWCbYnhOGXwbHw1XXC7BKf9ge4KuwuRcPmirNHW3fDKpPrRyMggXH1LgeOJn1NPuSNZ72HNSnOWY8d4tO9ccoLdmYxuyHpfIc0llP93YgoYB2Bz18pTaGxhNLjZMbJ6LRNYJ0OpSI2XKtX8ycnk4NRE8JGNk8h9z/RKYYYgZwGkWVEt4nhhEj7jczmshsCz/8MXmrFvWr2ui/iWqiC2baCjB7MSXhB0GnnCkWq9C9ZSSf6BlyPMsI6aYWHmHLVDP8aZ1pikZKEh0BnakH+KE9BuIQ=="``}
返回参数说明
名称 | 参数 | 必选 | 说明 |
---|---|---|---|
服务请求流水 | rpid | 是 | 服务调用标识 |
返回码 | ret_code | 是 | 0000-成功 |
返回信息 | ret_msg | 是 | – |
返回数据 | data | 是 | RSA公钥加密后的数据 |
名称
参数
必选
数据类型
长度
说明
交易日期
localDate
是
String
10
yyyy-MM-dd
交易时间
localTime
是
String
8
HH:mm:ss
品牌编号
brandNo
是
String
8~10
商户号
merNo
是
String
15
商户名称
merName
是
String
200
交易类型
msgType
是
String
4
H007消费、Y007押金消费、S007流量卡交易
商户类型
merType
是
Integer
支付方式:0传统 pos,1手刷
交易唯一凭证
serial
是
Long
结算类型
settType
是
String
2
0:d0 1:t1
系统终端号
terNo
是
String
12
终端序列号
sn
否
String
1~32
微信,支付宝,银联二维码交易为空
交易卡号
pan
是
String
22
卡类型
cardType
是
Integer
0:未知、1:借记卡、2:贷记卡、3:预付费卡
交易金额
amount
是
Long
单位:分
交易应扣手续费
tradeCharges
是
Long
单位:分,不含附加费
交易附加手续费
tradeChargesFj
是
Long
单位:分
交易状态
status
是
String
2
-99初始 -1撤销 -2冲正 0成功 1补录 2失败 3结果未明 4下单失败 5订单关闭
双免
isDissmis
是
String
2
0:普通交易 1双免交易
云闪付
isYsf
是
String
2
0:普通交易 1 云闪付交易
费率类型
merRateType
是
Integer
费率类型 0[优享] 1[优惠] 3[特惠]
支付类型
payType
是
String
0-银行卡收单 1-银联二维码 2-微信 3-支付宝 4-联动钱包
卡BIN银行号
binBankId
否
String
B012 广发 、B041 平安、B008 民生、 B009 中信 费率类型 merRateType=3 并且 binBankId=B012 能确定该笔交易是广发特惠交易
返回参数示例
{`` "data": "adIwSogd25q6JzDTjS1/RV26umC3R/VxQjqRIoGvvw107Apu24AEzg4t4WvUFHxVu6tpr9/zqGPt4u6tL63zM8EW2hFUeVINxC/Piq5NhHyp2H828mquzVFWdTRxP774313/Uwo1Z1pUccOhq5ZpoXgz1CF5tOlFKhfIPQ4QLCA=", `` "rpid": "aa1111111119112", `` "ret_msg": "操作成功!", `` "ret_code": "0000"``}
备注
6、代理商终端激活查询
简要描述:
· 代理商终端激活查询接口
请求URL:
· http://ip:port/buss-gateway/gate
请求方式:
· POST
请求参数说明:
名称 | 参数 | 必选 | 数据类型 | 长度 | 说明 |
---|---|---|---|---|---|
服务请求流水 | rpid | 是 | String | 15 | 2字母开头+13位数字 |
用户编号 | userNo | 是 | String | 15 | 平台下发 |
请求方法 | reqPath | 是 | String | 15 | /agentPos/getPosActiveList |
请求数据 | data | 是 | String | 15 | rsa公钥加密后数据 |
名称
参数
必选
数据类型
长度
说明
品牌编号
brandNo
是
String
8~10
一级代理商编号
agentNoLevelOne
否
String
15
服务商选传,代理商必传
商户号
merNo
否
String
15
终端序列号
posSn
否
String
1~32
第几页
pageNo
否
Integer
分页查询,默认每页100条
激活开始时间
activeTimeStart
是
Timestamp
yyyy-MM-dd HH:mm:ss.SSS
激活结束时间
activeTimeEnd
是
Timestamp
yyyy-MM-dd HH:mm:ss.SSS
请求参数示例
{`` "rpid": "aa1111111119112",`` "userNo": "123",`` "reqPath": "/agentPos/getPosActiveList",`` "data": "VEvi0vEkRakpIgJA0DTOL8BbHmNBNcJji5YQyIkzgsccSxuRNwimKeNsJX5ASrIx/y1H/67nbt5rNqJkjz3wG4q4q99/6C3IdGrT5YyV5jnD55CyT1lmzoobJ5A/HJvgZ/pKtJJsiFQ5rodDoQDeXIk5IphN6ShFoEQiWIZW2BUnHmWHbDm3R6DtBVCMn9g/aUkA/W5yxJovU8O0SS+kzqm0ln82n8UQULNJ9vdGebclm/Xy3r4RIKzPwXEL2ixKmLv+RQ+QsswTmqYxoDad0l4prd4Xp2/IDc99Dfh+wZIbQzEw1NhuiC/fsOCZT2x5vALGfY0nohrBv0viOgyrww=="``}
返回参数说明
名称 | 参数 | 必选 | 说明 |
---|---|---|---|
服务请求流水 | rpid | 是 | 服务调用标识 |
返回码 | ret_code | 是 | 0000-成功 |
返回信息 | ret_msg | 是 | – |
返回数据 | data | 是 | rsa公钥加密后数据 |
名称
参数
必选
数据类型
长度
说明
品牌编号
brandNo
是
String
8~10
商户号
merNo
是
String
15
商户名称
merName
是
String
200
系统终端号
posNo
是
String
12
终端序列号
machineNum
是
String
1~32
激活时间
activateTime
是
Timestamp
–
返回参数示例
{`` "data": "In2qQk92dEi4O4m+tWQiJRinz4ElIIBGTwd/t8hC9VpjJCMRej0k5bFEmk/w91VF8SWuGQnvu98YFRu2GUKTfMLMdaHThm2LiL7IQ9twh7sfP0maKx9Epk3mxoX2i1ptKP3tO4nw9MKNNhrsysJUhxfCfFonBrFE9DSsdgk7eWA=",`` "rpid": "aa1111111119112",`` "ret_msg": "操作成功!",`` "ret_code": "0000"``}
备注 激活时间,系统中只记录了日期,并没有记录时间,所以取数时注意。
7、代理商交易通知接口
简要描述:
· 系统在交易成功后通过此接口将交易信息推送到指定接收地址。
· 接收成功后要返回应答响应。
· 响应异常或通讯超时会多次推送。
· 生产上推荐使用80/443作为接受地址的端口
变更历史
日期 | 变更人 | 变更类型 | 变更说明 |
---|---|---|---|
2022-02-16 | zht | 新增 | 交易推送接口 |
2022-09-06 | 赵建伟 | 添加 | 返回卡BIN银行号 |
2023-09-20 | 张海超 | 修改 | 增加卡Bin银行号返回类型 |
2024-03-22 | 赵建伟 | 修改 | payType 增加类型4 联动钱包 |
请求方式:
· POST
请求参数说明:
名称 | 参数 | 必选 | 数据类型 | 长度 | 说明 |
---|---|---|---|---|---|
服务请求流水 | rpid | 是 | String | 15 | 2字母开头+13位数字 |
用户编号 | userNo | 是 | String | 8 | 平台下发 |
请求参数 | data | 是 | String | RSA公钥加密后的数据 |
data
名称 | 参数 | 必选 | 数据类型 | 长度 | 说明 |
---|---|---|---|---|---|
交易日期 | localDate | 是 | String | 10 | yyyy-MM-dd |
交易时间 | localTime | 是 | String | 8 | HH:mm:ss |
品牌编号 | brandNo | 是 | String | 8~10 | |
商户号 | merNo | 是 | String | 15 | |
商户名称 | merName | 是 | String | 200 | |
交易类型 | msgType | 是 | String | 4 | H007-消费 Y007-首笔押金消费 S007-部分不结算交易(参考部分不结算类型noSettleType) |
部分不结算金额 | noSettleAmt | 否 | Long | 12 | 交易类型msgType为S007时返回。 单位:分 |
部分不结算类型 | noSettleType | 否 | Integer | 2 | 交易类型msgType为S007时返回。 00-流量卡 02-非首笔押金 |
商户类型 | merType | 是 | Integer | 1 | 支付方式:0-传统 pos,1-手刷 |
交易唯一凭证 | serial | 是 | Long | 12 | |
结算类型 | settType | 是 | String | 2 | 0-D0 1-T1 |
系统终端号 | terNo | 是 | String | 12 | |
支付类型 | payType | 是 | String | 1 | 0-银行卡收单 1-银联二维码 2-微信 3-支付宝 4-联动钱包 |
终端序列号 | sn | 否 | String | 1~32 | 支付类型payType为0 时返回. |
交易卡号 | pan | 是 | String | 22 | 脱敏卡号 |
卡类型 | cardType | 是 | Integer | 1 | 0-未知、1-借记卡、2-贷记卡、3-预付费卡 |
交易金额 | amount | 是 | Long | 12 | 单位:分 |
交易应扣手续费 | tradeCharges | 是 | Long | 12 | 单位:分,不含附加费 |
交易附加手续费 | tradeChargesFj | 是 | Long | 12 | 单位:分 |
交易状态 | status | 是 | String | 2 | 0-成功 1-补录 |
双免 | isDissmis | 是 | String | 2 | 0-普通交易 1-双免交易 |
云闪付 | isYsf | 是 | String | 2 | 0-普通交易 1-云闪付交易 |
费率类型 | merRateType | 是 | Integer | 1 | 费率类型 0-优享 1-优惠 3-特惠 |
卡BIN银行号 | binBankId | 否 | String | B012 广发、B041平安、B008民生 、B009 中信 费率类型 merRateType=3 并且 binBankId=B012 能确定该笔交易是广发特惠交易 |
返回参数示例
{`` "data": "adIwSogd25q6JzDTjS1/RV26umC3R/VxQjqRIoGvvw107Apu24AEzg4t4WvUFHxVu6tpr9/zqGPt4u6tL63zM8EW2hFUeVINxC/Piq5NhHyp2H828mquzVFWdTRxP774313/Uwo1Z1pUccOhq5ZpoXgz1CF5tOlFKhfIPQ4QLCA=",`` "rpid": "aa1111111119112",`` "userNo": "12345678"``}
应答参数示例
名称 | 参数 | 必选 | 数据类型 | 长度 | 说明 |
---|---|---|---|---|---|
服务请求流水 | rpid | 是 | String | 15 | 原通知请求流水 |
返回码 | ret_code | 是 | String | 4 | 0000-响应成功 其他失败 |
{`` "rpid": "aa1111111119112",`` "ret_code": "0000"``}
备注