微信支付 java后端demo

  • o7_461836
    了解作者
  • 54.5KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-14 02:47
    上传日期
完整的demo,相信很多做微信支付的都会走很多坑,这个demo可以让你少走很多坑
WeiXinpay.rar
内容介绍
package com.tenpay.client; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import com.tenpay.util.HttpClientUtil; /** * 财付通http或者https网络通信客户端<br/> * ========================================================================<br/> * api说明:<br/> * setReqContent($reqContent),设置请求内容,无论post和get,都用get方式提供<br/> * getResContent(), 获取应答内容<br/> * setMethod(method),设置请求方法,post或者get<br/> * getErrInfo(),获取错误信息<br/> * setCertInfo(certFile, certPasswd),设置证书,双向https时需要使用<br/> * setCaInfo(caFile), 设置CA,格式未pem,不设置则不检查<br/> * setTimeOut(timeOut), 设置超时时间,单位秒<br/> * getResponseCode(), 取返回的http状态码<br/> * call(),真正调用接口<br/> * getCharset()/setCharset(),字符集编码<br/> * * ========================================================================<br/> * */ public class TenpayHttpClient { /** 请求内容,无论post和get,都用get方式提供 */ private String reqContent; /** 应答内容 */ private String resContent; /** 请求方法 */ private String method; /** 错误信息 */ private String errInfo; /** 超时时间,以秒为单位 */ private int timeOut; /** http应答编码 */ private int responseCode; /** 字符编码 */ private String charset; private InputStream inputStream; public TenpayHttpClient() { this.reqContent = ""; this.resContent = ""; this.method = "POST"; this.errInfo = ""; this.timeOut = 30;//30秒 this.responseCode = 0; this.charset = "utf8"; this.inputStream = null; } /** * 设置请求内容 * @param reqContent 表求内容 */ public void setReqContent(String reqContent) { this.reqContent = reqContent; } /** * 获取结果内容 * @return String * @throws IOException */ public String getResContent() { try { this.doResponse(); } catch (IOException e) { this.errInfo = e.getMessage(); //return ""; } return this.resContent; } /** * 设置请求方法post或者get * @param method 请求方法post/get */ public void setMethod(String method) { this.method = method; } /** * 获取错误信息 * @return String */ public String getErrInfo() { return this.errInfo; } /** * 设置超时时间,以秒为单位 * @param timeOut 超时时间,以秒为单位 */ public void setTimeOut(int timeOut) { this.timeOut = timeOut; } /** * 获取http状态码 * @return int */ public int getResponseCode() { return this.responseCode; } protected void callHttp() throws IOException { if("POST".equals(this.method.toUpperCase())) { String url = HttpClientUtil.getURL(this.reqContent); String queryString = HttpClientUtil.getQueryString(this.reqContent); byte[] postData = queryString.getBytes(this.charset); this.httpPostMethod(url, postData); return ; } this.httpGetMethod(this.reqContent); } public boolean callHttpPost(String url, String postdata) { boolean flag = false; byte[] postData; try { postData = postdata.getBytes(this.charset); this.httpPostMethod(url, postData); flag = true; } catch (IOException e1) { e1.printStackTrace(); } return flag; } /** * 以http post方式通信 * @param url * @param postData * @throws IOException */ protected void httpPostMethod(String url, byte[] postData) throws IOException { HttpURLConnection conn = HttpClientUtil.getHttpURLConnection(url); this.doPost(conn, postData); } /** * 以http get方式通信 * * @param url * @throws IOException */ protected void httpGetMethod(String url) throws IOException { HttpURLConnection httpConnection = HttpClientUtil.getHttpURLConnection(url); this.setHttpRequest(httpConnection); httpConnection.setRequestMethod("GET"); this.responseCode = httpConnection.getResponseCode(); this.inputStream = httpConnection.getInputStream(); } /** * 以https get方式通信 * @param url * @param sslContext * @throws IOException */ protected void httpsGetMethod(String url, SSLContext sslContext) throws IOException { SSLSocketFactory sf = sslContext.getSocketFactory(); HttpsURLConnection conn = HttpClientUtil.getHttpsURLConnection(url); conn.setSSLSocketFactory(sf); this.doGet(conn); } protected void httpsPostMethod(String url, byte[] postData, SSLContext sslContext) throws IOException { SSLSocketFactory sf = sslContext.getSocketFactory(); HttpsURLConnection conn = HttpClientUtil.getHttpsURLConnection(url); conn.setSSLSocketFactory(sf); this.doPost(conn, postData); } /** * 设置http请求默认属性 * @param httpConnection */ protected void setHttpRequest(HttpURLConnection httpConnection) { //设置连接超时时间 httpConnection.setConnectTimeout(this.timeOut * 1000); //不使用缓存 httpConnection.setUseCaches(false); //允许输入输出 httpConnection.setDoInput(true); httpConnection.setDoOutput(true); } /** * 处理应答 * @throws IOException */ protected void doResponse() throws IOException { if(null == this.inputStream) { return; } //获取应答内容 this.resContent=HttpClientUtil.InputStreamTOString(this.inputStream,this.charset); //关闭输入流 this.inputStream.close(); } /** * post方式处理 * @param conn * @param postData * @throws IOException */ protected void doPost(HttpURLConnection conn, byte[] postData) throws IOException { // 以post方式通信 conn.setRequestMethod("POST"); // 设置请求默认属性 this.setHttpRequest(conn); // Content-Type conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); BufferedOutputStream out = new BufferedOutputStream(conn .getOutputStream()); final int len = 1024; // 1KB HttpClientUtil.doOutput(out, postData, len);
评论
    相关推荐
    • 微信支付 java 后端 demo
      yongJava写的一个小项目用于微信支付,自己可以参考官方文档看一下,不想看代码可直接复制粘贴
    • 微信jssdk后端接口demo
      微信jssdk后端接口demo
    • 微信APP支付 PHP后端
      在前人的车轮上修改了一下,微信APP支付验证通过,阿里的还未验证
    • 看书阅读带后端-微信小程序
      看书阅读带后端-微信小程序,微信小程序(wei xin xiao cheng xu),简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。
    • Java后端微信小程序视频教程
      Java页面静态化视频教程,使用Java进行微信小程序和服务器的交互
    • 微信分享后端接口
      简单的对前端微信分享需要的参数进行生成,针对access_token的次数时长限制加以优化,再五数据库情况下保存分享的点击量
    • 微信支付asp后端 少有资源
      微信支付asp后端 少有资源
    • 简易记账带后端-微信小程序
      简易记账带后端-微信小程序,微信小程序(wei xin xiao cheng xu),简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。...
    • 客家旅运带后端-微信小程序
      客家旅运带后端-微信小程序,微信小程序(wei xin xiao cheng xu),简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。
    • GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.tar.gz
      guassdb100在redhat上安装包,单机部署的包,安装步骤请看我的文中介绍,经过大量实验搭建总结出来的文档