微信支付流程

都是我自己工作中开发的,亲测可用,不喜勿喷。

controller中我是这么写的,你们需要根据自己的业务需求改动。ResponseBean是我自己封装的,你们可以改成你们想要的形式。

/**

* 微信统一下单接口

* @return

*/

@RequestMapping(value = "/doUnifiedOrder", method = RequestMethod.POST)

public ResponseBean doUnifiedOrder(@RequestBody Map req) {

Map resultMap=new HashMap();

String openid = (String) req.get("openId");

WXPay wxpay =null;

try {

//初始化证书

myConfig.initCert();

wxpay= new WXPay(myConfig);

} catch (Exception e) {

e.printStackTrace();

}

//生成的随机字符串

String nonce_str = WXPayUtil.generateNonceStr();

//获取客户端的ip地址

//获取本机的ip地址

InetAddress addr = null;

try {

addr = InetAddress.getLocalHost();

} catch (UnknownHostException e) {

e.printStackTrace();

}

//支付金额,需要转成字符串类型,否则后面的签名会失败

String payOutMoney = WxMoney.changeY2F(String.valueOf(req.get("money")));

String tradeName = (String) req.get("tradeName");

if(tradeName!=null&&tradeName.length()>0){

}else{

tradeName = "课程支付";

}

String body = tradeName;

//商户订单号

String out_trade_no= WXPayUtil.generateNonceStr();

//统一下单接口参数

HashMap data = new HashMap();

data.put("appid", 你的appid);

data.put("mch_id", 商户id);

data.put("nonce_str", nonce_str);

data.put("body", body);

data.put("out_trade_no",out_trade_no);

data.put("total_fee", payOutMoney);

data.put("spbill_create_ip", "127.0.0.1");

data.put("notify_url", 回调地址);

data.put("trade_type","JSAPI");

data.put("openid", openid);

try {

Map rMap = wxpay.unifiedOrder(data);

String return_code = (String) rMap.get("return_code");

String result_code = (String) rMap.get("result_code");

String nonceStr = WXPayUtil.generateNonceStr();

resultMap.put("nonceStr", nonceStr);

Long timeStamp = System.currentTimeMillis() / 1000;

if ("SUCCESS".equals(return_code) && return_code.equals(result_code)) {

String prepayid = rMap.get("prepay_id");

resultMap.put("package", "prepay_id="+prepayid);

resultMap.put("signType", "MD5");

//这边要将返回的时间戳转化成字符串,不然小程序端调用wx.requestPayment方法会报签名错误

resultMap.put("timeStamp", timeStamp + "");

//再次签名,这个签名用于小程序端调用wx.requesetPayment方法

resultMap.put("appId",myConfig.getAppID());

String sign = WXPayUtil.generateSignature(resultMap, myConfig.getKey());

resultMap.put("paySign", sign);

resultMap.put("out_trade_no",out_trade_no);

ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value(),"微信支付",resultMap);

return responseBean;

}else{

ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value(),"微信支付失败","微信支付失败");

return responseBean;

}

} catch (Exception e) {

ResponseBean responseBean = new ResponseBean(HttpStatus.OK.value(),"微信支付失败","微信支付失败");

e.printStackTrace();

return responseBean;

}

}

java微信退款_Java后台实现微信支付和微信退款相关推荐

  1. 微信公众号中的支付宝支付与微信支付 支付宝支付问题(微信bug)

    一般,在微信公众号中的商城都是需要支持微信支付和支付宝支付的,当然,较大的公司对于鹅厂和阿里的站队就不说了,所以这里简单记录一下支付宝支付和微信支付的主要流程.说是简单介绍,这是因为确实不难,因为前端 ...

  2. 微信支付宝服务器在哪里,支付宝支付与微信支付服务端回调notify_url数据的区别...

    这两天优化了一下支付宝支付和微信支付订单回调的问题,之前我们的订单都是用手动回调给服务器,现在改成支付宝和微信原生的异步回调,结果并没有像我们想象的那么简单,支付宝是很顺利的解决回调,用一般的方式接收 ...

  3. 支付宝sdk java对接_java后台支付宝app支付调用sdk进行支付

    支付宝sdk 创建一个支付宝的util类 public class AlipayUtil { public static final String APP_ID = "20160911004 ...

  4. java打印等腰三角形_Java 后台开发面试题分享三

    重载(Overload)和重写(Override)的区别.重载的方法能否根据返回类型进行区分? 重载:同一个类,同一个方法名,不同的参数列表(参数的个数,类型和顺序不同):构造器可以重载:方法的重载与 ...

  5. java pdf文件下载_Java后台返回PDF文件预览下载

    Java后台返回PDF文件预览下载 开始的代码的系统代码为: ResponseEntity onePdf = s3Wrapper.download(contractEntity.getContract ...

  6. java对账_java后台实现支付宝对账功能的示例代码

    完成支付宝支付.查询的接口之后,我们应该还需要定时与支付宝进行对账,以确保商户系统的订单信息是正确的,想知道支付宝支付.查询接口实现过程的亲们,可移步到上一篇有详细过程. 现在我们来讲一下支付宝对账的 ...

  7. java时间计算器_java后台时间计算

    将毫秒转换成年月日时分秒 public static void main(String[] args) { Date date = new Date(); System.out.println(dat ...

  8. java判断唯一性_java 后台验证数据唯一性

    /** * 判断唯一 */ @ResponseBody @RequestMapping(params = "method=isExist2") public AjaxMsg isE ...

  9. 【愚公系列】2022年10月 微信小程序-电商项目-微信支付小程序确认支付结果和退款功能实现(node)

    文章目录 前言 一.微信支付小程序确认支付结果和退款功能实现 1.确认支付结果 2.退款功能实现 前言 微信小程序在支付成功后会给注册的接口发消息来通知订单支付成功的状态,下面是微信和接口通信的数据格 ...

最新文章

  1. 使用Cacti监测系统与网络性能(3)
  2. 【译】混沌工程与区块链
  3. 事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
  4. 32岁被裁补偿N+2:“感谢裁我,让我翻倍!” 网友:求同款被裁!
  5. java压缩/解压缩zip格式文件
  6. 一统江湖的大前端(4)shell.js——穿上马甲我照样认识你
  7. Serverless 是一种思想状态
  8. 抬头遇见图灵奖得主和全球顶尖科学家?超豪华阵容智源大会求带我一个!
  9. memcached并发CAS模式
  10. 从祖师级到新生代,48位开发者的「武功秘籍」
  11. C++ stack 遍历
  12. 学术英语理工(第二版)Unit1课文翻译
  13. 创新创意ssm计算机毕业设计题目300例之java农商行贷款管理系统f1gnk
  14. 软件测试中的“汽车车载导航系统项目”讲解
  15. 碳排放权、碳交易日度数据分部门、能源碳排放面板数据
  16. Microsoft Teams全生命周期会议-03你了解MeetingRoom吗
  17. 开发一款好玩的地图app
  18. 6.3 理解矩阵背后的意义
  19. SpringBoot集成之过滤器
  20. 系列学习 docker 之第 5 篇 —— Docker 常用命令

热门文章

  1. Kruskal算法(java)
  2. 【基于 docker 的 Flask 的深度学习模型部署】
  3. Reac组件化以及组件通信
  4. BS1060-基于BS架构+mysql数据库实现在线法律法规查阅系统
  5. 教师不能不懂得课堂用语(收尾篇)
  6. 支付宝通过网页授权获取assceToken和userId
  7. 语音信号的分帧、加窗处理
  8. 【设计模式】解释器模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
  9. (IS 19)On Learning Interpretable CNNs with Parametric Modulated Kernel-based Filters
  10. Hexo 主题配置 - NexT