java实现微信支付(服务端)_java

废话不多说,直接看代码。

RequestHandler requestHandler = new RequestHandler(super.getRequest(),super.getResponse());

//获取token //两小时内有效,两小时后重新获取

Token = requestHandler.GetToken();

//更新token 到应用中

requestHandler.getTokenReal();

System.out.println("微信支付获取token=======================:" +Token);

//requestHandler 初始化

requestHandler.init();

requestHandler.init(appid,appsecret, appkey,partnerkey, key);

代码:本地系统生成订单 

// 设置package订单参数 

  SortedMap<String, String> packageParams = new TreeMap<String, String>(); 

  packageParams.put("bank_type", "WX"); // 支付类型 

  packageParams.put("body", "xxxx"); // 商品描述 

  packageParams.put("fee_type", "1"); // 银行币种 

  packageParams.put("input_charset", "UTF-8"); // 字符集 

  packageParams.put("notify_url", "http://xxxx.com/xxxx/wxcallback"); // 通知地址 这里的通知地址使用外网地址测试,注意80端口是否打开。

  packageParams.put("out_trade_no", no); // 商户订单号 

  packageParams.put("partner", partenerid); // 设置商户号 

  packageParams.put("spbill_create_ip", super.getRequest().getRemoteHost()); // 订单生成的机器IP,指用户浏览器端IP 

  packageParams.put("total_fee", String.valueOf(rstotal)); // 商品总金额,以分为单位 

// 设置支付参数 

  SortedMap<String, String> signParams = new TreeMap<String, String>(); 

  signParams.put("appid", appid); 

  signParams.put("noncestr", noncestr); 

  signParams.put("traceid", PropertiesUtils.getOrderNO()); 

  signParams.put("timestamp", timestamp); 

  signParams.put("package", packageValue); 

  signParams.put("appkey", this.appkey);

  // 生成支付签名,要采用URLENCODER的原始值进行SHA1算法! 

  String sign ="";

    try {

    sign = Sha1Util.createSHA1Sign(signParams);

    } catch (Exception e) {

    e.printStackTrace();

    }   

  // 增加非参与签名的额外参数 

  signParams.put("sign_method", "sha1"); 

  signParams.put("app_signature", sign);   

  // api支付拼包结束------------------------------------ 

  //获取prepayid

  String prepayid = requestHandler.sendPrepay(signParams);

  System.out.println("prepayid :" + prepayid);

代码:生成预付快订单完成 

 //生成预付快订单完成,返回给android,ios 掉起微信所需要的参数。

  SortedMap<String, String> payParams = new TreeMap<String, String>(); 

  payParams.put("appid", appid);

  payParams.put("noncestr", noncestr);

  payParams.put("package", "Sign=WXPay");

  payParams.put("partnerid", partenerid);

  payParams.put("prepayid", prepayid);

  payParams.put("appkey", this.appkey);

  //这里除1000 是因为参数长度限制。

  int time = (int) (System.currentTimeMillis() / 1000);

  payParams.put("timestamp",String.valueOf(time));

  System.out.println("timestamp:" + time);

  //签名

  String paysign ="";

  try {

        paysign = Sha1Util.createSHA1Sign(payParams);

  } catch (Exception e) {

    e.printStackTrace();

  }

  payParams.put("sign", paysign);

 //拼json 数据返回给客户端

  BasicDBObject backObject = new BasicDBObject();

  backObject.put("appid", appid);

  backObject.put("noncestr", payParams.get("noncestr"));

  backObject.put("package", "Sign=WXPay");

  backObject.put("partnerid", payParams.get("partnerid"));

  backObject.put("prepayid", payParams.get("prepayid"));

  backObject.put("appkey", this.appkey);

  backObject.put("timestamp",payParams.get("timestamp"));

  backObject.put("sign",payParams.get("sign")); 

  String backstr = dataObject.toString();

  System.out.println("backstr:" + backstr);

  return backstr;

到此为止,预付款订单已生成,并且已返回客户端,坐等微信服务器通知,通知的地址就是生成预付款订单的notify_url

 ResponseHandler resHandler = new ResponseHandler(request, response);

  resHandler.setKey(partnerkey);

  //创建请求对象

  //RequestHandler queryReq = new RequestHandler(request, response);

  //queryReq.init();

  if (resHandler.isTenpaySign() == true) {

      //商户订单号

      String out_trade_no = resHandler.getParameter("out_trade_no");

      System.out.println("out_trade_no:" + out_trade_no);

      //财付通订单号

      String transaction_id = resHandler.getParameter("transaction_id");

      System.out.println("transaction_id:" + transaction_id);

      //金额,以分为单位

      String total_fee = resHandler.getParameter("total_fee");

      //如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee

      String discount = resHandler.getParameter("discount");

      //支付结果

      String trade_state = resHandler.getParameter("trade_state");

      //判断签名及结果

      if ("0".equals(trade_state)) {

        //------------------------------

        //即时到账处理业务开始

        //------------------------------

        System.out.println("----------------业务逻辑执行-----------------");

        //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

        System.out.println("----------------业务逻辑执行完毕-----------------");

        System.out.println("success"); // 请不要修改或删除

        System.out.println("即时到账支付成功");

        //给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知

        resHandler.sendToCFT("success");

       //给微信服务器返回success 否则30分钟通知8次

       return "success";

     }else{      

      System.out.println("通知签名验证失败");

      resHandler.sendToCFT("fail");

      response.setCharacterEncoding("utf-8");

    }

   }else {

      System.out.println("fail -Md5 failed"); 

  }

以上就是java实现微信支付服务端所要提供的代码,希望大家仔细研究,实现微信支付。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
微信支付
微信支付服务端java、微信支付java实现、java实现微信支付功能、java实现微信扫码支付、java如何实现微信支付,以便于您获取更多的相关知识。

时间: 2025-01-05 06:53:12

java实现微信支付(服务端)_java的相关文章

java-【求】android 银联支付 服务端demo

问题描述 [求]android 银联支付 服务端demo 如题,现在我们APP提供银联支付,我是后台开发,也就是服务端,以前从没弄过这个 ,不知道服务端要干些什么,求一个详细的demo,感谢了. (如果有IOS也可以提供,因为我们也有IOS版的) 解决方案 你查查银联支付的PHP或者Java SDK 解决方案二: Android 银联支付Demo 解决方案三: [求]android 银联支付 服务端demo 解决方案四: 你查查银联支付的PHP或者Java SDK

简单的java socket客户端和服务端示例_java

客户端 复制代码 代码如下: import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket; public class MyClient {      public static void main(String[] args) throws Exception {          Socket socket = new Socke

java实现socket客户端连接服务端_java

本例只做简单功能演示,代码并不严谨,只是说明客户端如何实现连接服务端简单代码. 代码在集成Eclipse工具下测试编译运行环境如下图所示: 客户端echoClient.java代码: package com.zhengzz.echo; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java

java读取用户登入退出日志信息上传服务端_java

本文实例为大家分享了读取用户登入出日志并上传服务端的具体实现代码,供大家参考,具体内容如下 该客户端运行在给用户提供unix服务的服务器上.用来读取并收集该服务器上用户的上下线信息,并进行配对整理后发送给服务端汇总. 具体实现代码: 1. DMSServer.java package com.dms; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.i

[Java]如何提高Web服务端并发效率的异步编程技术?

[编者按]在Java里开发多线程最强有力的实践就是做服务端的并发处理,本文作者阐述了实施多线程的具体实践方法,要真的掌握某种技术你就必须要知其所以然.笔者转发至此,希望对Web开发者有所帮助. 全文如下: 作为一名Web工程师都希望自己做的Web应用能被越来越多的人使用,如果我们所做的Web应用随着用户的增多而宕机了,那么越来越多的人就会变得越来越少了,为了让我们的Web应用能有更多人使用,我们就得提升Web应用服务端的并发能力.那么我们如何做到这点了,根据现有的并发技术我们会有如下选择: 给服

java实现微信支付功能开发实例

管理关于微信支付文档 https://pay.weixin.qq.com/wiki/doc/api/index.html 微信支付普通商户接入支持四种支付方式 刷卡支付 用户打开微信钱包的刷卡的界面,商户扫码后提交完成支付 公众号支付 用户在微信内进入商家H5页面,页面内调用JSSDK完成支付 扫码支付 用户打开"微信扫一扫",扫描商户的二维码后完成支付 APP支付 商户APP中集成微信SDK,用户点击后跳转到微信内完成支付 这里我们来看公众号支付 公众号支付开发步骤 1.设置测试目录

两种JAVA实现短网址服务算法_java

短网址(Short URL) ,顾名思义就是看起来很短的网址.自从twitter推出短网址服务以后,各大互联网公司都推出了自己的短网址服务.短网址最大的优点就是短,字符少,便于发布.传播.复制和存储. 通过网上的搜索,感觉流传了2种短网址算法,一种是基于MD5码的,一种是基于自增序列的. 1.基于MD5码 : 这种算法计算的短网址长度一般是5位或者6位,计算过程中可能出现碰撞(概率很小),可表达的url数量为62 的5次方或6次方.感觉google(http://goo.gl),微博用的是类似这

微信游戏打飞机游戏制作(java模拟微信打飞机游戏)_java

复制代码 代码如下: package com.beancore.ui; import java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.IOException;import java

android微信支付的服务端该怎么写,官网demo看半天都看不明白,有没有手把手教程,要服务端的

问题描述 android微信支付的服务端该怎么写,官网demo看半天都看不明白,有没有手把手教程,要服务端的 android微信支付的服务端该怎么写,官网demo看半天都看不明白,有没有手把手教程,要服务端的 解决方案 微信开发者文档里面写了恩 解决方案二: 我之前微信支付服务端是用demo中的asp写的如果有需要,可以联系我QQ360206731 解决方案三: --同样困惑中,找资料了看不太懂哪