⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 payproxyserviceimpl.java

📁 项目支付宝批量打款,采用httpclient+spring +quarz实现.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
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 + -