This commit is contained in:
xiangwb
2018-03-27 17:43:41 +08:00
parent b3b31a277b
commit 456c479f7a
12 changed files with 84 additions and 110 deletions
@@ -15,24 +15,25 @@ import java.util.List;
public class CreateOrderNoDemo {
public synchronized static String getNo() {
String sequence = "";
String sequence;
SimpleDateFormat sdf = new SimpleDateFormat("YYYY_MM_DD");
String date = sdf.format(new Date());
StringBuffer sql = new StringBuffer("select * from order_table");
StringBuilder sql = new StringBuilder("select * from order_table");
sql.append(" where order_no like '" + date + "%'");
sql.append(" order by create_time desc");
List<Order> list=queryList();
if(CollectionUtils.isNotEmpty(list)){
List<Order> list = queryList();
if (CollectionUtils.isNotEmpty(list)) {
String orderNo = list.get(0).getOrderNo();
long newOrderNo = Long.valueOf(orderNo.substring(8, 18)) + 1;
String sequ = new DecimalFormat("0000000000").format(newOrderNo);
sequence = date + sequ;
}else {
} else {
sequence = date + "0000000000";
}
return sequence;
}
class Order{//模拟订单类
class Order {//模拟订单类
String orderNo;
public String getOrderNo() {
@@ -42,13 +43,15 @@ public class CreateOrderNoDemo {
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
}
public static List<Order> queryList(){//模拟查询
public static List<Order> queryList() {//模拟查询
return null;
}
public static void main(String[] args) {
long a=12356;
long a = 12356;
String sequ = new DecimalFormat("0000000000").format(a);
System.out.println(sequ);
}
@@ -10,7 +10,7 @@ import lombok.Data;
* 作者: xiangwb
*/
@Data
public class AlipayBarCodePayParam {
public class AliPayBarCodePayParam {
/**
* 本系统订单号
*/
@@ -35,7 +35,7 @@ public class AlipayBarCodePayParam {
@JSONField(name = "total_amount")
private float totalAmount;
public AlipayBarCodePayParam(String outTradeNo, String authCode, String subject, float totalAmount) {
public AliPayBarCodePayParam(String outTradeNo, String authCode, String subject, float totalAmount) {
this.outTradeNo = outTradeNo;
this.authCode = authCode;
this.subject = subject;
@@ -15,7 +15,7 @@ import java.util.List;
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AlipayBarCodePayResult extends AlipayBaseResult {
public class AliPayBarCodePayResult extends AliPayBaseResult {
public static final String HASPAYED = "ACQ.TRADE_HAS_SUCCESS";
/**
@@ -55,7 +55,7 @@ public class AlipayBarCodePayResult extends AlipayBaseResult {
*/
private String discountGoodsDetail;
public AlipayBarCodePayResult(boolean isSuccess) {
public AliPayBarCodePayResult(boolean isSuccess) {
this.setSuccess(isSuccess);
}
@@ -9,7 +9,7 @@ import lombok.Data;
* 作者: xiangwb
*/
@Data
public class AlipayBaseResult {
public class AliPayBaseResult {
/**
* 是否成功
*/
@@ -7,7 +7,7 @@ package com.xwbing.domain.entity.pay.alipay;
* 作者: xiangwb
*/
public class AlipayConstant {
public class AliPayConstant {
/**
* 接口调用成功
*/
@@ -11,13 +11,13 @@ import lombok.EqualsAndHashCode;
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AlipayQueryResult extends AlipayBaseResult {
public class AliPayQueryResult extends AliPayBaseResult {
/**
* 交易支付状态
*/
private String tradeStatus;
public AlipayQueryResult(boolean success) {
public AliPayQueryResult(boolean success) {
this.setSuccess(success);
}
}
@@ -10,7 +10,7 @@ import lombok.Data;
* 作者: xiangwb
*/
@Data
public class AlipayRefundParam {
public class AliPayRefundParam {
/**
* 本系统订单号 订单号和支付宝交易号2选1
*/
@@ -37,14 +37,14 @@ public class AlipayRefundParam {
@JSONField(name = "refund_reason")
private String refundReason;
public AlipayRefundParam(String outRequestNo, String outTradeNo, float refundAmount, String refundReason) {
public AliPayRefundParam(String outRequestNo, String outTradeNo, float refundAmount, String refundReason) {
this.outRequestNo = outRequestNo;
this.outTradeNo = outTradeNo;
this.refundAmount = refundAmount;
this.refundReason = refundReason;
}
public AlipayRefundParam(String outRequestNo, String tradeNo, String refundReason, float refundAmount) {
public AliPayRefundParam(String outRequestNo, String tradeNo, String refundReason, float refundAmount) {
this.outRequestNo = outRequestNo;
this.tradeNo = tradeNo;
this.refundAmount = refundAmount;
@@ -14,7 +14,7 @@ import java.util.Date;
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AlipayRefundResult extends AlipayBaseResult {
public class AliPayRefundResult extends AliPayBaseResult {
/**
* 支付宝交易号
*/
@@ -51,7 +51,7 @@ public class AlipayRefundResult extends AlipayBaseResult {
@JSONField(name = "buyer_user_id")
private String buyerUserId;
public AlipayRefundResult(boolean isSuccess) {
public AliPayRefundResult(boolean isSuccess) {
this.setSuccess(isSuccess);
}
}
@@ -6,7 +6,7 @@ package com.xwbing.domain.entity.pay.alipay;
* 创建时间: 2017/5/10 17:39
* 作者: xiangwb
*/
public enum AlipayTradeStatusEnum {
public enum AliPayTradeStatusEnum {
WAIT_BUYER_PAY("交易创建,等待买家付款", "WAIT_BUYER_PAY"),
TRADE_CLOSED("未付款交易超时关闭,或支付完成后全额退款", "TRADE_CLOSED"),
TRADE_SUCCESS("交易支付成功", "TRADE_SUCCESS"),
@@ -15,7 +15,7 @@ public enum AlipayTradeStatusEnum {
private String code;
private String name;
private AlipayTradeStatusEnum(String name, String code) {
private AliPayTradeStatusEnum(String name, String code) {
this.code = code;
this.name = name;
}
@@ -25,33 +25,33 @@ import java.util.Objects;
/**
* 说明: 支付宝支付接口实现
* 项目名称: spring-demo
* 创建时间: 2017/5/10 17:30
* 创建时间: 2017/5/10 17:50
* 作者: xiangwb
*/
@Service
@PropertySource("classpath:pay.properties")
public class AlipayService {
private final Logger logger = LoggerFactory.getLogger(AlipayService.class);
public class AliPayService {
private final Logger logger = LoggerFactory.getLogger(AliPayService.class);
/**
* 支付宝分配给开发者的应用ID
*/
@Value("${alipay.appId}")
private static String appId;
@Value("${aliPay.appId}")
private String appId;
/**
* 私钥
*/
@Value("${alipay.rsaPrivateKey}")
private static String privateKey;
@Value("${aliPay.rsaPrivateKey}")
private String privateKey;
/**
* 公钥
*/
@Value("${alipay.rsaPublicKey}")
private static String publicKey;
@Value("${aliPay.rsaPublicKey}")
private String publicKey;
/**
* 请求url
*/
@Value("${alipay.requestUrl}")
private static String requestUrl;
@Value("${aliPay.requestUrl}")
private String requestUrl;
/**
* 条形码扫码付
@@ -59,10 +59,10 @@ public class AlipayService {
* @param param
* @return
*/
public AlipayBarCodePayResult barCodePay(AlipayBarCodePayParam param) {
public AliPayBarCodePayResult barCodePay(AliPayBarCodePayParam param) {
//设置条码支付
param.setScene("bar_code");
AlipayBarCodePayResult result = new AlipayBarCodePayResult(false);
AliPayBarCodePayResult result = new AliPayBarCodePayResult(false);
String checkArgument = checkArgument(param);
if (StringUtils.isNotEmpty(checkArgument)) {
result.setMessage(checkArgument);
@@ -81,7 +81,8 @@ public class AlipayService {
logger.error(e.getMessage());
throw new PayException("扫码支付异常");
}
result.setSuccess(response.isSuccess()); //源码StringUtils.isEmpty(this.subCode)
//源码StringUtils.isEmpty(this.subCode)
result.setSuccess(response.isSuccess());
//根据response中的结果继续业务逻辑处理:subCode不为空,表示接口调用失败|code为10000,代表接口调用成功,subCode为空
if (StringUtils.isEmpty(response.getSubCode())) {
result.setCode(response.getCode());
@@ -101,7 +102,7 @@ public class AlipayService {
result.setFundBillList(response.getFundBillList());
result.setBuyerUserId(response.getBuyerUserId());
result.setDiscountGoodsDetail(response.getDiscountGoodsDetail());
logger.info("result = " + result);
logger.info("result = {}", result);
return result;
}
@@ -111,12 +112,11 @@ public class AlipayService {
* @param param
* @return
*/
public AlipayRefundResult refund(AlipayRefundParam param) {
AlipayRefundResult result = new AlipayRefundResult(false);
public AliPayRefundResult refund(AliPayRefundParam param) {
AliPayRefundResult result = new AliPayRefundResult(false);
AlipayClient alipayClient = new DefaultAlipayClient(requestUrl, appId, privateKey, "json", "UTF-8", publicKey, "RSA2");
AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
request.setBizContent(JSONObject.toJSONString(param));
//通过aliPayClient调用API,获得对应的response类
AlipayTradeRefundResponse response;
try {
response = alipayClient.execute(request);
@@ -125,7 +125,6 @@ public class AlipayService {
throw new PayException("退款异常");
}
result.setSuccess(response.isSuccess());
//如果subCode存在,代表调用接口失败
if (StringUtils.isNotEmpty(response.getSubCode())) {
logger.error(response.getSubMsg());
result.setCode(response.getSubCode());
@@ -142,23 +141,23 @@ public class AlipayService {
result.setRefundFee(response.getRefundFee());
result.setGmtRefundPay(response.getGmtRefundPay());
result.setBuyerUserId(response.getBuyerUserId());
logger.info("result = " + result);
logger.info("result = {}", result);
return result;
}
/**
* 根据订单号 交易号查询 只需要一个即可
* 如果isSuccess,根据tradeStatus,遍历AlipayTradeStatusEnum获取对应支付状态
* 如果isSuccess,根据tradeStatus,遍历AliPayTradeStatusEnum获取对应支付状态
*
* @param outTradeNo 订单号
* @param tradeNo 交易号(推荐)
* @return
*/
public AlipayQueryResult queryOrder(String outTradeNo, String tradeNo) {
public AliPayQueryResult queryOrder(String outTradeNo, String tradeNo) {
if (StringUtils.isEmpty(outTradeNo) && StringUtils.isEmpty(tradeNo)) {
throw new PayException("订单号和交易号不能同时为空!");
}
AlipayQueryResult result = new AlipayQueryResult(false);
AliPayQueryResult result = new AliPayQueryResult(false);
AlipayClient alipayClient = new DefaultAlipayClient(requestUrl, appId, privateKey, "json", "UTF-8", publicKey, "RSA2");
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
JSONObject jsonObject = new JSONObject();
@@ -169,7 +168,6 @@ public class AlipayService {
jsonObject.put("trade_no", tradeNo);
}
request.setBizContent(jsonObject.toString());
//通过aliPayClient调用API,获得对应的response类
AlipayTradeQueryResponse response;
try {
response = alipayClient.execute(request);
@@ -194,11 +192,11 @@ public class AlipayService {
* @param outRequestNo 退款请求号
* @return
*/
public AlipayQueryResult queryRefund(String outTradeNo, String tradeNo, String outRequestNo) {
public AliPayQueryResult queryRefund(String outTradeNo, String tradeNo, String outRequestNo) {
if (StringUtils.isEmpty(outTradeNo) && StringUtils.isEmpty(tradeNo)) {
throw new PayException("订单号和交易号不能同时为空!");
}
AlipayQueryResult result = new AlipayQueryResult(false);
AliPayQueryResult result = new AliPayQueryResult(false);
AlipayClient alipayClient = new DefaultAlipayClient(requestUrl, appId, privateKey, "json", "UTF-8", publicKey, "RSA2");
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
JSONObject jsonObject = new JSONObject();
@@ -210,7 +208,6 @@ public class AlipayService {
jsonObject.put("trade_no", tradeNo);
}
request.setBizContent(jsonObject.toString());
//通过aliPayClient调用API,获得对应的response类
AlipayTradeQueryResponse response;
try {
response = alipayClient.execute(request);
@@ -229,7 +226,7 @@ public class AlipayService {
*
* @return
*/
private void checkSubCode(AlipayQueryResult result, AlipayTradeQueryResponse response) {
private void checkSubCode(AliPayQueryResult result, AlipayTradeQueryResponse response) {
if (StringUtils.isNotEmpty(response.getSubCode())) {
result.setCode(response.getSubCode());
result.setMessage(response.getSubMsg());
@@ -245,7 +242,7 @@ public class AlipayService {
*
* @return
*/
private String checkArgument(AlipayBarCodePayParam param) {
private String checkArgument(AliPayBarCodePayParam param) {
String message;
if (StringUtils.isEmpty(param.getOutTradeNo())) {
message = "订单号为空";
@@ -263,7 +260,7 @@ public class AlipayService {
public static void main(String[] args) {
//刷卡支付
AlipayService alipayBuilder = new AlipayService();
AliPayService alipayBuilder = new AliPayService();
String orderNo = "201705180202";
// String authCode = "286796667181427987";
// AlipayBarCodePayParam codePayParam = new AlipayBarCodePayParam(orderNo, authCode, "test", 0.1f);
@@ -272,12 +269,12 @@ public class AlipayService {
//查询订单
String tradeNo = "2017051221001004630289850336";
AlipayQueryResult queryResult = alipayBuilder.queryOrder(orderNo, tradeNo);
AliPayQueryResult queryResult = alipayBuilder.queryOrder(orderNo, tradeNo);
if (!queryResult.isSuccess()) {
throw new BusinessException(queryResult.getMessage());
}
String tradeStatus = queryResult.getTradeStatus();
for (AlipayTradeStatusEnum status : AlipayTradeStatusEnum.values()) {
for (AliPayTradeStatusEnum status : AliPayTradeStatusEnum.values()) {
if (Objects.equals(tradeStatus, status.getCode())) {
System.out.println(status.getName());
break;
@@ -285,7 +282,7 @@ public class AlipayService {
}
// //退款操作
AlipayRefundParam refundParam = new AlipayRefundParam("201505129999", orderNo, 0.05f, "test");
AliPayRefundParam refundParam = new AliPayRefundParam("201505129999", orderNo, 0.05f, "test");
// AlipayRefundResult refundResult = alipayBuilder.refund(refundParam);
// System.out.println(refundResult.getMessage());
@@ -42,37 +42,37 @@ public class WxPayService {
* 商户支付密钥 生成签名时用
*/
@Value("${wx.apiKey}")
private static String apiKey;
private String apiKey;
/**
* 公众账号ID(企业号corpid)
*/
@Value("${wx.appId}")
private static String appId;
private String appId;
/**
* 商户号
*/
@Value("${wx.mchId}")
private static String mchId;
private String mchId;
/**
* 刷卡支付url
*/
@Value("${wx.barCodePayUrl}")
private static String barCodePayUrl;
private String barCodePayUrl;
/**
* 申请退款url
*/
@Value("${wx.refundUrl}")
private static String refundUrl;
private String refundUrl;
/**
* 查询订单url
*/
@Value("${wx.orderQueryUrl}")
private static String orderQueryUrl;
private String orderQueryUrl;
/**
* 退款查询url
*/
@Value("${wx.refundQueryUrl}")
private static String refundQueryUrl;
private String refundQueryUrl;
/**
* 条形码扫码付
@@ -95,15 +95,14 @@ public class WxPayService {
HttpEntity entity = response.getEntity();
//返回结果为strXml
String content = EntityUtils.toString(entity, "UTF-8");
// 解析返回值
Map<String, String> returnMap;
returnMap = XmlUtil.doXMLParse(content);
//解析返回值
Map<String, String> returnMap = XmlUtil.doXMLParse(content);
//返回状态码SUCCESS/FAIL
result.setResultCode(returnMap.get("return_code"));
//返回信息 非空,为错误原因
//返回信息:非空,为错误原因
result.setMessage(returnMap.get("return_msg"));
if ("FAIL".equalsIgnoreCase(returnMap.get("return_code"))) {
logger.info("wx barCodePay failed!");
logger.error("wx barCodePay failed!");
result.setSuccess(false);
return result;
}
@@ -157,32 +156,24 @@ public class WxPayService {
public WxRefundResult refund(WxRefundParam param) {
WxRefundResult result = new WxRefundResult(false);
HttpPost post = new HttpPost(refundUrl);
//输入参数为转为strXml
String reqBody = buildRefundBarCodeRequestBody(param);
post.setEntity(new StringEntity(reqBody, "UTF-8"));
CloseableHttpClient httpclient;
try {
//根据mchId读取微信证书,SSL创建安全连接
httpclient = ClientCustomSSL.getCloseableHttpClient(mchId);
CloseableHttpResponse response = httpclient.execute(post);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
//返回结果为strXml
HttpEntity entity = response.getEntity();
String content = EntityUtils.toString(entity, "UTF-8");
// 解析返回值
Map<String, String> returnMap;
returnMap = com.xwbing.util.payWxpay.XmlUtil.doXMLParse(content);
//返回状态码SUCCESS/FAIL
Map<String, String> returnMap = com.xwbing.util.payWxpay.XmlUtil.doXMLParse(content);
result.setResultCode(returnMap.get("return_code"));
//返回信息 非空,为错误原因
result.setMessage(returnMap.get("return_msg"));
if ("FAIL".equalsIgnoreCase(returnMap.get("return_code"))) {
logger.info("wx barCodePay failed!");
logger.error("wx barCodePay failed!");
result.setSuccess(false);
return result;
}
logger.info("outRefundNo=" + param.getOutTradeNo() + ",err_code=" + returnMap.get("err_code") + ",result_code=" + returnMap.get("result_code") + ",err_code_des=" + returnMap.get("err_code_des"));
//业务结果SUCCESS/FAIL
if ("SUCCESS".equals(returnMap.get("result_code"))) {
result.setSuccess(true);
result.setAppid(returnMap.get("appid"));
@@ -232,31 +223,24 @@ public class WxPayService {
public WxQueryResult orderQuery(String outTradeNo, String transactionId) {
WxQueryResult result = new WxQueryResult(false);
HttpPost post = new HttpPost(orderQueryUrl);
//输入参数为转为strXml
String reqBody = buildQueryRequestBody(outTradeNo, transactionId);
post.setEntity(new StringEntity(reqBody, "UTF-8"));
CloseableHttpClient httpclient;
try {
//根据mchId读取微信证书,SSL创建安全连接
httpclient = ClientCustomSSL.getCloseableHttpClient(mchId);
CloseableHttpResponse response = httpclient.execute(post);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
//返回结果为strXml
String content = EntityUtils.toString(entity, "UTF-8");
// 解析返回值
Map<String, String> returnMap;
returnMap = XmlUtil.doXMLParse(content);
Map<String, String> returnMap = XmlUtil.doXMLParse(content);
result.setResultCode(returnMap.get("return_code"));
result.setMessage(returnMap.get("return_msg"));
//此字段是通信标识,非交易标识
if ("FAIL".equalsIgnoreCase(returnMap.get("return_code"))) {
logger.info("wx barCodePay failed!");
logger.error("wx barCodePay failed!");
result.setSuccess(false);
return result;
}
logger.info("outTradeNo=" + outTradeNo + ",transactionId=" + transactionId);
//业务结果
if ("SUCCESS".equals(returnMap.get("result_code"))) {
result.setSuccess(true);
//交易状态
@@ -300,24 +284,18 @@ public class WxPayService {
public WxQueryResult refundQuery(String outTradeNo, String transactionId, String ouRefundNo, String refundid) {
WxQueryResult result = new WxQueryResult(false);
HttpPost post = new HttpPost(refundQueryUrl);
//输入参数为转为strXml
String reqBody = buildRefundQueryRequestBody(outTradeNo, transactionId, ouRefundNo, refundid);
post.setEntity(new StringEntity(reqBody, "UTF-8"));
CloseableHttpClient httpclient;
try {
//根据mchId读取微信证书,SSL创建安全连接
httpclient = ClientCustomSSL.getCloseableHttpClient(mchId);
CloseableHttpResponse response = httpclient.execute(post);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
//返回结果为strXml
String content = EntityUtils.toString(entity, "UTF-8");
// 解析返回值
Map<String, String> returnMap;
returnMap = XmlUtil.doXMLParse(content);
Map<String, String> returnMap = XmlUtil.doXMLParse(content);
result.setResultCode(returnMap.get("return_code"));
result.setMessage(returnMap.get("return_msg"));
//此字段是通信标识,非交易标识
if ("FAIL".equalsIgnoreCase(returnMap.get("return_code"))) {
logger.error("wx barCodePay failed!");
result.setSuccess(false);
@@ -361,7 +339,7 @@ public class WxPayService {
* @return
*/
private String buildBarCodeRequestBody(WxBarCodePayParam param) {
Map<String, String> params = new HashMap<String, String>();
Map<String, String> params = new HashMap<>();
params.put("appid", appId);
params.put("mch_id", mchId);
String nonceStr = RandomKit.buildRandom(32);
@@ -382,7 +360,6 @@ public class WxPayService {
reqBody.append("<").append(key).append(">").append(value).append("</").append(key).append(">");
}
reqBody.append("</xml>");
logger.info(reqBody + "~~~------------");
return reqBody.toString();
}
@@ -421,12 +398,11 @@ public class WxPayService {
reqBody.append("<").append(key).append(">").append(value).append("</").append(key).append(">");
}
reqBody.append("</xml>");
logger.info(reqBody + "~~~------------");
return reqBody.toString();
}
/**
* 查询封装参数
* 构建订单查询参数
*
* @param outTradeNo 商户订单号
* @param transactionId 微信订单号
@@ -457,12 +433,11 @@ public class WxPayService {
reqBody.append("<").append(key).append(">").append(value).append("</").append(key).append(">");
}
reqBody.append("</xml>");
logger.info(reqBody + "~~~------------");
return reqBody.toString();
}
/**
* 查询封装参数
* 构建退款查询参数
*
* @param outTradeNo 商户订单号
* @param transactionId 微信订单号
@@ -501,17 +476,16 @@ public class WxPayService {
reqBody.append("<").append(key).append(">").append(value).append("</").append(key).append(">");
}
reqBody.append("</xml>");
logger.info(reqBody + "~~~------------");
return reqBody.toString();
}
public static void main(String[] args) {
WxPayService wxPayBuilder = new WxPayService();
//刷卡支付
// String authCode = "130203463134616871";
// WxBarCodePayParam payParam = new WxBarCodePayParam("2017051200", "127.0.0.0", authCode, "test", 1);
// WxBarCodePayResult result = wxPayBuilder.barCodePay(payParam);
// System.out.println(result.isSuccess() + result.getMessage());
String authCode = "130203463134616871";
WxBarCodePayParam payParam = new WxBarCodePayParam("2017051200", "127.0.0.0", authCode, "test", 1);
WxBarCodePayResult result = wxPayBuilder.barCodePay(payParam);
System.out.println(result.isSuccess() + result.getMessage());
//查询订单
String outTradeNo = "2017051200";
@@ -12,10 +12,10 @@ wx.refundQueryUrl=https://api.mch.weixin.qq.com/pay/refundquery
###payAlipay pay set start##
alipay.appId=2017051807273744
alipay.requestUrl=https://openapi.alipay.com/gateway.do
alipay.rsaPublicKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsa1COluDzLH7GhYCWZp4HclR9x2nJ51UNVx7nmDwjr4Gg4miAOiEHYjZ4ILOUavo2EPN0/pcGRhMa8U87xICWcHQr26Q8cYkZgIfb5DC7l2b8MROxUYzdk82Y+3c8mbZ/6I5LfJeztDWtnXLQUZihTqaI2hPeGL9WEeMxqxaXMge1ho1BF4LfylUlO0WOle9grWYv0Xqpz0zKz6kCiVj2gdvNpL6ULj/C8BHZtY+aHd0Pd1dOdFPft8c+uTs7ESpAwClvoS9Go2LXJGPZUNGd0FnzRSyjpbi905rOjDQbUlUdcSbcg/qiFHaH1+GF3yRD4RAIO8pgzTj8RLsrbj/MQIDAQAB
alipay.rsaPrivateKey=MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxrUI6W4PMsfsaFgJZmngdyVH3HacnnVQ1XHueYPCOvgaDiaIA6IQdiNnggs5Rq+jYQ83T+lwZGExrxTzvEgJZwdCvbpDxxiRmAh9vkMLuXZvwxE7FRjN2TzZj7dzyZtn/ojkt8l7O0Na2dctBRmKFOpojaE94Yv1YR4zGrFpcyB7WGjUEXgt/KVSU7RY6V72CtZi/ReqnPTMrPqQKJWPaB282kvpQuP8LwEdm1j5od3Q93V050U9+3xz65OzsRKkDAKW+hL0ajYtckY9lQ0Z3QWfNFLKOluL3Tms6MNBtSVR1xJtyD+qIUdofX4YXfJEPhEAg7ymDNOPxEuytuP8xAgMBAAECggEAJ3k2nYB3Z6KjBsic/Qs0ZGm1rBEKceKiMri5PhaLWysch1ysgUcnEui0fwyQidSHhoSJ1e5pR6n+UHMhdnupygclNdR6nzxGGeOe2EpxBEQHwRXb6jgOdtpiWxEdZT00cXa4/Vw7c/cxvJeu8HGSscazN+qUvUpAvrwmqnzgFnx/9jnji+tpPPahBD9uqJuKEg4cfvuR7sOtkcV4OyTfV1ASpec4Fsu0SXUSugP7ApSpKRZqIIpYIT/G8jqTxZ73tf2tnj6f9PoxzpbgN7kocxAzELxRpZi5G+CTqtc1AX6DKh173BhNqnAlfW7rGbF2IfUEsqbtsOksSor3+BRlgQKBgQDvf0QoG1CqO7xTokHFO1MWjYsfFxDQ7PeJtMdr/Jp2dYNpUT9B4Yl09DcLSEwDwn15VR4/NYlpiJvlOIrpYDWI0/ZvkSPy6hQmOP6WYTH1cdUwxSetX+MNBsi5PHUUa9ObvXBYZWOVLAuHieSJDcmJuDiGFdJvo2X+0ul68piVgwKBgQC963sDPk9mLgxD/en/1cQu4HxdS4MCelBqogRD24TV1DWkLFPBeK8QMLCvwd5BSN2kTXdTEEyHPCwBbe3hyQ6cKHmM5SUujomXnzOgbNWshCU3A7eHHjQjyK+eqSWDTsK4kX7q1A4Pi5MftTEiBUI5EwVHsXLNtcVhHTC24bsuOwKBgBb6jv+KH2M1+AvONaFG3+H6Eq8Y93QUSGvd/IRP6EIVZFZmhTs8+INQKzfZ5/E0Z/WMRSqraFPH161Wj310za4jKDHsKxbTfrtsHIExMinqkhnr0LLB0Hcff4LGWjVrYxI+StkwYS2e3DxU7qh3ui6Mjl/PGDG967tXYS96t0khAoGAXEuY322jlmugaFZ4Jm1TRtivd4Nf6o9Yj0mnOvbuaiAT5XHpTieBJCQVaYSUpzNrCxLef053cm0qkZNDvKtB31/IGlGtrR91/GpQ45CgkpMxpre2tAJYol9AAaH/6f0XoiyK+kINhz50RD+A3iCiGyyEL2AsA45nmpdd+jJfDcsCgYEA3ZPASHIfbnflQkWzzvUbzKLFqZB/NulDJTK4QvHne2canOac2oyOivBXQBgio9sqTolQo5W+6SxH9YqpH8GjPcPMsEF9PVsn4o/Gm3hY68sf2gSgpVfQzLM6KYDJ6asO93ZmJ6z0fu6qwUGdACpcSlZzCy0QQ6+QhHVobR2Uma8=
aliPay.appId=2017051807273744
aliPay.requestUrl=https://openapi.alipay.com/gateway.do
aliPay.rsaPublicKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsa1COluDzLH7GhYCWZp4HclR9x2nJ51UNVx7nmDwjr4Gg4miAOiEHYjZ4ILOUavo2EPN0/pcGRhMa8U87xICWcHQr26Q8cYkZgIfb5DC7l2b8MROxUYzdk82Y+3c8mbZ/6I5LfJeztDWtnXLQUZihTqaI2hPeGL9WEeMxqxaXMge1ho1BF4LfylUlO0WOle9grWYv0Xqpz0zKz6kCiVj2gdvNpL6ULj/C8BHZtY+aHd0Pd1dOdFPft8c+uTs7ESpAwClvoS9Go2LXJGPZUNGd0FnzRSyjpbi905rOjDQbUlUdcSbcg/qiFHaH1+GF3yRD4RAIO8pgzTj8RLsrbj/MQIDAQAB
aliPay.rsaPrivateKey=MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCxrUI6W4PMsfsaFgJZmngdyVH3HacnnVQ1XHueYPCOvgaDiaIA6IQdiNnggs5Rq+jYQ83T+lwZGExrxTzvEgJZwdCvbpDxxiRmAh9vkMLuXZvwxE7FRjN2TzZj7dzyZtn/ojkt8l7O0Na2dctBRmKFOpojaE94Yv1YR4zGrFpcyB7WGjUEXgt/KVSU7RY6V72CtZi/ReqnPTMrPqQKJWPaB282kvpQuP8LwEdm1j5od3Q93V050U9+3xz65OzsRKkDAKW+hL0ajYtckY9lQ0Z3QWfNFLKOluL3Tms6MNBtSVR1xJtyD+qIUdofX4YXfJEPhEAg7ymDNOPxEuytuP8xAgMBAAECggEAJ3k2nYB3Z6KjBsic/Qs0ZGm1rBEKceKiMri5PhaLWysch1ysgUcnEui0fwyQidSHhoSJ1e5pR6n+UHMhdnupygclNdR6nzxGGeOe2EpxBEQHwRXb6jgOdtpiWxEdZT00cXa4/Vw7c/cxvJeu8HGSscazN+qUvUpAvrwmqnzgFnx/9jnji+tpPPahBD9uqJuKEg4cfvuR7sOtkcV4OyTfV1ASpec4Fsu0SXUSugP7ApSpKRZqIIpYIT/G8jqTxZ73tf2tnj6f9PoxzpbgN7kocxAzELxRpZi5G+CTqtc1AX6DKh173BhNqnAlfW7rGbF2IfUEsqbtsOksSor3+BRlgQKBgQDvf0QoG1CqO7xTokHFO1MWjYsfFxDQ7PeJtMdr/Jp2dYNpUT9B4Yl09DcLSEwDwn15VR4/NYlpiJvlOIrpYDWI0/ZvkSPy6hQmOP6WYTH1cdUwxSetX+MNBsi5PHUUa9ObvXBYZWOVLAuHieSJDcmJuDiGFdJvo2X+0ul68piVgwKBgQC963sDPk9mLgxD/en/1cQu4HxdS4MCelBqogRD24TV1DWkLFPBeK8QMLCvwd5BSN2kTXdTEEyHPCwBbe3hyQ6cKHmM5SUujomXnzOgbNWshCU3A7eHHjQjyK+eqSWDTsK4kX7q1A4Pi5MftTEiBUI5EwVHsXLNtcVhHTC24bsuOwKBgBb6jv+KH2M1+AvONaFG3+H6Eq8Y93QUSGvd/IRP6EIVZFZmhTs8+INQKzfZ5/E0Z/WMRSqraFPH161Wj310za4jKDHsKxbTfrtsHIExMinqkhnr0LLB0Hcff4LGWjVrYxI+StkwYS2e3DxU7qh3ui6Mjl/PGDG967tXYS96t0khAoGAXEuY322jlmugaFZ4Jm1TRtivd4Nf6o9Yj0mnOvbuaiAT5XHpTieBJCQVaYSUpzNrCxLef053cm0qkZNDvKtB31/IGlGtrR91/GpQ45CgkpMxpre2tAJYol9AAaH/6f0XoiyK+kINhz50RD+A3iCiGyyEL2AsA45nmpdd+jJfDcsCgYEA3ZPASHIfbnflQkWzzvUbzKLFqZB/NulDJTK4QvHne2canOac2oyOivBXQBgio9sqTolQo5W+6SxH9YqpH8GjPcPMsEF9PVsn4o/Gm3hY68sf2gSgpVfQzLM6KYDJ6asO93ZmJ6z0fu6qwUGdACpcSlZzCy0QQ6+QhHVobR2Uma8=
###payAlipay end set start##