New file |
| | |
| | | /DriverIGOTravel/.idea/ |
| | |
| | | <packaging>war</packaging> |
| | | |
| | | <dependencies> |
| | | |
| | | <!-- lombok --> |
| | | <dependency> |
| | | <groupId>org.projectlombok</groupId> |
| | | <artifactId>lombok</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.apache.httpcomponents</groupId> |
| | | <artifactId>httpcore</artifactId> |
| | | <version>4.4.10</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>commons-httpclient</groupId> |
| | | <artifactId>commons-httpclient</artifactId> |
| | | <version>3.1</version> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>org.apache.httpcomponents</groupId> |
| | | <artifactId>httpclient</artifactId> |
| | | <version>4.5.6</version> |
| | | </dependency> |
| | | |
| | | |
| | | <dependency> |
| | | <groupId>org.springframework.cloud</groupId> |
| | | <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util.Tingg; |
| | | |
| | | /** |
| | | * @author chenza |
| | | * @date 2023/3/14 16:37 |
| | | */ |
| | | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.net.ssl.*; |
| | | import java.io.ByteArrayOutputStream; |
| | | import java.io.DataOutputStream; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.net.URL; |
| | | import java.security.KeyManagementException; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.security.cert.CertificateException; |
| | | import java.security.cert.X509Certificate; |
| | | |
| | | @Component |
| | | public class HttpsUtil { |
| | | private static class TrustAnyTrustManager implements X509TrustManager { |
| | | |
| | | public void checkClientTrusted(X509Certificate[] chain, String authType) |
| | | throws CertificateException { |
| | | } |
| | | |
| | | public void checkServerTrusted(X509Certificate[] chain, String authType) |
| | | throws CertificateException { |
| | | } |
| | | |
| | | public X509Certificate[] getAcceptedIssuers() { |
| | | return new X509Certificate[]{}; |
| | | } |
| | | } |
| | | |
| | | private static class TrustAnyHostnameVerifier implements HostnameVerifier { |
| | | public boolean verify(String hostname, SSLSession session) { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * post方式请求服务器(https协议) |
| | | * |
| | | * @param url 请求地址 |
| | | * @param content 参数 |
| | | * @param charset 编码 |
| | | * @return |
| | | * @throws NoSuchAlgorithmException |
| | | * @throws KeyManagementException |
| | | * @throws IOException |
| | | */ |
| | | public String post(String url, String content, String charset) |
| | | throws NoSuchAlgorithmException, KeyManagementException, |
| | | IOException { |
| | | String result = ""; |
| | | SSLContext sc = SSLContext.getInstance("SSL"); |
| | | sc.init(null, new TrustManager[]{new TrustAnyTrustManager()}, |
| | | new java.security.SecureRandom()); |
| | | |
| | | URL console = new URL(url); |
| | | HttpsURLConnection conn = (HttpsURLConnection) console.openConnection(); |
| | | conn.setRequestProperty("Content-Type", "application/json; charset=utf-8"); |
| | | conn.setSSLSocketFactory(sc.getSocketFactory()); |
| | | conn.setHostnameVerifier(new TrustAnyHostnameVerifier()); |
| | | conn.setDoOutput(true); |
| | | conn.connect(); |
| | | DataOutputStream out = new DataOutputStream(conn.getOutputStream()); |
| | | out.write(content.getBytes(charset)); |
| | | // 刷新、关闭 |
| | | out.flush(); |
| | | out.close(); |
| | | InputStream is = conn.getInputStream(); |
| | | if (is != null) { |
| | | ByteArrayOutputStream outStream = new ByteArrayOutputStream(); |
| | | byte[] buffer = new byte[1024]; |
| | | int len = 0; |
| | | while ((len = is.read(buffer)) != -1) { |
| | | outStream.write(buffer, 0, len); |
| | | } |
| | | is.close(); |
| | | byte[] array = outStream.toByteArray(); |
| | | result = new String(array, "utf-8"); |
| | | return result; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * put方式请求服务器(https协议) |
| | | * |
| | | * @param url 请求地址 |
| | | * @param content 参数 |
| | | * @param token 编码 |
| | | * @return |
| | | * @throws NoSuchAlgorithmException |
| | | * @throws KeyManagementException |
| | | * @throws IOException |
| | | */ |
| | | public String put(String url, String content, String token) |
| | | throws NoSuchAlgorithmException, KeyManagementException, |
| | | IOException { |
| | | String result = ""; |
| | | SSLContext sc = SSLContext.getInstance("SSL"); |
| | | sc.init(null, new TrustManager[]{new TrustAnyTrustManager()}, |
| | | new java.security.SecureRandom()); |
| | | |
| | | URL console = new URL(url); |
| | | HttpsURLConnection conn = (HttpsURLConnection) console.openConnection(); |
| | | conn.setRequestMethod("PUT"); |
| | | conn.setSSLSocketFactory(sc.getSocketFactory()); |
| | | conn.setHostnameVerifier(new TrustAnyHostnameVerifier()); |
| | | conn.setDoOutput(true); |
| | | |
| | | conn.setRequestProperty("Content-Type", "application/json; charset=utf-8"); |
| | | //conn.setRequestProperty("Authorization", "xxxxx" + token); |
| | | conn.connect(); |
| | | DataOutputStream out = new DataOutputStream(conn.getOutputStream()); |
| | | //out.write(content.getBytes("UTF8")); |
| | | // 刷新、关闭 |
| | | out.flush(); |
| | | out.close(); |
| | | InputStream is = conn.getInputStream(); |
| | | if (is != null) { |
| | | ByteArrayOutputStream outStream = new ByteArrayOutputStream(); |
| | | byte[] buffer = new byte[1024]; |
| | | int len = 0; |
| | | while ((len = is.read(buffer)) != -1) { |
| | | outStream.write(buffer, 0, len); |
| | | } |
| | | is.close(); |
| | | |
| | | byte[] array = outStream.toByteArray(); |
| | | result = new String(array, "utf-8"); |
| | | return result; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * get方式请求服务器(https协议) |
| | | * |
| | | * @param url 请求地址 |
| | | * @param content 参数 |
| | | * @param token 编码 |
| | | * @return |
| | | * @throws NoSuchAlgorithmException |
| | | * @throws KeyManagementException |
| | | * @throws IOException |
| | | */ |
| | | public String get(String url, String content, String token) |
| | | throws NoSuchAlgorithmException, KeyManagementException, |
| | | IOException { |
| | | String result = ""; |
| | | SSLContext sc = SSLContext.getInstance("SSL"); |
| | | sc.init(null, new TrustManager[]{new TrustAnyTrustManager()}, |
| | | new java.security.SecureRandom()); |
| | | |
| | | URL httpUrl = new URL(url); |
| | | HttpsURLConnection conn = (HttpsURLConnection) httpUrl.openConnection(); |
| | | conn.setRequestMethod("GET"); |
| | | conn.setSSLSocketFactory(sc.getSocketFactory()); |
| | | conn.setHostnameVerifier(new TrustAnyHostnameVerifier()); |
| | | conn.setDoOutput(true); |
| | | |
| | | conn.setRequestProperty("Content-Type", "application/json; charset=utf-8"); |
| | | //conn.setRequestProperty("Authorization", "xxxxxx" + token); |
| | | conn.connect(); |
| | | |
| | | //get方法与post方法除了conn.setRequestMethod("GET")这句不一样外,关于DataOutputStream out的几行一定要删除,否则就会报405的错误 |
| | | |
| | | InputStream is = conn.getInputStream(); |
| | | if (is != null) { |
| | | ByteArrayOutputStream outStream = new ByteArrayOutputStream(); |
| | | byte[] buffer = new byte[1024]; |
| | | int len = 0; |
| | | while ((len = is.read(buffer)) != -1) { |
| | | outStream.write(buffer, 0, len); |
| | | } |
| | | is.close(); |
| | | |
| | | byte[] array = outStream.toByteArray(); |
| | | result = new String(array, "utf-8"); |
| | | return result; |
| | | } |
| | | |
| | | |
| | | return null; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util.Tingg; |
| | | |
| | | /** |
| | | * @author chenza |
| | | * @date 2023/3/14 9:15 |
| | | */ |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.stylefeng.guns.modular.system.util.Tingg.model.TinggPayload; |
| | | import com.stylefeng.guns.modular.system.util.Tingg.model.TinggRequest; |
| | | import com.stylefeng.guns.modular.system.util.Tingg.model.TinggResponse; |
| | | |
| | | import java.io.IOException; |
| | | import java.security.KeyManagementException; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.LinkedHashMap; |
| | | |
| | | /** |
| | | * Tingg退款工具类 |
| | | */ |
| | | public class TinggRefundUtil { |
| | | |
| | | private static String urlPath = "https://beep2.cellulant.africa:9001/paymentRouter/JSONV2/"; |
| | | |
| | | public static void main(String[] args) { |
| | | TinggRequest tinggRequest = new TinggRequest(); |
| | | //设置国家代码 |
| | | tinggRequest.setCountryCode("NG"); |
| | | //设置功能 |
| | | tinggRequest.setFunction("BEEP.postPayment"); |
| | | //设置用户名称 |
| | | tinggRequest.setUsername("sandboxUser"); |
| | | //设置用户密码 |
| | | tinggRequest.setPassword("sandboxPassword!"); |
| | | //设置服务代码 |
| | | tinggRequest.setServiceCode("NG-BANK-PAYOUT"); |
| | | //设置MSISDN |
| | | tinggRequest.setMsisdn("256700000000"); |
| | | //设置账号 |
| | | tinggRequest.setAccountNumber("00072186"); |
| | | //设置付款人交易编号 |
| | | tinggRequest.setPayerTransactionID("yourUniqueID"); |
| | | //设置金额 |
| | | tinggRequest.setAmount(50000L); |
| | | //设置备注 |
| | | tinggRequest.setNarration("Bank Payout"); |
| | | //设置收到付款的日期 |
| | | tinggRequest.setDatePaymentReceived(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | //设置回调网址 |
| | | tinggRequest.setCallbackUrl("https://yourCallBackUrl.com/receivePaymentStatus"); |
| | | //设置目的地银行代码 |
| | | tinggRequest.setDestinationBankCode("000012"); |
| | | //设置目标账户名称 |
| | | tinggRequest.setDestinationAccountName("Shem B. Mwangi"); |
| | | //设置目标账户号码 |
| | | tinggRequest.setDestinationAccountNo("00072186"); |
| | | //设置目的地银行 |
| | | tinggRequest.setDestinationBank("StanbicIBTC Bank"); |
| | | //设置支付方式 |
| | | tinggRequest.setPaymentMode("BANK"); |
| | | //设置货币代码 |
| | | tinggRequest.setCurrencyCode("NGN"); |
| | | //设置客户名称 |
| | | tinggRequest.setCustomerNames("Shem B. Mwangi"); |
| | | TinggResponse tinggResponse = getTinggResponse(tinggRequest); |
| | | String s = JSON.toJSONString(tinggResponse); |
| | | System.out.println(s); |
| | | System.out.println("-------------"); |
| | | try { |
| | | String post = new HttpsUtil().post(urlPath,s,"UTF-8"); |
| | | System.out.println(post); |
| | | } catch (NoSuchAlgorithmException e) { |
| | | e.printStackTrace(); |
| | | } catch (KeyManagementException e) { |
| | | e.printStackTrace(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | public static TinggResponse getTinggResponse(TinggRequest tinggRequest) { |
| | | TinggResponse transferResponse = new TinggResponse(); |
| | | //设置国家代码 |
| | | transferResponse.setCountryCode(tinggRequest.getCountryCode()); |
| | | //设置功能 |
| | | transferResponse.setFunction(tinggRequest.getFunction()); |
| | | //获得有效载荷 |
| | | TinggPayload transferPayload = getTinggPayload(tinggRequest); |
| | | //设置有效载荷 |
| | | transferResponse.setPayload(transferPayload); |
| | | return transferResponse; |
| | | } |
| | | |
| | | private static TinggPayload getTinggPayload(TinggRequest tinggRequest) { |
| | | //有效载荷 |
| | | TinggPayload tinggPayload = new TinggPayload(); |
| | | //凭据 |
| | | HashMap<String, String> credentials = new LinkedHashMap<>(); |
| | | //设置用户名 |
| | | credentials.put("username", tinggRequest.getUsername()); |
| | | //设置支付密码 |
| | | credentials.put("password", tinggRequest.getPassword()); |
| | | //设置凭据 |
| | | tinggPayload.setCredentials(credentials); |
| | | |
| | | //有效负载的数据包 |
| | | ArrayList<Object> packet = new ArrayList<>(); |
| | | LinkedHashMap<String, Object> hs = getStringObjectHashMap(tinggRequest); |
| | | packet.add(hs); |
| | | //设置包 |
| | | tinggPayload.setPacket(packet); |
| | | return tinggPayload; |
| | | } |
| | | |
| | | private static LinkedHashMap<String, Object> getStringObjectHashMap(TinggRequest tinggRequest) { |
| | | LinkedHashMap<String, Object> hs = new LinkedHashMap<>(); |
| | | //设置服务代码 |
| | | hs.put("serviceCode", tinggRequest.getServiceCode()); |
| | | hs.put("MSISDN", tinggRequest.getMsisdn()); |
| | | //设置账号 |
| | | hs.put("accountNumber", tinggRequest.getAccountNumber()); |
| | | //设置付款交易人编号 |
| | | hs.put("payerTransactionID", tinggRequest.getPayerTransactionID()); |
| | | //设置金额 |
| | | hs.put("amount", tinggRequest.getAmount()); |
| | | hs.put("narration", tinggRequest.getNarration()); |
| | | //设置付款时间 |
| | | hs.put("datePaymentReceived", tinggRequest.getDatePaymentReceived()); |
| | | //额外数据 |
| | | HashMap<String, String> tempHs = new LinkedHashMap<>(); |
| | | //回调网址 |
| | | tempHs.put("callbackUrl", tinggRequest.getCallbackUrl()); |
| | | //目的地银行代码 |
| | | tempHs.put("destinationBankCode", tinggRequest.getDestinationBankCode()); |
| | | //目标账户名称 |
| | | tempHs.put("destinationAccountName", tinggRequest.getDestinationAccountName()); |
| | | //目的地账户号码 |
| | | tempHs.put("destinationAccountNo", tinggRequest.getDestinationAccountNo()); |
| | | //目的地银行 |
| | | tempHs.put("destinationBank", tinggRequest.getDestinationBank()); |
| | | //设置额外数据 |
| | | hs.put("extraData", tempHs); |
| | | //设置支付方式 |
| | | hs.put("paymentMode", tinggRequest.getPaymentMode()); |
| | | //设置货币代码 |
| | | hs.put("currencyCode", tinggRequest.getCurrencyCode()); |
| | | //设置客户名称 |
| | | hs.put("customerNames", tinggRequest.getCustomerNames()); |
| | | return hs; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util.Tingg; |
| | | |
| | | /** |
| | | * @author chenza |
| | | * @date 2023/3/14 15:16 |
| | | */ |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.stylefeng.guns.modular.system.util.Tingg.model.TinggPayload; |
| | | import com.stylefeng.guns.modular.system.util.Tingg.model.TinggRequest; |
| | | import com.stylefeng.guns.modular.system.util.Tingg.model.TinggResponse; |
| | | |
| | | import java.io.IOException; |
| | | import java.security.KeyManagementException; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.LinkedHashMap; |
| | | |
| | | /** |
| | | * Tingg转账工具类 |
| | | */ |
| | | public class TinggTransferUtil { |
| | | |
| | | private static String urlPath = "https://beep2.cellulant.africa:9001/paymentRouter/JSONV2/"; |
| | | |
| | | public static void main(String[] args) { |
| | | TinggRequest tinggRequest = new TinggRequest(); |
| | | //设置国家代码 |
| | | tinggRequest.setCountryCode("UG"); |
| | | //设置功能 |
| | | tinggRequest.setFunction("BEEP.postPayment"); |
| | | //设置用户名称 |
| | | tinggRequest.setUsername("sandboxUser"); |
| | | //设置用户密码 |
| | | tinggRequest.setPassword("sandboxPassword!"); |
| | | //设置服务代码 |
| | | tinggRequest.setServiceCode("UG-MTN-B2C"); |
| | | //设置MSISDN |
| | | tinggRequest.setMsisdn("256777777777"); |
| | | //设置发票编号 |
| | | tinggRequest.setInvoiceNumber(""); |
| | | //设置账号 |
| | | tinggRequest.setAccountNumber("256777777777"); |
| | | //设置付款人交易编号 |
| | | tinggRequest.setPayerTransactionID("yourUniqueID"); |
| | | //设置金额 |
| | | tinggRequest.setAmount(1000L); |
| | | //设置标识 |
| | | tinggRequest.setHubID(""); |
| | | //设置备注 |
| | | tinggRequest.setNarration("MTN Mobile money"); |
| | | //设置收到付款的日期 |
| | | tinggRequest.setDatePaymentReceived(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | | //设置回调网址 |
| | | tinggRequest.setCallbackUrl("https://yourCallBackUrl.com/receivePaymentStatus"); |
| | | //设置货币代码 |
| | | tinggRequest.setCurrencyCode("UGX"); |
| | | //设置客户名称 |
| | | tinggRequest.setCustomerNames("Walter White"); |
| | | //设置支付方式 |
| | | tinggRequest.setPaymentMode("Online Payment"); |
| | | TinggResponse tinggResponse = getTinggResponse(tinggRequest); |
| | | String s = JSON.toJSONString(tinggResponse); |
| | | System.out.println(s); |
| | | System.out.println("-------------"); |
| | | try { |
| | | String post = new HttpsUtil().post(urlPath,s,"UTF-8"); |
| | | System.out.println(post); |
| | | } catch (NoSuchAlgorithmException e) { |
| | | e.printStackTrace(); |
| | | } catch (KeyManagementException e) { |
| | | e.printStackTrace(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | public static TinggResponse getTinggResponse(TinggRequest tinggRequest) { |
| | | TinggResponse transferResponse = new TinggResponse(); |
| | | //设置国家代码 |
| | | transferResponse.setCountryCode(tinggRequest.getCountryCode()); |
| | | //设置功能 |
| | | transferResponse.setFunction(tinggRequest.getFunction()); |
| | | //获得有效载荷 |
| | | TinggPayload transferPayload = getTinggPayload(tinggRequest); |
| | | //设置有效载荷 |
| | | transferResponse.setPayload(transferPayload); |
| | | return transferResponse; |
| | | } |
| | | |
| | | private static TinggPayload getTinggPayload(TinggRequest tinggRequest) { |
| | | //有效载荷 |
| | | TinggPayload tinggPayload = new TinggPayload(); |
| | | //凭据 |
| | | HashMap<String, String> credentials = new LinkedHashMap<>(); |
| | | //设置用户名 |
| | | credentials.put("username", tinggRequest.getUsername()); |
| | | //设置支付密码 |
| | | credentials.put("password", tinggRequest.getPassword()); |
| | | //设置凭据 |
| | | tinggPayload.setCredentials(credentials); |
| | | |
| | | //有效负载的数据包 |
| | | ArrayList<Object> packet = new ArrayList<>(); |
| | | LinkedHashMap<String, Object> hs = getStringObjectHashMap(tinggRequest); |
| | | packet.add(hs); |
| | | //设置包 |
| | | tinggPayload.setPacket(packet); |
| | | return tinggPayload; |
| | | } |
| | | |
| | | private static LinkedHashMap<String, Object> getStringObjectHashMap(TinggRequest tinggRequest) { |
| | | LinkedHashMap<String, Object> hs = new LinkedHashMap<>(); |
| | | //设置服务代码 |
| | | hs.put("serviceCode", tinggRequest.getServiceCode()); |
| | | hs.put("MSISDN", tinggRequest.getMsisdn()); |
| | | //设置发票编码 |
| | | hs.put("invoiceNumber", tinggRequest.getInvoiceNumber()); |
| | | //设置账号 |
| | | hs.put("accountNumber", tinggRequest.getAccountNumber()); |
| | | //设置付款交易人编号 |
| | | hs.put("payerTransactionID", tinggRequest.getPayerTransactionID()); |
| | | //设置金额 |
| | | hs.put("amount", tinggRequest.getAmount()); |
| | | hs.put("hubID", tinggRequest.getHubID()); |
| | | hs.put("narration", tinggRequest.getNarration()); |
| | | //设置付款时间 |
| | | hs.put("datePaymentReceived", tinggRequest.getDatePaymentReceived()); |
| | | //额外数据 |
| | | HashMap<String, String> tempHs = new LinkedHashMap<>(); |
| | | //回调网址 |
| | | tempHs.put("callbackUrl", tinggRequest.getCallbackUrl()); |
| | | //设置额外数据 |
| | | hs.put("extraData", tempHs); |
| | | //设置货币代码 |
| | | hs.put("currencyCode", tinggRequest.getCurrencyCode()); |
| | | //设置客户名称 |
| | | hs.put("customerNames", tinggRequest.getCustomerNames()); |
| | | //设置支付方式 |
| | | hs.put("paymentMode", tinggRequest.getPaymentMode()); |
| | | return hs; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util.Tingg.enums; |
| | | |
| | | import lombok.Getter; |
| | | |
| | | /** |
| | | * @author chenza |
| | | * @date 2023/3/14 9:02 |
| | | */ |
| | | @Getter |
| | | public enum BankEnum { |
| | | |
| | | KCB_BANK("0001", "KCB"), |
| | | STANCHART_BANK("0002", "Stanchart"), |
| | | ABSA_BANK("0003", "ABSA"), |
| | | BANK_OF_INDIA("0005", "Bank of India"), |
| | | BANK_OF_BARODA("0006", "Bank of Baroda"), |
| | | NCBA_BANK("0007", "NCBA"), |
| | | PRIME_BANK("0010", "Prime Bank"), |
| | | COOP_BANK("0011", "Coop Bank"), |
| | | NBK_BANK("0012", "NBK"), |
| | | M_ORIENTAL("0014", "M-Oriental"), |
| | | CITI_BANK("0016", "Citi Bank"), |
| | | HABIB_BANK_AG_ZURICH("0017", "Habib Bank AG Zurich"), |
| | | MIDDLE_EAST_BANK("0018","Middle East Bank"), |
| | | BANK_OF_AFRICA("0019","Bank of Africa"), |
| | | CONSOLIDATED_BANK("0023","Consolidated"), |
| | | CREDIT_BANK("0025","Credit Bank"), |
| | | ACCESS_BANK("0026","Access Bank"), |
| | | CHASE_BANK("0030","Chase Bank"), |
| | | STANBIC_BANK("0031","Stanbic Bank"), |
| | | ABC_BANK("0035","ABC Bank"), |
| | | ECO_BANK("0043","Eco Bank"), |
| | | EQUATORIAL_COMMERCIAL_BANK("0049","Equatorial Commercial Bank"), |
| | | PARAMOUNT_BANK("0050","Paramount"), |
| | | KINGDOM_BANK("0051","Kingdom Bank"), |
| | | GT_BANK("0053","Gt Bank"), |
| | | VICTORIA_BANK("0054","Victoria Bank"), |
| | | GUARDIAN_BANK("0055","Guardian Bank"), |
| | | IM_BANK("0057","I&M Bank"), |
| | | DEVELOPMENT_BANK("0059","Development Bank"), |
| | | SBM_BANK("0060","SBM"), |
| | | HOUSING_FINANCE("0061","Housing finance"), |
| | | DTB_BANK("0063","DTB"), |
| | | MAYFAIR_BANK("0065","Mayfair Bank"), |
| | | SIDIAN_BANK("0066","Sidian Bank"), |
| | | EQUITY_BANK("0068","Equity Bank"), |
| | | FAMILY_BANK("0070","Family Bank"), |
| | | GULF_AFRICAN_BANK("0072","Gulf African Bank"), |
| | | FIRST_COMMUNITY_BANK("0074","First Community Bank"), |
| | | DIB_BANK("0075","DIB Bank"), |
| | | UBA_BANK("0076","UBA"), |
| | | KWFT_BANK("0078","KWFT"), |
| | | FAULU_BANK("0079","Faulu Bank"), |
| | | POST_BANK("0099","Post Bank"), |
| | | //Instant Payment Switch(及时支付开关) |
| | | IPS("9999","IPS"); |
| | | |
| | | private String destinationBankCode; |
| | | private String destinationBankName; |
| | | |
| | | private BankEnum(String destinationBankCode, String destinationBankName) { |
| | | this.destinationBankCode = destinationBankCode; |
| | | this.destinationBankName = destinationBankName; |
| | | } |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util.Tingg.model; |
| | | |
| | | import lombok.Data; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | |
| | | /** |
| | | * @author chenza |
| | | * @date 2023/3/14 10:10 |
| | | */ |
| | | |
| | | @Data |
| | | public class TinggPayload { |
| | | |
| | | /** |
| | | * 凭据 |
| | | */ |
| | | private HashMap<String,String> credentials; |
| | | /** |
| | | * 包 |
| | | */ |
| | | private ArrayList<Object> packet; |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util.Tingg.model; |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author chenza |
| | | * @date 2023/3/14 11:36 |
| | | */ |
| | | |
| | | @Data |
| | | public class TinggRequest { |
| | | /** |
| | | * 国家代码,例如:"NG" |
| | | */ |
| | | private String countryCode; |
| | | /** |
| | | * 功能,例如:"BEEP.postPayment" |
| | | */ |
| | | private String function; |
| | | /** |
| | | * 用户名称 |
| | | */ |
| | | private String username; |
| | | /** |
| | | * 用户密码 |
| | | */ |
| | | private String password; |
| | | /** |
| | | * 服务代码,例如:"NG-BANK-PAYOUT" |
| | | */ |
| | | private String serviceCode; |
| | | /** |
| | | * MSISDN,例如:"256700000000" |
| | | */ |
| | | private String msisdn; |
| | | /** |
| | | * 账号,例如:"00072186" |
| | | */ |
| | | private String accountNumber; |
| | | /** |
| | | * 付款人交易编号,例如:"yourUniqueID" |
| | | */ |
| | | private String payerTransactionID; |
| | | /** |
| | | * 金额,例如:50000 |
| | | */ |
| | | private Long amount; |
| | | /** |
| | | * 备注,例如:"Bank Payout" |
| | | */ |
| | | private String narration; |
| | | /** |
| | | * 收到付款的日期 |
| | | */ |
| | | private String datePaymentReceived; |
| | | /** |
| | | * 回调网址,例如:"https://yourCallBackUrl.com/receivePaymentStatus" |
| | | */ |
| | | private String callbackUrl; |
| | | /** |
| | | * 目的地银行代码,例如:"000012" |
| | | */ |
| | | private String destinationBankCode; |
| | | /** |
| | | * 目标账户名称,例如:"Shem B. Mwangi" |
| | | */ |
| | | private String destinationAccountName; |
| | | /** |
| | | * 目标账户号码,例如:"00072186" |
| | | */ |
| | | private String destinationAccountNo; |
| | | /** |
| | | * 目的地银行,例如:"StanbicIBTC Bank" |
| | | */ |
| | | private String destinationBank; |
| | | /** |
| | | * 支付方式,例如:"BANK" |
| | | */ |
| | | private String paymentMode; |
| | | /** |
| | | * 货币代码,例如: "NGN" |
| | | */ |
| | | private String currencyCode; |
| | | /** |
| | | * 客户名称,例如:"Shem B. Mwangi" |
| | | */ |
| | | private String customerNames; |
| | | /** |
| | | * 发票编码 |
| | | */ |
| | | private String invoiceNumber; |
| | | /** |
| | | * 标识 |
| | | */ |
| | | private String hubID; |
| | | |
| | | } |
New file |
| | |
| | | package com.stylefeng.guns.modular.system.util.Tingg.model; |
| | | |
| | | /** |
| | | * @author chenza |
| | | * @date 2023/3/14 9:21 |
| | | */ |
| | | |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * 转账响应 |
| | | */ |
| | | @Data |
| | | public class TinggResponse { |
| | | /** |
| | | * 国家代码例如"UG" |
| | | */ |
| | | private String countryCode; |
| | | /** |
| | | * 功能例如"BEEP.postPayment" |
| | | */ |
| | | private String function; |
| | | /** |
| | | * 有效载荷 |
| | | */ |
| | | private TinggPayload payload; |
| | | } |