package com.example.wepaydemo;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.thoughtworks.xstream.io.xml.XmlFriendlyNameCoder;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.client.RestTemplate;
import javax.net.ssl.SSLContext;
import java.io.*;
import java.security.*;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.UUID;
public class PayUtil {
/**
* 统一接口
* @param url 微信请求url
* @param param 微信请求参数
* @return
* @throws IOException
*/
public static String request(String url, Object param) throws IOException {
HttpPost httpPost = new HttpPost(url);
//解决XStream对出现双下划线的bug
XStream xStreamForRequestPostData = new XStream(new DomDriver("UTF-8", new XmlFriendlyNameCoder("-_", "_")));
xStreamForRequestPostData.alias("xml", param.getClass());
//将要提交给API的数据对象转换成XML格式数据Post给API
String postDataXML = xStreamForRequestPostData.toXML(param);
System.out.println("--------------"+postDataXML);
//得指明使用UTF-8编码,否则到API服务器XML的中文不能被成功识别
StringEntity postEntity = new StringEntity(postDataXML, "UTF-8");
httpPost.addHeader("Content-Type", "text/xml");
httpPost.setEntity(postEntity);
//设置请求器的配置
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(10000).setConnectTimeout(30000).build();
httpPost.setConfig(requestConfig);
HttpClient httpClient = HttpClients.createDefault();
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
String result = EntityUtils.toString(entity, "UTF-8");
return result;
}
/**
* 处理退款申请外的接口
* @param url
* @param param 请求参数
* @param mch_id 商户号
* @return
* @throws KeyStoreException
* @throws IOException
* @throws UnrecoverableKeyException
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
*/
public static String refundRequest(String url,Object param,String mch_id) throws KeyStoreException, IOException, UnrecoverableKeyException, NoSuchAlgorithmException, KeyManagementException {
StringBuilder sb = new StringBuilder();
//解决XStream对出现双下划线的bug
XStream xStreamForRequestPostData = new XStream(new DomDriver("UTF-8", new XmlFriendlyNameCoder("-_", "_")));
xStreamForRequestPostData.alias("xml", param.getClass());
//将要提交给API的数据对象转换成XML格式数据Post给API
String postDataXML = xStreamForRequestPostData.toXML(param);
//此处为p12证书 退款的时候能用到
String path = PayUtil.class.getResource("/").getPath() + "apiclient_cert.p12";
KeyStore keyStore = KeyStore.getInstance("PKCS12");
FileInputStream inputStream = new FileInputStream(new File(path));
try {
keyStore.load(inputStream,mch_id.toCharArray());
} catch (Exception e) {
e.printStackTrace();
}finally {
inputStream.close();
}
// Trust own CA and all self-signed certs
SSLContext sslContext = SSLContexts.custom().loadKeyMaterial(keyStore,mch_id.toCharArray()).build();
// Allow TLSv1 protocol only
SSLConnectionSocketFactory factory = new SSLConnectionSocketFactory(
sslContext,
new String[]{"TLSv1"},
null,
SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(factory).build();
try {
HttpPost httpPost = new HttpPost(url);
StringEntity reqEntity = new StringEntity(postDataXML);
// 设置类型
reqEntity.setContentType("application/x-www-form-urlencoded");
httpPost.setEntity(reqEntity);
CloseableHttpResponse response = httpclient.execute(httpPost);
try {
HttpEntity entity = response.getEntity();
System.out.println(response.getStatusLine());
if (entity != null) {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(entity.getContent()));
String text;
while ((text = bufferedReader.readLine()) != null) {
sb.append(text);
}
}
EntityUtils.consume(entity);
} finally {
response.close();
}
}finally {
httpclient.close();
}
return sb.toString();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
一个方法搞定微信支付java后端! (107个子文件)
mvnw.cmd 5KB
.gitignore 268B
wepay-demo.iml 10KB
maven-wrapper.jar 46KB
PayUtil.java 5KB
Unifiedorder.java 5KB
TestService.java 5KB
Signature.java 3KB
MallWePayXcxData.java 2KB
MchBase.java 2KB
UnifiedorderResult.java 2KB
MD5.java 1KB
Configure.java 772B
WepayDemoApplication.java 603B
WepayDemoApplicationTests.java 350B
mvnw 6KB
maven-wrapper.properties 110B
application.properties 0B
workspace.xml 27KB
uiDesigner.xml 9KB
pom.xml 2KB
Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_0_3_RELEASE.xml 769B
Maven__org_springframework_boot_spring_boot_starter_data_jpa_2_0_3_RELEASE.xml 755B
Maven__org_springframework_boot_spring_boot_starter_logging_2_0_3_RELEASE.xml 748B
Maven__org_springframework_boot_spring_boot_starter_tomcat_2_0_3_RELEASE.xml 741B
Maven__org_springframework_boot_spring_boot_autoconfigure_2_0_3_RELEASE.xml 734B
Maven__org_hibernate_common_hibernate_commons_annotations_5_0_1_Final.xml 732B
Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_9_6.xml 729B
Maven__org_springframework_boot_spring_boot_starter_json_2_0_3_RELEASE.xml 727B
Maven__org_springframework_boot_spring_boot_starter_jdbc_2_0_3_RELEASE.xml 727B
Maven__org_springframework_boot_spring_boot_starter_test_2_0_3_RELEASE.xml 727B
Maven__org_hibernate_javax_persistence_hibernate_jpa_2_1_api_1_0_2_Final.xml 720B
Maven__org_springframework_boot_spring_boot_starter_aop_2_0_3_RELEASE.xml 720B
Maven__org_springframework_boot_spring_boot_starter_web_2_0_3_RELEASE.xml 720B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 700B
Maven__org_springframework_boot_spring_boot_starter_2_0_3_RELEASE.xml 692B
Maven__org_springframework_data_spring_data_commons_2_0_8_RELEASE.xml 692B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_9_6.xml 688B
Maven__org_hibernate_validator_hibernate_validator_6_0_10_Final.xml 681B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_9_6.xml 674B
Maven__org_springframework_boot_spring_boot_test_2_0_3_RELEASE.xml 671B
Maven__org_springframework_data_spring_data_jpa_2_0_8_RELEASE.xml 664B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_31.xml 660B
Maven__org_springframework_spring_expression_5_0_7_RELEASE.xml 658B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_9_0.xml 644B
Maven__org_springframework_spring_aspects_5_0_7_RELEASE.xml 637B
Maven__org_springframework_spring_context_5_0_7_RELEASE.xml 637B
Maven__org_springframework_boot_spring_boot_2_0_3_RELEASE.xml 636B
compiler.xml 632B
Maven__org_springframework_spring_webmvc_5_0_7_RELEASE.xml 630B
Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_31.xml 625B
Maven__com_fasterxml_jackson_core_jackson_databind_2_9_6.xml 623B
Maven__org_springframework_spring_beans_5_0_7_RELEASE.xml 623B
Maven__org_springframework_spring_core_5_0_7_RELEASE.xml 616B
Maven__org_springframework_spring_test_5_0_7_RELEASE.xml 616B
Maven__org_springframework_spring_jdbc_5_0_7_RELEASE.xml 616B
Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_31.xml 611B
Maven__javax_annotation_javax_annotation_api_1_3_2.xml 611B
Maven__javax_validation_validation_api_2_0_1_Final.xml 611B
Maven__org_springframework_spring_jcl_5_0_7_RELEASE.xml 609B
Maven__org_springframework_spring_orm_5_0_7_RELEASE.xml 609B
Maven__org_springframework_spring_aop_5_0_7_RELEASE.xml 609B
Maven__org_springframework_spring_web_5_0_7_RELEASE.xml 609B
Maven__org_apache_logging_log4j_log4j_to_slf4j_2_10_0.xml 608B
Maven__org_jboss_logging_jboss_logging_3_3_2_Final.xml 608B
Maven__javax_transaction_javax_transaction_api_1_2.xml 608B
Maven__org_hibernate_hibernate_core_5_2_17_Final.xml 606B
Maven__org_springframework_spring_tx_5_0_7_RELEASE.xml 602B
Maven__com_fasterxml_jackson_core_jackson_core_2_9_6.xml 595B
Maven__net_bytebuddy_byte_buddy_agent_1_7_11.xml 578B
Maven__org_apache_httpcomponents_httpclient_4_5_2.xml 577B
Maven__mysql_mysql_connector_java_5_1_46.xml 574B
Maven__org_apache_logging_log4j_log4j_api_2_10_0.xml 573B
Maven__ch_qos_logback_logback_classic_1_2_3.xml 568B
Maven__org_apache_httpcomponents_httpcore_4_4_9.xml 563B
Maven__org_hamcrest_hamcrest_library_1_3.xml 553B
Maven__com_thoughtworks_xstream_xstream_1_4_7.xml 552B
Maven__org_javassist_javassist_3_22_0_GA.xml 550B
Maven__org_aspectj_aspectjweaver_1_8_13.xml 549B
Maven__ch_qos_logback_logback_core_1_2_3.xml 547B
Maven__com_jayway_jsonpath_json_path_2_4_0.xml 546B
Maven__commons_codec_commons_codec_1_11.xml 543B
Maven__org_mockito_mockito_core_2_15_0.xml 542B
Maven__net_minidev_accessors_smart_1_2.xml 542B
Maven__org_skyscreamer_jsonassert_1_5_0.xml 537B
Maven__net_bytebuddy_byte_buddy_1_7_11.xml 536B
Maven__org_xmlunit_xmlunit_core_2_5_1.xml 535B
Maven__org_assertj_assertj_core_3_9_1.xml 535B
Maven__org_slf4j_jul_to_slf4j_1_7_25.xml 534B
Maven__org_hamcrest_hamcrest_core_1_3.xml 532B
Maven__org_jboss_jandex_2_0_3_Final.xml 527B
Maven__commons_lang_commons_lang_2_3.xml 525B
Maven__com_fasterxml_classmate_1_3_4.xml 522B
Maven__org_slf4j_slf4j_api_1_7_25.xml 513B
Maven__org_objenesis_objenesis_2_6.xml 508B
Maven__net_minidev_json_smart_2_3.xml 507B
Maven__com_zaxxer_HikariCP_2_7_9.xml 503B
Maven__xmlpull_xmlpull_1_1_3_1.xml 498B
Maven__org_yaml_snakeyaml_1_19.xml 495B
Maven__xpp3_xpp3_min_1_1_4c.xml 486B
共 107 条
- 1
- 2
资源评论
maxted
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 前端开发-什么是前端开发-关于前端开发的一些相关介绍
- Sora AI-关于文生视频的使用场景说明
- suno AI文生视频的相关教程和介绍使用
- 什么是后端开发-关于后端开发的一些小介绍分享
- Jurassic Pack Vol. II Dinosaurs 侏罗纪包卷恐龙二号Unity游戏模型资源unitypackage
- Jurassic Pack Vol. III Dinosaurs 侏罗纪包卷恐龙三号Unity游戏模型资源unitypackag
- Ultimate Seating Controller 终极座椅控制器Unity游戏开发插件资源unitypackage
- 什么是人工智能-关于人工智能的相关介绍说明
- Figma Converter for Unity适用Unity的Figma转换器Unity游戏开发插件unitypackage
- Creepy Animatronic Anims 令人毛骨悚然的电子动画Unity游戏动画插件资源unitypackage
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功