原标题:Java微信支付【面试+工作】

Java微信支付【面试+工作】

微信支付文档上有刷卡支付,扫码支付,公众号支付,APP支付等各种支付手段。本次就微信内打开的网页支付为例子,用java进行实现一下。微信内网页支付可以将其归属为公众号支付。

一、设置支付目录

打开微信商户平台,设置路径:商户平台-->产品中心-->开发配置,如图7.7所示。公众号支付在请求支付的时候会校验请求来源是否有在商户平台做了配置,所以必须确保支付目录已经正确的被配置,否则将验证失败,请求支付不成功。

二、设置授权域名

开发公众号支付时,在统一下单接口中要求必传用户openid,而获取openid则需要您在公众平台设置获取openid的域名,只有被设置过的域名才是一个有效的获取openid的域名,否则将获取失败。

完成以上两步后,微信端的支付端口就能够被我们的网站调用了。

三、分析业务时序图

微信在官方文档中用时序图反映了其对应的业务流程。

根据此图,可以看出流程大致为:自己的java后台生成付款链接,用户点击链接,在java后台中生成商户订单,将此订单按照微信的格式发送给微信支付系统,微信支付系统生成一个预付单给java后台,然后在java后台中生成支付参数返回给用户,用户点击付款,会向微信支付系统检查支付参数的合法性,确认无误后即可完成付款操作。付款完成后异步通知商户付款结果,并会跳到指定的付款成功页面。

四、java实现

1、首先需要调用微信支付的包,加入到pom.xml中。

2、在页面中,需要点击支付按钮发生的事件如下,首先跳转到自己的后台,返回支付所需要的支付参数,并存进js的元素中,留给pay2()使用。其中'${redirect_uri}'这个值是自己之前填进去的域名。只不过这里我为了方便管理,讲其写入了配置文件,可以让其作为后台返回的一个值传进js中。

3、通过"mobile/user/pay/"这个地址对应的java处理Controller如下代码所示,目的是返回支付所需要的参数值。其中openId这一参数是在用户使用微信登录时被我存入session中的。重点在于WXPayExample.yy(openId)这里,这个类是通过openId获取预付款信息的通道。

Controller.java

在WXPayExample类中,第一步还是通过MyConfig()配置获取服务号APPID,商户号,和Key,并且加载支付证书。然后填写支付信息中的随机码,支付金额,付款方式,付款URL等。然后由WXPay将其添加签名,WxPayUtil将其转化为xml文件,通过wxpay.unifiedOrder(data)发送给微信支付平台,并获取返回值。其中这个三个包都可以需要导入

WXPayExample.java

MyConfig.java

4,这个时候,就已经可以拿到预付款信息了。里面有一个预付款prepay_id就是微信平台中的该条预付款信息的ID。将返回的nonceStr,prepay_id按照要求封装为package与其他的参数打包在一起。并添加一个签名。然后把签名和其他所有的标签放进map集合后,转成result1发送给页面。用户既可以选择支付了。

5、用户支付的java。回到cart.jsp中,第二步中的ajax获取到返回值之后,就可以进行下一步操作了。pay2()这一个function是用户支付指令的发送,当微信支付准备好了之后,通过onBridgeReady()这一方法进行付款,如果付款成功,调用success方法,失败后直接跳转到失败页面。至此,这个整个过程就宣告结束。

cart.jsp

责任编辑:

联通支付java面试_Java微信支付【面试+工作】相关推荐

  1. Java中的微信支付(2):API V3 微信平台证书的获取与刷新

    1. 前言 在Java 中的微信支付(1):API V3 版本签名详解一文中胖哥讲解了微信支付 V3 版本 API 的签名,当我方(你自己的服务器)请求微信支付服务器时需要根据我方的API 证书对参数 ...

  2. java微信支付v3系列——6.微信支付查询订单API

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  3. java微信支付v3系列——1.微信支付准备工作

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  4. java微信支付v3系列——7.微信支付之申请退款

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  5. java微信支付v3系列——8.微信支付之退款成功回调

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  6. java微信支付v3系列——5.微信支付成功回调

    目录 java微信支付v3系列--1.微信支付准备工作 java微信支付v3系列--2.微信支付基本配置 java微信支付v3系列--3.订单创建准备操作 java微信支付v3系列--4.创建订单的封 ...

  7. Java后端对接微信支付(微信公众号、PC端扫码)

    微信流程图 项目结构 前期准备 复制证书 将证书中名为apiclient_key.pem的文件复制到你的项目中 依赖 <!-- 微信支付SDK--> <dependency>& ...

  8. app微信支付-java服务端接口 支付/查询/退款

    app微信支付-java服务端接口 支付-查询-退款 个人看微信的文档,看了很多前辈的写法,终于调通了,在这里做一下记录. 首先来定义各种处理类(微信支付不需要特殊jar包,很多处理需要自己封装,当然 ...

  9. JAVA PC端扫码支付(一)微信支付

    微信支付从配置到开发 一.配置 1.开通公众平台支付功能 商户号 微信支付功能先要申请微信(企业)公众平台,然后开通企业公众平台付功能.下图为微信(企业)公众平台页面,可以看到商户号等信息 微信公众号 ...

最新文章

  1. 设置虚拟工作空间_建筑狂想曲 | 建筑学习生活空间虚拟设计工作营最终评图
  2. iOS 开发中的多线程
  3. 手把手教你创建自己的Altium Designer集成元件库
  4. html图片在ie中有边框,html – 表格的边框在IE中不起作用
  5. asp.net DataGrid GridView 表格之选中行与获取选中行数据
  6. vue - 插槽slot
  7. 信贷中的SAS,一份关于它的系统性内容|含案例
  8. Nginx+tomcat整合
  9. Dev cpp出现段错误的原因之一
  10. CATIA二次开发—遍历结构树
  11. android默认打开方式修改,教你修改安卓智能手机默认打开方式
  12. 如何卸载冰点还原精灵
  13. 使用淘宝api直接上传图片的方法
  14. 嵌入式系统开发笔记16:CJ/T-188 冷热量表协议解析5
  15. 注册时出现服务器错误,创建Apple ID时出现服务器错误,导致无法完成注册是什么原因...
  16. M1版MacBookAir使用情况(供购买参考)
  17. 【机器人学】机器人学领域的顶级期刊和会议
  18. 加载PNG、ANI等资源文件
  19. 计算机应用领域的实践,计算机技术在通信技术领域的应用实践探微
  20. 笔记本内存不够用怎么扩大

热门文章

  1. es与mysql数据同步 (go-mysql-es)
  2. spring boot的多个PostConstruct方法执行顺序控制
  3. robotframework使用之浏览器打不开,报错'Capture Page Screenshot' could not be run on failure: No browser is open
  4. Nessus 系统漏洞扫描与分析软件
  5. 操作系统-linux-内存-缓存
  6. android studio忘记密码界面,AndroidStudio制作“我”的界面,设置,修改密码,设置密保和找回密码...
  7. 【C语言】Wave文件处理
  8. VS2019 windows桌面应用_使用NX1899/NX1907和VS2019进行二次开发环境搭建的过程
  9. 生鲜 B2B 技术平台的前端团队该如何搭建
  10. 软考-嵌入式系统设计师:[嵌入式系统基础:笔记(一)]