JAVA+微信JSAPI支付

  • 引入依赖
  • 获取请求ip
  • 组装微信支付请求
  • 回调处理

引入依赖

 <dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-pay</artifactId><version>${weixin-java-pay.version}</version></dependency>

获取请求ip

    public static String getIpAddr(HttpServletRequest request){if (request == null){return "unknown";}String ip = request.getHeader("x-forwarded-for");if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){ip = request.getHeader("Proxy-Client-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){ip = request.getHeader("X-Forwarded-For");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){ip = request.getHeader("WL-Proxy-Client-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){ip = request.getHeader("X-Real-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){ip = request.getRemoteAddr();}return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : EscapeUtil.clean(ip);}

组装微信支付请求

public <T> T createWxOrder(ReqStringParam param) throws WxPayException {WxPayService wxPayService = wxPayConfiguration.wxService();WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest();request.setAppid(wxPayService.getConfig().getAppId());request.setMchId(wxPayService.getConfig().getMchId());request.setDetail("交易描述");request.setOutTradeNo(order.getOrderSn());//支付回调地址request.setNotifyUrl(wxPayService.getConfig().getNotifyUrl());request.setFeeType("CNY");// 货币类型 人民币// 支付金额BigDecimal actualPrice = BigDecimal.valueOf(100L);request.setTotalFee(actualPrice.multiply(BigDecimal.valueOf(100L)).intValue());request.setSpbillCreateIp(IpUtils.getIpAddr(httpServletRequest));// 获取iprequest.setTradeType("JSAPI");// 交易类型request.setBody("支付");request.setOpenid(user.getWeixinOpenid());// 微信openId//设置支付方式return wxService.createOrder(request);}

回调处理

public String parseWxOrderNotifyResult(String xmlData) throws WxPayException {WxPayOrderNotifyResult wxPayOrderNotifyResult = wxService.parseOrderNotifyResult(xmlData);String outtradeNo = wxPayOrderNotifyResult.getOutTradeNo();MallOrder order = iMallOrderService.lambdaQuery().eq(MallOrder::getOrderSn, wxPayOrderNotifyResult.getOutTradeNo()).one();if ("FAIL".equals(wxPayOrderNotifyResult.getResultCode())) {// 失败业务逻辑处理} else {// 成功业务逻辑处理}return "<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[OK]]></return_msg> </xml>";}

JAVA+微信JSAPI支付相关推荐

  1. Java 微信jsapi支付

    spring boot微信jsapi支付 话不多说,撸起袖子就是干,下面上源码 pom.xml 配置文件 resources/wx.properties 配置类 service(WechatPaySe ...

  2. 微信JSAPI支付对接流程及支付接口设计

    文章目录 前言 一.JSAPI支付场景及逻辑 二.开发步骤 1.设置支付目录 2.设置授权域名 3.业务流程 三.代码设计 1. 支付页面 2. Controller 3. JS调起支付 4. 工具类 ...

  3. php微信jsapi支付小结,ThinkPHP接入微信支付 - JSAPI支付

    一.支付准备 二.获取用户openid 首先,到微信公众平台后台 - 设置 - 网页授权域名(别忘了添加开发者) // 在头部引入WechatPubService.php文件,见附录一 use app ...

  4. 微信JSAPI支付 跟 所遇到的那些坑

    首先介绍一下我在调用微信支付接口使用的是 weixin.senparc SDK,非常方便好用开源的一个微信开发SDK. weixin.senparc SDK 官网:http://weixin.senp ...

  5. 微信JSApi支付~订单号和微信交易号

    返回目录 谈谈transactionId和out_trade_no 前一篇微信JSApi支付~坑和如何填坑文章反映不错,所以又写了个后篇,呵呵. 每个第三方在线支付系统中都会有至少两类订单号,其一为支 ...

  6. 关于微信JSAPI支付成功后,点击完成后没有返回值并且页面被自动关闭问题

    微信JSAPI支付成功后,点击完成后没有返回值并且页面被自动关闭 简介 解决方式 错误的处理方式 总结 简介 最近很多人可能都遇到一个问题,在使用微信JSAPI支付成功后,不走成功的回调方法,只有支付 ...

  7. php接入微信JSAPI支付,微信内拉起支付,基于thinkPHP框架 WeChatDeveloper支付类包

    文章:php接入微信支付,扫码支付和H5支付(非微信浏览器),基于thinkPHP框架 WeChatDeveloper支付类包 踩坑指南 文章:php快速接入支付宝即时支付,PC网站支付和手机网站支付 ...

  8. php 微信统一下单接口,微信JSAPI支付,统一下单接口

    微信JSAPI支付,统一下单接口 今天小编给大家分享一下微信支付的统一下单接口,其实微信官网上也有SDK和DEMO下载了,但是不太好理解,小编就自己整理一份容易理解的代码,看不懂官方的,就来看看小编这 ...

  9. C# .NETMVC 微信JSAPI支付

    C# .NET MVC微信JSAPI支付 经过本人不断翻找资料和百度终于结合一些大佬的经验和思路弄出来一个MVC的微信支付了. 再弄微信支付之前我们需要先有一个商户号,并且开通了微信支付的JSAPI支 ...

最新文章

  1. 【Matlab】函数输入个数不定怎么办?
  2. 【机器学习基础】撒花!李宏毅机器学习 2021 版正式开放上线
  3. 微信小程序 条形加载读取进度 切换音频进度。简单实现(自定义音频界面实现)
  4. sphinx_Sphinx之谜:如何轻松地编写代码
  5. Cilium架构:提供并透明地保护应用程序工作负载之间的网络连接和负载平衡
  6. linux命令跨进程拷贝文件,linux scp命令安全远程文件复制程序
  7. 客户端(https)与服务器交互过程
  8. 计算机科学工程哲学学位,2020年剑桥大学硕士读多久
  9. dotCMS学习记录--结构
  10. cc2530c语言教程,cc2530程序设计实例之CC2530 RF部分使用—实现点对点收发 - 全文...
  11. 利用t-SNE可视化Glove向量
  12. atx motherboard layout ATX主板规格尺寸图
  13. 广东神州行如何拨打长长途才实惠?
  14. Win10 官方版下载地址 windows10 1909微软原版光盘镜像下载
  15. 清晰明了有趣味的数字加密讲解
  16. Echarts制作态势图、热点图、轨迹图,使用百度底图,地图下钻
  17. dell 工作站装linux_dell 工作站装linux_个人电脑只装Linux是怎样的体验?
  18. MACD+波动率过滤+追踪止损 期货择时汇总
  19. Windows系统离线安装.NET Framework 3.5(自己做个总结)
  20. 涛思数据 TDengine 与华为云达成合作,正式入驻华为云市场

热门文章

  1. Fluent求解器——多相流模型
  2. 阿里巴巴一面 :十道经典面试题解析
  3. 逻辑代数的基本规则常用公式
  4. 从1到2 | ETH 2.0为我们带来了什么
  5. Python 这篇文章告诉我Python实际中干什么事情
  6. OPEN ALLIANCE TC2和TC9线束以太网测试标准?何种设备可以满足测试?除了矢量网分之外
  7. java毕业设计电子病历系统(附源码、数据库)
  8. 猴子选大王(增强版)
  9. 202319读书笔记|《春之海终日优哉游哉:谢芜村俳句300》——远山峡谷间樱花绽放,宇宙在其中
  10. 【Flink】实时归因场景踩坑