Java对接微信实现微信APP支付

之前对接过第三方的支付方式,也有接入微信jsapi的支付方式,这次项目需求要求对接微信APP支付,找了很多,几乎都没有最新版的微信支付v3的对接相关的详细博客,真的麻了,下面是我结合一些博客跟文档整合的对接过程,亲测有效,欢迎小伙伴们一起探讨
注意对接的数据加密解密,传递格式那些是最麻烦的东西。所以已经有大佬把这些基础的数据对接做了整合,ijPay。我们需要关注的只有给对象设置参数,发起请求,处理响应数据,很方便。本文就基于此展开对接的讲解。
ijpay开源支付对接地址

整体对接流程

1.先下载ijpay源码到本地

ijpay整合了许多支付,这里我们只讲解微信APP支付的对接,直接把源码里面的微信支付的代码拷贝到项目里,缺什么依赖,根据报红的提示,自己引入,这里不做详细说明.

2.【 微信支付v3版本证书下载】和【配置配置文件】
1).证书的下载
登陆商户平台–>账户中心–>api安全–>API安全
然后生成证书,最终会生成3个文件

2).证书copy到【项目】的文件夹中

3).设置api秘钥和apiv3秘钥
登陆商户平台–>账户中心–>api安全–>设置api秘钥/设置apiv3秘钥
保存好,后面要用到
4).设置配置文件 wxpay_v3.properties


这里讲下配置文件的参数如果获取
appId:登陆微信公众平台–>开发–>基本配置–>开发者ID(AppID)
keyPath: 对应apiclient_key.pem所在路径
certPath: 对应apiclient_cert.pem所在路径
certP12Path: 对应apiclient_cert.p12所在路径(退订的时候用的这个!!!)
platformCertPath: 【平台证书】访问v3支付提供的接口获取,下面会讲
mchId: 登陆商户平台–>账户中心–>商户信息–>微信支付商户号
apiKey3: 参考上面的设置api秘钥和apiv3秘钥
apiKey: 参考上面的设置api秘钥和apiv3秘钥
domain: 项目域名

5).获取平台证书,也就是上图的platformCert.pem文件
启动服务,本地访问接口: localhost/v3/get
这里会请求腾讯接口,拿到平台证书,并保存到配置文件所配置的路径下(注意文件名在配置文件一开始就要配好)
配置文件到这里就配好了

接下来就是APP支付:
官方文档(微信APP下单)

下面是代码示例:

@RequestMapping("/appPay")@ResponseBodypublic String appPay(String orderNo) {try {LambdaQueryWrapper<Order>wrapper = Wrappers.lambdaQuery();wrapper.eq(Order::getOrderNo,orderNo);Order order = orderService.getOne(wrapper);String timeExpire = DateTimeZoneUtil.dateToTimeZone(System.currentTimeMillis() + 1000 * 60 * 3);UnifiedOrderModel unifiedOrderModel = new UnifiedOrderModel().setAppid(wxPayV3Bean.getAppId()).setMchid(wxPayV3Bean.getMchId()).setDescription("商品描述").setOut_trade_no(orderNo).setTime_expire(timeExpire).setAttach("微信支付").setNotify_url(wxPayV3Bean.getDomain().concat("/api/v3/payNotify")).setAmount(new Amount().setTotal(Math.toIntExact(order.getTotalFee())));//订单总金额,单位为分log.info("统一下单参数 {}", JSONUtil.toJsonStr(unifiedOrderModel));IJPayHttpResponse response = WxPayApi.v3(RequestMethodEnum.POST,WxDomainEnum.CHINA.toString(),BasePayApiEnum.APP_PAY.toString(),wxPayV3Bean.getMchId(),getSerialNumber(),null,wxPayV3Bean.getKeyPath(),JSONUtil.toJsonStr(unifiedOrderModel));log.info("统一下单响应 {}", response);// 根据证书序列号查询对应的证书来验证签名结果boolean verifySignature = WxPayKit.verifySignature(response, wxPayV3Bean.getPlatformCertPath());log.info("verifySignature: {}", verifySignature);if (response.getStatus() == OK && verifySignature) {String body = response.getBody();JSONObject jsonObject = JSONUtil.parseObj(body);String prepayId = jsonObject.getStr("prepay_id");Map<String, String> map = WxPayKit.appCreateSign(wxPayV3Bean.getAppId(), wxPayV3Bean.getMchId(), prepayId, wxPayV3Bean.getKeyPath());log.info("唤起支付参数:{}", map);return JSONUtil.toJsonStr(map);}return JSONUtil.toJsonStr(response);} catch (Exception e) {e.printStackTrace();return e.getMessage();}}

这里有个支付回调

代码就这些,把需要的参数配置下就能直接用了,其他微信支付方式都类似,可以自行举一反三,不懂的欢迎评论留言,写博客不易,觉得不错的老铁点赞关注收藏一波,谢谢!

Java对接微信支付实现微信APP支付相关推荐

  1. 微信开放平台手机APP支付

                PHP对接APP微信支付 微信开放平台手机APP支付总结 1. 微信开放平台手机APP支付总结 支付功能链接: https://pay.weixin.qq.com/wiki/d ...

  2. springboot 银联支付(手机app支付)

    springboot 银联支付(手机app支付) 应用:在手机app中使用银联支付,支持安卓.ios 官方文档:https://open.unionpay.com/tjweb/acproduct/li ...

  3. android个人支付功能,个人app支付接入(三分钟搞定个人微信支付,支付宝支付问题)---贝贝支付...

    前言 想必很多人个人开发者和我有同样的感触,想要在自己开发的app中接入微信支付和支付宝支付,仅仅是去申请支付接口就把我们挡在了门外,微信和支付宝都只对接企业的,那不是想逼死我们个人开发者吗?一开始使 ...

  4. 支付宝 实现 移动网页支付、PC网页支付、混合APP支付(支持微信支付)

    1.移动网页支付 支付宝开放平台中申创建移动网页应用: 前端比较省事 1.若后台返回的是form表单执行以下代码,每次用完及时销毁: 当然不想写承载页的还有其他方法调起支付,具体逻辑具体分析,根据不同 ...

  5. app提现到微信开通流程图_微信支付商户平台app支付开通方法详解

    一.创建移动应用 1.创建移动应用之前,必须得有微信开放平台的认证账号,如无可查阅"网创商盟"历史消息进行申请认证操作. 2.登录微信开放平台创建移动应用,按照页面填写一下信息,包 ...

  6. 个人支付接入-个人app支付微信支付、支付宝支付接入(2分钟完成接入)

    作为一个个人开发者,一开始在个人的应用中接入广告,慢慢的这种方式越来越被摒弃了,下面简单介绍一下我最近使用的一款感觉很不错的个人聚合支付的平台的接入流程,其实很简单,分为两步即可. 贝贝支付官网:ht ...

  7. java对接银联商务公众号+服务窗支付(1)

    java实现银联商务公众号+服务窗对接----支付下单 GitLab地址:https://gitlab.com/982837387/UnionPayGetWay.git 本文对接银联商务公众号+服务窗 ...

  8. java对接银联商务公众号+服务窗支付(3)

    java实现银联商务公众号+服务窗对接----订单退款 本文对接银联商务公众号+服务窗支付,实现支付下单.订单查询.订单退款.退款查询和订单关闭几个功能,使用到银联商务的公众+服务窗支付接口规范,请自 ...

  9. django手机访问_Django对接支付宝电脑网站、App支付步骤详解!这个框架是真强!...

    一.前言 本文主要针对 Python for Django 在对接支付宝电脑网站.手机网站.App支付过程中具体实现步骤进行详解: 相信大家支付功能也写了不少,但时间一长,再次用到的时候有些细节难免会 ...

  10. java对接银联商务公众号+服务窗支付(5)

    java实现银联商务公众号+服务窗对接----订单撤销 本文对接银联商务公众号+服务窗支付,实现支付下单.订单查询.订单退款.退款查询和订单关闭几个功能,使用到银联商务的公众+服务窗支付接口规范,请自 ...

最新文章

  1. 关于Latex一个简单例子
  2. 企业远程接入配置 不宜贪小失大
  3. Java程序猿必读的书籍,良心推荐!
  4. Eclipse导入GitHub项目两处报错处理
  5. 01 | 基础架构:一条SQL查询语句是如何执行的?笔记(转)
  6. 中国酒精炉行业市场供需与战略研究报告
  7. 如何去掉 WinCE 4.2 的桌面墙纸
  8. Linux查看当前系统的版本信息
  9. 计算机资源管理老是未响应,Win10资源管理器总是崩溃怎么办?文件资源管理器未响应解决方法...
  10. ppt模板免费下载的网站有哪些?这个宝藏网站必须make
  11. 安装VS之后,excel每次启动都会配置Visual Studio的解决办法
  12. 心电信号的特征提取、分析与处理
  13. gsp认证计算机系统检查内容,版GSP认证之附录计算机系统检查项目PPT课件.ppt
  14. 南京师范大学计算机考研2021,南京师范大学2021考研分数线已公布
  15. java动物继承_java 编码实现动物世界的继承关系:动物(Animal)属性:名称(name)具有行为:吃(eat)、睡觉(sleep)...
  16. Jenkins与DevOps持续交付详解
  17. What?Tomcat 竟然也算中间件?
  18. 化工厂人员定位如何实现,可以解决哪些问题?
  19. 膨胀腐蚀-OpenCL加速及kernel变成二进制文件
  20. 2005计算机885编程题

热门文章

  1. 中国文化及相关产业统计年鉴(2013-2022)
  2. python节日贺卡
  3. LabVIEW使用两三年感触
  4. spring boot设置session超时时长(自定义spring boot session超时时长)
  5. ISP Tuning之路:初识ADRC
  6. Hadoop安装教程_单机伪分布式配置_Hadoop2.6.0(2.7.1)Ubuntu14.04(16.04)
  7. hdfs命令响应特别慢的问题
  8. VB6升级到VB2010之五: 从Unload 升级成Me.Close看VB2010有多类~
  9. 拿到CCIE证书两年后
  10. lammps教程:lj/cut力场使用方法