package com.aaden.pay.service.biz.tp.allinpay.adaptor;
import java.io.File;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.springframework.stereotype.Component;
import com.aaden.pay.api.biz.enums.allinpay.AllinPayBankType;
import com.aaden.pay.api.biz.vo.BankRequest;
import com.aaden.pay.api.biz.vo.PayRequest;
import com.aaden.pay.api.comm.enums.TradeStatus;
import com.aaden.pay.api.comm.model.ThirdBankSend;
import com.aaden.pay.api.comm.model.ThirdPayRecord;
import com.aaden.pay.core.utils.BigDecimalUtils;
import com.aaden.pay.core.utils.DateUtils;
import com.aaden.pay.core.utils.FileUtils;
import com.aaden.pay.core.utils.XmlBeanJsonConverUtil;
import com.aaden.pay.service.biz.base.PaymentCommon;
import com.aaden.pay.service.biz.exception.PaymentSignException;
import com.aaden.pay.service.biz.tp.allinpay.prop.AllinpayProperties;
import com.aaden.pay.service.biz.tp.allinpay.util.AllinpayXmlTools;
import com.aaden.pay.service.biz.tp.allinpay.vo.AllinpayAipgResp;
import com.aaden.pay.service.biz.tp.allinpay.vo.RNPA;
import com.aaden.pay.service.biz.tp.allinpay.vo.RNPC;
import com.aaden.pay.service.biz.util.BankUtils;
import com.aipg.common.AipgReq;
import com.aipg.common.AipgRsp;
import com.aipg.common.InfoReq;
import com.aipg.common.XSUtil;
import com.aipg.payreq.Body;
import com.aipg.payreq.Trans_Detail;
import com.aipg.payreq.Trans_Sum;
import com.aipg.rtreq.Trans;
import com.aipg.transquery.TransQueryReq;
import com.allinpay.XmlTools;
/**
* @Description 通联认证支付适配器
* @author aaden
* @date 2017年12月24日
*/
@Component
public class AllinAuthpayAdaptor extends PaymentCommon {
public String daifu_business = AllinpayProperties.auth_daifu_business;
public String daikou_business = AllinpayProperties.auth_daikou_business;
protected String merchantId = AllinpayProperties.auth_merchantId;
protected String url = AllinpayProperties.auth_url;
protected String check_url = AllinpayProperties.auth_check_url;
String pfxName = this.getCreditAbsolutePath(AllinpayProperties.auth_pfxPath);
String pfxPassword = AllinpayProperties.auth_pfxPassword;
protected String cerPath = this.getCreditAbsolutePath(AllinpayProperties.auth_cerPath);
String username = AllinpayProperties.auth_username;
String password = AllinpayProperties.auth_password;
// 通联交易不确定的订单响应代码
protected final List<String> RETRY_CODE_LIST = Arrays.asList("1002", "2000", "2001", "2003", "2005", "2007", "2008");
// 通联交易不确定的订单响应代码
public final List<String> SUCCESS_LIST = Arrays.asList("0000", "4000");
/**
* 批量交易
*/
public AipgRsp sendBatch(String trx_code, String busicode, ThirdPayRecord payRecord, PayRequest payRequest) {
AipgReq aipg = new AipgReq();
InfoReq info = this.getInfoReq(trx_code, (payRecord.getSerialnumber()));
aipg.setINFO(info);
Body body = new Body();
Trans_Sum trans_sum = new Trans_Sum();
trans_sum.setBUSINESS_CODE(busicode);
trans_sum.setMERCHANT_ID(merchantId);
trans_sum.setTOTAL_ITEM("1");
BigDecimal amt = payRecord.getOrderAmount().multiply(new BigDecimal("100")).setScale(0, BigDecimal.ROUND_DOWN);
trans_sum.setTOTAL_SUM(String.valueOf(amt));
body.setTRANS_SUM(trans_sum);
List<Trans_Detail> transList = new ArrayList<Trans_Detail>();
Trans_Detail trans_detail = null;
{
trans_detail = new Trans_Detail();
trans_detail.setSN(payRecord.getSerialnumber());
trans_detail.setACCOUNT_NO(payRecord.getCardNo());
trans_detail.setACCOUNT_NAME(payRecord.getRealName());
trans_detail.setACCOUNT_PROP(payRecord.getCardProp().getCode());
trans_detail.setBANK_CODE(AllinPayBankType.parse(payRecord.getBankType()).getCode());
BigDecimal amtDtl = payRecord.getOrderAmount();
trans_detail.setAMOUNT(String.valueOf(amtDtl.multiply(new BigDecimal("100")).setScale(0, BigDecimal.ROUND_DOWN)));
trans_detail.setCURRENCY("CNY");
String prov = BankUtils.getAreaCnName(payRequest.getCash().getBankProv());
String city = BankUtils.getAreaCnName(payRequest.getCash().getBankCity());
prov = prov == null ? null : prov.replace("省", "");
city = city == null ? null : city.replace("市", "");
trans_detail.setPROVINCE(prov);
trans_detail.setCITY(city);
trans_detail.setBANK_NAME(payRequest.getCash().getBranchName());
trans_detail.setREMARK(payRequest.getCash().getPayRemark());
trans_detail.setSUMMARY(payRequest.getCash().getPayRemark());
transList.add(trans_detail);
}
body.setDetails(transList);
aipg.addTrx(body);
String resultXml = null;
try {
String xml = AllinpayXmlTools.buildXml(aipg, Boolean.TRUE);
resultXml = sendXml(xml, url, Boolean.FALSE);
} catch (Exception e) {// 发送异常
logger.error(" 通联连接异常:", e);
}
AipgRsp aipgrsp = resultXml == null ? null : XSUtil.parseRsp(resultXml);
return aipgrsp;
}
/**
* 单笔交易,代扣,代付
*/
public AipgRsp sendTrade(String trx_code, String busicode, ThirdPayRecord tr, PayRequest payRequest) {
AipgReq aipg = new AipgReq();
AllinPayBankType bankType = AllinPayBankType.parse(tr.getBankType());
InfoReq info = this.getInfoReq(trx_code, (tr.getSerialnumber()));
aipg.setINFO(info);
Trans trans = new Trans();
trans.setBUSINESS_CODE(busicode);
trans.setMERCHANT_ID(merchantId);
trans.setSUBMIT_TIME(DateUtils.cfs(new Date()));
trans.setACCOUNT_NO(tr.getCardNo());
trans.setACCOUNT_NAME(tr.getRealName());
trans.setBANK_CODE(bankType.getCode());
trans.setACCOUNT_PROP(tr.getCardProp().getCode());
BigDecimal amt = tr.getOrderAmount().multiply(BigDecimalUtils.ONE_HUNDRED).setScale(0, BigDecimal.ROUND_DOWN);
trans.setAMOUNT(String.valueOf(amt));
trans.setCUST_USERID(tr.getUserId());
trans.setCURRENCY("CNY");
trans.setID_TYPE("0");// 身份证
trans.setTEL(payRequest.getRecharge().getMobile());
trans.setID(payRequest.getRecharge().getIdNo());
trans.setREMARK(payRequest.getCash().getPayRemark());
trans.setSUMMARY(payRequest.getCash().getPayRemark());
aipg.addTrx(trans);
String resultXml = null;
try {
String xml = AllinpayXmlTools.buildXml(aipg, Boolean.TRUE);
resultXml = this.sendXml(xml, url, Boolean.FALSE);
} catch (Exception e) {// 发送异常
logger.error(" 通联连接异常:", e);
}
AipgRsp aipgrsp = resultXml == null ? null : XSUtil.parseRsp(resultXml);
return aipgrsp;
}
/**
* 查询报文
*/
public AipgRsp sendQuery(ThirdPayRecord tr) {
AipgReq aipgReq = new AipgReq();
InfoReq info = this.getInfoReq("200004", String.valueOf(System.currentTimeMillis()));
aipgReq.setINFO(info);
TransQueryReq dr = new TransQueryReq();
aipgReq.addTrx(dr);
dr.setMERCHANT_ID(merchantId);
dr.setQUERY_SN((tr.getSerialnumber()));
dr.setSTATUS(2);// 交易状态条件, 0成功,1失败, 2全部,3退票
dr.setTYPE(1);// 0.按完成日期1.按提交日期,默认为1 ;如果使用0查询,未完成交易将查不到
String xml = AllinpayXmlTools.buildXml(aipgReq, Boolean.TRUE);
String resultXml = sendXml(xml, url, Boolean.FALSE);
AipgRsp aipgrsp = resultXml == null ? null : XSUtil.parseRsp(resultXml);
return aipgrsp;
}
/**
* 预绑卡
*/
public AllinpayAipgResp sendPreBindcard(BankRequest request, ThirdBankSend bankSend) {
AipgReq aipg = new AipgReq();
InfoReq info = this.getInfoReq("211006", (bankSend.getReq()));
aipg.setINFO(info);
String code = AllinPayBankType.parse(bankSend.getBankType()).getCode();
RNPA rnpa = new RNPA();
rnpa.setSUBMIT_TIME(DateUtils.cfs(new Date()));
rnpa.setMERCHANT_ID(this.merchantId);
rnpa.setBANK_CODE(code);
rnpa.setACCOUNT_TYPE("00");// 00银行卡,01存折,02信用卡
rnpa.setACCOUNT_NO(bankSend.getCardNo());
rnpa.setA
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于互联网金融理财环境下产生的支付系统 (320个子文件)
TLCert-test.cer 1KB
baofoo_pub.cer 1KB
bfkey_100000178@@100000916.cer 1KB
bfkey_100000276@@100000990.cer 890B
20060400000044502.cer 855B
_0.cfe 299B
_0.cfs 5.88MB
H-ui.css 140KB
H-ui.min.css 99KB
iconfont.css 12KB
icheck.css 12KB
layer.css 11KB
H-ui.admin.css 10KB
datepicker-dev.css 5KB
datepicker.css 4KB
agreement.css 4KB
datepicker.css 3KB
datepicker.css 3KB
H-ui.reset.css 3KB
layer.ext.css 3KB
pagination.css 1KB
skin.css 1KB
autocompleter.css 1KB
WdatePicker.css 144B
style.css 44B
iconfont.eot 92KB
loading-0.gif 6KB
loading-2.gif 2KB
img.gif 2KB
img.gif 2KB
datePicker.gif 1KB
loading-1.gif 701B
img.gif 475B
.gitignore 77B
cash_form.html 7KB
pay_list.html 7KB
bank_list.html 5KB
bank_form.html 4KB
validcode_list.html 4KB
public.html 4KB
recharge_form.html 3KB
gateway_form.html 3KB
pay_view.html 2KB
index.html 2KB
bank_view.html 1KB
readme.html 1011B
sdk-1.0.aaden.jar 171KB
gateway-sdk-1.0.aaden.jar 37KB
AllinAuthpayAdaptor.java 14KB
AllinGatewayAdaptor.java 12KB
BaofooAuthAdaptor.java 12KB
BaofooSecurityUtil.java 11KB
RedisServiceImpl.java 10KB
BaofooRsaCodingUtil.java 10KB
AllinPayAuthServiceImpl.java 9KB
PaymentServiceImpl.java 9KB
BankServiceImpl.java 9KB
HttpClientHelper.java 9KB
BaofooFormatUtil.java 8KB
ThirdPayRecord.java 8KB
PaymentValidate.java 8KB
PaymentTransaction.java 7KB
BaofooPayAdaptor.java 7KB
BaofooAuthServiceImpl.java 7KB
AllinPayGatewayServiceImpl.java 7KB
BaofooPayServiceImpl.java 7KB
ClassUtil.java 6KB
Page.java 6KB
IdCardUtils.java 6KB
LianlianBranchTest.java 6KB
MyBatisDaoImpl.java 6KB
BankcardBinTest.java 6KB
SearchServiceImpl.java 6KB
CashController.java 5KB
LianlianPayUtil.java 5KB
BaofooMapToXMLString.java 5KB
RechargeRoute.java 5KB
XmlUtils.java 5KB
QueryController.java 5KB
PagePluging.java 5KB
DbPayServiceImpl.java 5KB
LianlianClient.java 5KB
MemoryLabelParser.java 5KB
ThirdBankSend.java 5KB
ThirdPayRecordServiceImpl.java 4KB
BaofooRsaReadUtil.java 4KB
RechargeController.java 4KB
AllinPaymentTest.java 4KB
BaofooPayTest.java 4KB
PaymentConstans.java 4KB
RedisClient.java 4KB
PayTaskServiceImpl.java 4KB
BaofooResponse.java 4KB
RedisEncode.java 4KB
SpringContextHelper.java 4KB
BankUtils.java 4KB
ThirdBankSendServiceImpl.java 4KB
BankRequest.java 4KB
DateUtils.java 3KB
TransRespBF0040002.java 3KB
共 320 条
- 1
- 2
- 3
- 4
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6804
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功