📄 payproxyserviceimpl.java
字号:
package com.szhelper.pay.service.impl;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.*;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.MultipartPostMethod;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.alipay.util.Payment;
import com.szhelper.pay.Constants;
import com.szhelper.pay.dao.IDAOFactory;
import com.szhelper.pay.model.DownloadPayBean;
import com.szhelper.pay.model.UploadPayBean;
import com.szhelper.pay.quartz.base.Message;
import com.szhelper.pay.quartz.message.DownloadAlipRZipMessage;
import com.szhelper.pay.quartz.message.ParseAlipayRZipMessage;
import com.szhelper.pay.quartz.message.PayUploadMessage;
import com.szhelper.pay.quartz.util.FileCSVHelper;
import com.szhelper.pay.quartz.util.FileZipHelper;
import com.szhelper.pay.quartz.util.PayUtil;
import com.szhelper.pay.service.IPayProxyService;
import com.szhelper.pay.quartz.util.Queue;
/**
*
* @author Fang
* @version 1.0
* @date 2008-08-06
*/
public class PayProxyServiceImpl implements IPayProxyService {
private static Log logger = LogFactory.getLog(PayProxyServiceImpl.class);
private IDAOFactory daoFactory;
private Map uploadPayConfig;
private Map downloadPayConfig;
private String paygateway;
private String partner;
private String key;
private String acount;
private String seqPreFix;
public PayProxyServiceImpl() {
}
public Message prepareSendUploadPM(String csvfilename) {
/** *********************上传配置参数*********************** */
String service = (String) uploadPayConfig.get("service");// 快速付款交易服务
String file_digest_type = (String) uploadPayConfig
.get("file_digest_type");// "SHA";
String sign_type = (String) uploadPayConfig.get("sign_type");
// ***************************************************
String biz_type = (String) uploadPayConfig.get("biz_type");
// ***************************************************
String input_charset = (String) uploadPayConfig.get("input_charset");
String flag = (String) uploadPayConfig.get("flag");
String uploadPath = (String) uploadPayConfig.get("uploadPath");
String uploadLog = (String) uploadPayConfig.get("uploadLog");
MultipartPostMethod mPost = new MultipartPostMethod(paygateway);
PayUploadMessage message = new PayUploadMessage();
FileInputStream fileInputStream = null;
String bptb_pay_file = uploadPath+"/"+csvfilename;
try {
fileInputStream = new FileInputStream(new File(bptb_pay_file));
int size = fileInputStream.available();
byte[] contentL = new byte[size];
// md5方式*********************************************************************
DigestUtils.md5(contentL);
// 需要使用IOUtils.toByteArray是否提醒商户知道?
String digest_bptb_pay_file = DigestUtils.md5Hex(IOUtils
.toByteArray(fileInputStream));
String ItemUrl = Payment.CreateUrl(paygateway + "?", service,
partner, biz_type, file_digest_type, sign_type, key,
input_charset, digest_bptb_pay_file);
mPost.addParameter("_input_charset", input_charset);
mPost.addParameter("partner", partner);
mPost.addParameter("service", service);
mPost.addParameter("sign", ItemUrl);
mPost.addParameter("sign_type", sign_type);
mPost.addParameter("digest_bptb_pay_file", digest_bptb_pay_file
.toString());
mPost.addParameter("file_digest_type", file_digest_type);
mPost.addParameter("biz_type", biz_type);
mPost.addParameter("bptb_pay_file", new File(bptb_pay_file));
message.setPostMethod(mPost);
message.setOpUser(Constants.ALIPAY_OP_USER);
message.setCsvUploading(bptb_pay_file);
message.setCsvname(csvfilename);
message.setUploadLog(uploadLog);
logger.info("successfully loading upload-alipay-content to queue.");
} catch (Exception ex) {
ex.printStackTrace();
logger.error(ex);
rollbackPrepareSendUploadPM(message);
message = null;
}
return message;
}
/**
* @deprecated
* @return
*/
public Message prepareSendUploadPM_() {
/** *********************上传配置参数*********************** */
String service = (String) uploadPayConfig.get("service");// 快速付款交易服务
String file_digest_type = (String) uploadPayConfig
.get("file_digest_type");// "SHA";
String sign_type = (String) uploadPayConfig.get("sign_type");
// ***************************************************
String biz_type = (String) uploadPayConfig.get("biz_type");
// ***************************************************
String input_charset = (String) uploadPayConfig.get("input_charset");
String flag = (String) uploadPayConfig.get("flag");
String uploadPath = (String) uploadPayConfig.get("uploadPath");
MultipartPostMethod mPost = new MultipartPostMethod(paygateway);
PayUploadMessage message = new PayUploadMessage();
FileInputStream fileInputStream = null;
String zipfile = "", csvfile = "", bptb_pay_file = "";
boolean success = true;
try {
List<UploadPayBean> list = daoFactory.getPayUploadDao().load();
StringBuffer contentBuf = new StringBuffer();
StringBuffer recordBuf = new StringBuffer();
recordBuf.append(Constants.ALIPAY_UPLOAD_TABLE_TITLE_SEQ).append(
Constants.ALIPAY_SEPARATOR);
recordBuf.append(Constants.ALIPAY_UPLOAD_TABLE_TITLE_USERNAME)
.append(Constants.ALIPAY_SEPARATOR);
recordBuf.append(Constants.ALIPAY_UPLOAD_TABLE_TITLE_BANKACOUNT)
.append(Constants.ALIPAY_SEPARATOR);
recordBuf.append(Constants.ALIPAY_UPLOAD_TABLE_TITLE_BANKNAME)
.append(Constants.ALIPAY_SEPARATOR);
recordBuf.append(Constants.ALIPAY_UPLOAD_TABLE_TITLE_PROVINCE)
.append(Constants.ALIPAY_SEPARATOR);
recordBuf.append(Constants.ALIPAY_UPLOAD_TABLE_TITLE_CITY).append(
Constants.ALIPAY_SEPARATOR);
recordBuf.append(Constants.ALIPAY_UPLOAD_TABLE_TITLE_BRANCHNAME)
.append(Constants.ALIPAY_SEPARATOR);
recordBuf.append(Constants.ALIPAY_UPLOAD_TABLE_TITLE_MONEY).append(
Constants.ALIPAY_SEPARATOR);
recordBuf.append(Constants.ALIPAY_UPLOAD_TABLE_TITLE_FLAG).append(
Constants.ALIPAY_SEPARATOR);
recordBuf.append(Constants.ALIPAY_UPLOAD_TABLE_TITLE_NOTE).append(
"\r\n");
String sysDatetime = PayUtil.getCurrDate();
int totalRecord = list.size();
int totalMoney = 0;
for (UploadPayBean bean : list) {
if (bean.getJYDM() != 1301) {
logger.info("81666 has not withdrawing request.");
return null;
}
recordBuf.append(
PayUtil.formatFlowId(seqPreFix, bean.getAUTOID()))
.append(Constants.ALIPAY_SEPARATOR);
message.getSeqsUploaded().append(bean.getAUTOID()).append(
Constants.ALIPAY_SEPARATOR);
recordBuf.append(bean.getBANKUSERNAME()).append(
Constants.ALIPAY_SEPARATOR);
recordBuf.append(bean.getBANKCNUMBER()).append(
Constants.ALIPAY_SEPARATOR);
recordBuf.append(bean.getBANKNAME()).append(
Constants.ALIPAY_SEPARATOR);
recordBuf.append(bean.getPROV()).append(
Constants.ALIPAY_SEPARATOR);
recordBuf.append(bean.getCITY()).append(
Constants.ALIPAY_SEPARATOR);
recordBuf.append(bean.getBANKADDRESS()).append(
Constants.ALIPAY_SEPARATOR);
recordBuf.append(bean.getMONEY()).append(
Constants.ALIPAY_SEPARATOR);
totalMoney += bean.getMONEY();
recordBuf.append(flag).append(Constants.ALIPAY_SEPARATOR);
recordBuf.append(bean.getNOTE()).append(
Constants.ALIPAY_SEPARATOR);
recordBuf.append("\r\n");
}
/** ************ 概要 **************************************** */
contentBuf.append(Constants.ALIPAY_UPLOAD_MAIN_TITLE_DATE).append(
Constants.ALIPAY_SEPARATOR);
contentBuf.append(Constants.ALIPAY_UPLOAD_MAIN_TITLE_TOTALMONEY)
.append(Constants.ALIPAY_SEPARATOR);
contentBuf.append(Constants.ALIPAY_UPLOAD_MAIN_TITLE_TOTALRECORD)
.append(Constants.ALIPAY_SEPARATOR);
contentBuf.append(Constants.ALIPAY_UPLOAD_MAIN_TITLE_ALIPAYACOUNT)
.append(Constants.ALIPAY_SEPARATOR);
contentBuf.append(Constants.ALIPAY_SEPARATOR).append(
Constants.ALIPAY_SEPARATOR).append(
Constants.ALIPAY_SEPARATOR).append(
Constants.ALIPAY_SEPARATOR).append(
Constants.ALIPAY_SEPARATOR);
contentBuf.append("\r\n");
contentBuf.append(sysDatetime.substring(0, 8)).append(
Constants.ALIPAY_SEPARATOR);
contentBuf.append(totalMoney).append(Constants.ALIPAY_SEPARATOR);
contentBuf.append(totalRecord).append(Constants.ALIPAY_SEPARATOR);
contentBuf.append(acount).append(Constants.ALIPAY_SEPARATOR);
contentBuf.append(Constants.ALIPAY_SEPARATOR).append(
Constants.ALIPAY_SEPARATOR).append(
Constants.ALIPAY_SEPARATOR).append(
Constants.ALIPAY_SEPARATOR).append(
Constants.ALIPAY_SEPARATOR);
contentBuf.append("\r\n");
contentBuf.append(recordBuf);
logger.info("Start to ready alipay file to queue...");
logger
.info("----------------alipay content start----------------------");
logger.info(contentBuf.toString());
logger.info("----------------alipay content end---------------");
csvfile = sysDatetime + Constants.POSTFIX_CSV;
String logcsvfile = csvfile;
zipfile = uploadPath + "/" + sysDatetime + Constants.POSTFIX_ZIP;
// csvQueue.push(csvfile);
/** ***************** 生成CSV文件 *********************************** */
csvfile = uploadPath + "/" + csvfile;
success = FileCSVHelper.generateCSVFile(csvfile, contentBuf
.toString());
/** ***************** 生成Zip文件 *********************************** */
/*
* if (success) success = FileZipHelper.zipFile(csvfile, zipfile);
*/
if (!success) {
logger.info("generate upload file [" + csvfile + "] error.");
return null;
}
bptb_pay_file = csvfile;
fileInputStream = new FileInputStream(new File(bptb_pay_file));
int size = fileInputStream.available();
byte[] contentL = new byte[size];
// md5方式*********************************************************************
DigestUtils.md5(contentL);
// 需要使用IOUtils.toByteArray是否提醒商户知道?
String digest_bptb_pay_file = DigestUtils.md5Hex(IOUtils
.toByteArray(fileInputStream));
String ItemUrl = Payment.CreateUrl(paygateway + "?", service,
partner, biz_type, file_digest_type, sign_type, key,
input_charset, digest_bptb_pay_file);
mPost.addParameter("_input_charset", input_charset);
mPost.addParameter("partner", partner);
mPost.addParameter("service", service);
mPost.addParameter("sign", ItemUrl);
mPost.addParameter("sign_type", sign_type);
mPost.addParameter("digest_bptb_pay_file", digest_bptb_pay_file
.toString());
mPost.addParameter("file_digest_type", file_digest_type);
mPost.addParameter("biz_type", biz_type);
mPost.addParameter("bptb_pay_file", new File(bptb_pay_file));
message.setPostMethod(mPost);
message.setOpUser(Constants.ALIPAY_OP_USER);
FileCSVHelper.logUploadedFileName(logcsvfile,
(String) uploadPayConfig.get("uploadLog"), true,
"push cvs-file-name [" + logcsvfile + "] uploaded to "
+ (String) uploadPayConfig.get("uploadLog"));
logger.info("successfully loading upload-alipay-content to queue.");
} catch (Exception ex) {
ex.printStackTrace();
logger.error(ex);
rollbackPrepareSendUploadPM(message);
message = null;
}
return message;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -