微信沙盒测试流程中,发送xml格式的参数请求application/xml

This commit is contained in:
egzosn
2020-10-26 22:58:28 +08:00
parent 708a7b16b6
commit a1be9c0dfd
2 changed files with 56 additions and 15 deletions

View File

@@ -38,6 +38,7 @@ import static com.egzosn.pay.common.http.UriVariables.getMapToParameters;
public class ClientHttpRequest<T> extends HttpEntityEnclosingRequestBase implements org.apache.http.client.ResponseHandler<T> {
protected static final Log LOG = LogFactory.getLog(ClientHttpRequest.class);
public static final ContentType APPLICATION_FORM_URLENCODED_UTF_8 = ContentType.create("application/x-www-form-urlencoded", Consts.UTF_8);
public static final ContentType APPLICATION_XML_UTF_8 = ContentType.create("application/xml", Consts.UTF_8);
/**

View File

@@ -1,30 +1,69 @@
package com.egzosn.pay.wx.api;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.security.GeneralSecurityException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import java.util.zip.GZIPInputStream;
import static com.egzosn.pay.wx.api.WxConst.APPID;
import static com.egzosn.pay.wx.api.WxConst.CIPHER_ALGORITHM;
import static com.egzosn.pay.wx.api.WxConst.FAIL;
import static com.egzosn.pay.wx.api.WxConst.FAILURE;
import static com.egzosn.pay.wx.api.WxConst.HMACSHA256;
import static com.egzosn.pay.wx.api.WxConst.HMAC_SHA256;
import static com.egzosn.pay.wx.api.WxConst.MCH_ID;
import static com.egzosn.pay.wx.api.WxConst.NONCE_STR;
import static com.egzosn.pay.wx.api.WxConst.OUT_TRADE_NO;
import static com.egzosn.pay.wx.api.WxConst.RESULT_CODE;
import static com.egzosn.pay.wx.api.WxConst.RETURN_CODE;
import static com.egzosn.pay.wx.api.WxConst.RETURN_MSG_CODE;
import static com.egzosn.pay.wx.api.WxConst.SANDBOXNEW;
import static com.egzosn.pay.wx.api.WxConst.SIGN;
import static com.egzosn.pay.wx.api.WxConst.SUCCESS;
import static com.egzosn.pay.wx.api.WxConst.URI;
import static com.egzosn.pay.wx.bean.WxTransferType.GETTRANSFERINFO;
import static com.egzosn.pay.wx.bean.WxTransferType.QUERY_BANK;
import static com.egzosn.pay.wx.bean.WxTransferType.TRANSFERS;
import com.alibaba.fastjson.JSONObject;
import com.egzosn.pay.common.api.BasePayService;
import com.egzosn.pay.common.bean.*;
import com.egzosn.pay.common.bean.MethodType;
import com.egzosn.pay.common.bean.PayMessage;
import com.egzosn.pay.common.bean.PayOrder;
import com.egzosn.pay.common.bean.PayOutMessage;
import com.egzosn.pay.common.bean.RefundOrder;
import com.egzosn.pay.common.bean.SignType;
import com.egzosn.pay.common.bean.TransactionType;
import com.egzosn.pay.common.bean.TransferOrder;
import com.egzosn.pay.common.bean.result.PayException;
import com.egzosn.pay.common.exception.PayErrorException;
import com.egzosn.pay.common.http.ClientHttpRequest;
import com.egzosn.pay.common.http.HttpConfigStorage;
import com.egzosn.pay.common.http.HttpStringEntity;
import com.egzosn.pay.common.util.DateUtils;
import com.egzosn.pay.common.util.Util;
import com.egzosn.pay.common.util.XML;
import com.egzosn.pay.common.util.sign.SignUtils;
import com.egzosn.pay.common.util.sign.encrypt.RSA2;
import com.egzosn.pay.common.util.str.StringUtils;
import com.egzosn.pay.wx.bean.*;
import java.io.*;
import java.net.URLEncoder;
import java.security.GeneralSecurityException;
import java.util.*;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import static com.egzosn.pay.wx.api.WxConst.*;
import static com.egzosn.pay.wx.bean.WxTransferType.*;
import com.egzosn.pay.wx.bean.RedpackOrder;
import com.egzosn.pay.wx.bean.WxPayError;
import com.egzosn.pay.wx.bean.WxPayMessage;
import com.egzosn.pay.wx.bean.WxRefundResult;
import com.egzosn.pay.wx.bean.WxSendredpackType;
import com.egzosn.pay.wx.bean.WxTransactionType;
import com.egzosn.pay.wx.bean.WxTransferType;
/**
* 微信支付服务
@@ -305,7 +344,8 @@ public class WxPayService extends BasePayService<WxPayConfigStorage> implements
String sign = createSign(SignUtils.parameterText(parameters, "&", SIGN, "appId"), payConfigStorage.getInputCharset(), false);
parameters.put(SIGN, sign);
JSONObject result = requestTemplate.postForObject(getReqUrl(WxTransactionType.GETSIGNKEY), XML.getMap2Xml(parameters), JSONObject.class);
HttpStringEntity entity = new HttpStringEntity(XML.getMap2Xml(parameters), ClientHttpRequest.APPLICATION_XML_UTF_8);
JSONObject result = requestTemplate.postForObject(getReqUrl(WxTransactionType.GETSIGNKEY), entity, JSONObject.class);
if (SUCCESS.equals(result.get(RETURN_CODE))) {
return result.getString("sandbox_signkey");
}