public classPayCommonUtil {public static Logger log = LoggerFactory.getLogger(PayCommonUtil.class);/*** 是否签名正确,规则是:按参数名称a-z排序,遇到空值的参数不参加签名。

*@returnboolean*/

public static boolean isTenpaySign(String characterEncoding, SortedMappackageParams, String API_KEY) {

StringBuffer sb= newStringBuffer();

Set es=packageParams.entrySet();

Iterator it=es.iterator();while(it.hasNext()) {

Map.Entry entry=(Map.Entry)it.next();

String k=(String)entry.getKey();

String v=(String)entry.getValue();if(!"sign".equals(k) && null != v && !"".equals(v)) {

sb.append(k+ "=" + v + "&");

}

}

sb.append("key=" +API_KEY);//算出摘要

String mysign =MD5.MD5Encode(sb.toString(), characterEncoding).toLowerCase();

String tenpaySign= ((String)packageParams.get("sign")).toLowerCase();//System.out.println(tenpaySign + " " + mysign);

returntenpaySign.equals(mysign);

}/***@author* @date 2016-4-22

* @Description:sign签名

*@paramcharacterEncoding

* 编码格式

*@paramparameters

* 请求参数

*@return

*/

public static String createSign(String characterEncoding, SortedMappackageParams, String API_KEY) {

StringBuffer sb= newStringBuffer();

Set es=packageParams.entrySet();

Iterator it=es.iterator();while(it.hasNext()) {

Map.Entry entry=(Map.Entry) it.next();

String k=(String) entry.getKey();

String v= "";try{

v=(String) entry.getValue();

}catch(Exception e) {//TODO: handle exception

v = entry.getValue() + "";

}if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {

sb.append(k+ "=" + v + "&");

}

}

sb.append("key=" +API_KEY);

String sign=MD5.MD5Encode(sb.toString(), characterEncoding).toUpperCase();returnsign;

}/***@author* @date 2016-4-22

* @Description:将请求参数转换为xml格式的string

*@paramparameters

* 请求参数

*@return

*/

public static String getRequestXml(SortedMapparameters) {

StringBuffer sb= newStringBuffer();

sb.append("");

Set es=parameters.entrySet();

Iterator it=es.iterator();while(it.hasNext()) {

Map.Entry entry=(Map.Entry) it.next();

String k=(String) entry.getKey();

String v= "";try{

v=(String) entry.getValue();

}catch(Exception e) {//TODO: handle exception

v = entry.getValue() + "";

}if ("attach".equalsIgnoreCase(k) || "body".equalsIgnoreCase(k) || "sign".equalsIgnoreCase(k)) {

sb.append("" + "" + k + ">");

}else{

sb.append("" + v + "" + k + ">");

}

}

sb.append("");returnsb.toString();

}/*** 取出一个指定长度大小的随机正整数.

*

*@paramlength

* int 设定所取出随机数的长度。length小于11

*@returnint 返回生成的随机数。*/

public static int buildRandom(intlength) {int num = 1;double random =Math.random();if (random < 0.1) {

random= random + 0.1;

}for (int i = 0; i < length; i++) {

num= num * 10;

}return (int) ((random *num));

}/*** 获取当前时间 yyyyMMddHHmmss

*

*@returnString*/

public staticString getCurrTime() {

Date now= newDate();

SimpleDateFormat outFormat= new SimpleDateFormat("yyyyMMddHHmmss");

String s=outFormat.format(now);returns;

}public staticJSONObject httpsRequestToJsonObject(String requestUrl,

String requestMethod, String outputStr) {

JSONObject jsonObject= null;try{

StringBuffer buffer=httpsRequest(requestUrl, requestMethod,

outputStr);

jsonObject=JSONObject.fromObject(buffer.toString());

}catch(ConnectException ce) {

log.error("连接超时:" +ce.getMessage());

}catch(Exception e) {

log.error("https请求异常:" +e.getMessage());

}returnjsonObject;

}private staticStringBuffer httpsRequest(String requestUrl,

String requestMethod, String output)throwsNoSuchAlgorithmException, NoSuchProviderException,

KeyManagementException, MalformedURLException, IOException,

ProtocolException, UnsupportedEncodingException {

URL url= newURL(requestUrl);

HttpsURLConnection connection=(HttpsURLConnection) url

.openConnection();

connection.setDoOutput(true);

connection.setDoInput(true);

connection.setUseCaches(false);

connection.setRequestMethod(requestMethod);if (null !=output) {

OutputStream outputStream=connection.getOutputStream();

outputStream.write(output.getBytes("UTF-8"));

outputStream.close();

}//从输入流读取返回内容

InputStream inputStream =connection.getInputStream();

InputStreamReader inputStreamReader= newInputStreamReader(

inputStream,"utf-8");

BufferedReader bufferedReader= newBufferedReader(inputStreamReader);

String str= null;

StringBuffer buffer= newStringBuffer();while ((str = bufferedReader.readLine()) != null) {

buffer.append(str);

}

bufferedReader.close();

inputStreamReader.close();

inputStream.close();

inputStream= null;

connection.disconnect();returnbuffer;

}

}

jsp微信二维码收款_java实现微信支付之扫码支付相关推荐

  1. 微信扫码点餐小程序之《扫码功能的实现》2020/03/05

    现在很多商家都在桌上放置了二维码直接扫码就可以点餐还能获取桌号这是怎么做到的啦,我没事就做了个点餐小程序给大家分享一下,这里就讲解一下怎么实现的扫码点餐 1.微信小程序的扫码代码 wx.scanCod ...

  2. 如何解决微信二维码收款总被限封?

    二维彩虹二维码生成器有个多连接二维码功能,可以把实现多个收款二维码共同用一个二维码展示,可以在后台设置扫码次数,一个微信收款码扫购N次,自动换成另外一个收款码,然后以此类推,还可以循环回第一个收款码. ...

  3. 微信二维码1-服务号推广(将网页存储为图片存储到服务器)

    本周预告了将会推出一个「将会讲讲项目中关于微信二维码生成和传播的事儿」的系列,现在我们就来开始讲讲: 首先本篇不会将会怎么调用二维码接口,因为该接口已经在上个月就写好了,在实际项目中,不过这个是微信二 ...

  4. Java支付宝二维码支付和退款,微信二维码支付

    在蚂蚁金服开发平台下载demo 打开 TradePayDemo 项目,里面的main可以直接运行,在配置文件zfbinfo.properties中改为自己支付宝的信息 # 支付宝网关名.partner ...

  5. 微信二维码支付支付宝二维码支付(主扫模式)开发指南

    微信二维码支付 熟悉微信支付全家桶的童鞋应该都清楚,微信支付是没有提供PC网关支付的,那么传统的网站需要怎么接入微信支付产品呢? 我们可以选择微信支付中的Native支付产品,官方介绍: Native ...

  6. MyCnCart 专业版之个人微信二维码扫码转账

    个人微信二维码扫码转账支付方式,适合于国内外没有公司实体申请正常的微信支付渠道接口,但又想通过微信转账进行收款的国内个人商户或国外个人或公司商户. 后台配置: [扩展功能]->[支付方式]-&g ...

  7. 你的微信二维码是唯一的吗?【微信二维码的秘密】

    你的微信二维码是唯一的吗?[微信二维码的秘密] 原文:你的微信二维码是唯一的吗?[微信二维码的秘密] 最近听说有一老板被一科技公司业务员忽悠,说"您赶快来注册您唯一的二维码吧!否则,会被别人 ...

  8. 微信二维码支付快速入门

    目录 一.二维码生成插件qrious 二.HttpClient 三.微信扫码支付 1.申请步骤 2.开发文档 四.入门Demo 1.工程搭建 2.myStudy-pay-interface 3.myS ...

  9. 用女朋友动态图做微信二维码,小白都会

    一.准备的东西:一台电脑,一个网站(https://cli.im/deqr/),两张图片(一张动态图,一张微信二维码) 二.打开cmd,输入命令pip install myqr 转完后,输入cd de ...

最新文章

  1. 归一化 vs 标准化 定量的分析
  2. XV6850成功刷机步骤
  3. NetGear 夜鹰 RAX40V2 设备与固件分析
  4. 用UE4创造开放世界:Kite 实时演示
  5. Tensorflow载入模型详解,方法一(基础版):针对测试模型性能 和 使用模型。
  6. CodeForces - 1501C Going Home(鸽巢原理+暴力)
  7. g4e基础篇#5 创建分支和保存代码
  8. 蓝桥杯vip答案java_Java实现 蓝桥杯VIP 算法训练 麦森数
  9. js java post提交_如何从Express.js发送Post请求到另一个服务器(Java)?
  10. C# 定义了 7 种变量类别:静态变量、实例变量、数组元素、值参数、引用参数、输出参数和局部变量
  11. FPGA设计技巧总结
  12. 从零基础入门Tensorflow2.0 ----八、41. estimator分布式实战
  13. 光盘显示0字节可用_AT89C2051单片机开发点钞机外接显示屏
  14. Apple_Mail 登录163邮箱账号
  15. MATLAB泰勒展开lnx,lnx泰勒展开公式形式,lnx泰勒展开式怎么展开,sinx泰勒展开
  16. Debussy软件简介及仿真教程
  17. Oracle数据库之表空间(tablespace)---面试再也不害怕系列之一
  18. Android/Java中okhttp用法介绍
  19. 【渝粤教育】国家开放大学2019年春季 0777-22T市场开发与营销推广 参考试题
  20. apache2 docker 无法访问_Docker 安装 Apache

热门文章

  1. 官方老爹之痛:为什么苹果能收到推送,而安卓不行?
  2. struts2 超链接a标签执行action
  3. 在Windows7 系统上部署DNS服务器
  4. java实现文件上传下载功能
  5. C088提示某订单发送失败,缺少评估类型
  6. 关于Java中的WeakReference类的笔记(弱引用)
  7. 李小杰_测试工程师简历
  8. Nginx性能优化(十八)
  9. 专为《巫师3》打造 次世代RedEngine 3引擎公布
  10. 小学六年级数学教案:圆柱与圆锥