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;
|
}
|
}
|