
com.github.freegeese.weixin.pay.PayCommonApi Maven / Gradle / Ivy
package com.github.freegeese.weixin.pay;
import com.alibaba.fastjson.JSON;
import com.github.freegeese.weixin.core.util.HttpUtils;
import com.github.freegeese.weixin.core.util.XStreamUtils;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* 公共的支付接口实现
*/
public abstract class PayCommonApi {
public static final String REFUNDQUERY_URL = "https://api.mch.weixin.qq.com/pay/refundquery";
public static final String UNIFIEDORDER_URL = "https://api.mch.weixin.qq.com/pay/unifiedorder";
public static final String CLOSEORDER_URL = "https://api.mch.weixin.qq.com/pay/closeorder";
public static final String REFUND_URL = "https://api.mch.weixin.qq.com/secapi/pay/refund";
public static final String REPORT_URL = "https://api.mch.weixin.qq.com/payitil/report";
public static final String BATCHQUERYCOMMENT_URL = "https://api.mch.weixin.qq.com/billcommentsp/batchquerycomment";
public static final String DOWNLOADBILL_URL = "https://api.mch.weixin.qq.com/pay/downloadbill";
public static final String ORDERQUERY_URL = "https://api.mch.weixin.qq.com/pay/orderquery";
/**
* 公共输入参数
*/
private static enum CommonInputParameter {
appid, // required
mch_id, // required
nonce_str, // required
sign, // optional
sign_type, // optional
}
/**
* 公共输出参数
*/
private static enum CommonOutputParameter {
return_code, // required
return_msg, // required
err_code, // optional
err_code_des // optional
}
/**
* 统一下单
*
* @param input
* @param outputClass
* @param
* @param
* @return
*/
public static O unifiedOrder(I input, Class outputClass) {
return sendRequest(UNIFIEDORDER_URL, input, outputClass);
}
/**
* 订单查询
*
* @param input
* @param outputClass
* @param
* @param
* @return
*/
public static O orderQuery(I input, Class outputClass) {
return sendRequest(ORDERQUERY_URL, input, outputClass);
}
public static O closeOrder(I input, Class outputClass) {
return sendRequest(CLOSEORDER_URL, input, outputClass);
}
public static O refund(I input, Class outputClass) {
return sendRequest(REFUND_URL, input, outputClass);
}
public static O refundQuery(I input, Class outputClass) {
return sendRequest(REFUNDQUERY_URL, input, outputClass);
}
/**
* 下载对账单
*
* @param input
* @param outputClass
* @param
* @param
* @return
*/
public static O downloadBill(I input, Class outputClass) {
String data = HttpUtils.postXmlForString(DOWNLOADBILL_URL, input).trim();
if (data.startsWith("<")) {
return XStreamUtils.toObject(data, outputClass);
}
String[] lines = data.split(System.lineSeparator());
// 交易明细表头
String[] detailsHeads = lines[0].split(",");
// 交易明细内容
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy