知识点汇总(八)微信支付

支付界面

门票表 ID产品名称 价格

预订信息表ID 下订单的时间 出行时间 数量 总价 支付方式(微信支付、线下)手机号String num = "[1][35789]\\d{9}" 购买渠道

门票记录表 记录单笔交易门票的购买记录 记录交易的金额 时间等

客户表ID 姓名 身份证号 手机号 用户名 密码

门票销售表

门票退票表

门票购买和消费

本项目的官网提供游客的注册和登录

登录后可以预订门票

[if !vml]

[endif]

通过查询数据库,如果该手机号没有在预订表中,则可以进行预订。

进入后端

如果选择线下预订,则在数据库预订表中插入该条订单信息,前端页面提示预订成功,然后把订单号返回给用户,用户凭借手机号和订单号去景区预订窗口取票。也可以在网站查询自己的订单信息。

如果选择微信支付,则需要调用微信支付的接口。

点击提交订单按钮后

1、首先是提交数据给微信,获取预交易单,和用于生成支付二维码的url。

把支付价格、appid、回调函数、等,放入sortedMap里,然后转换(Set es = parameters.entrySet(); 遍历获取键值,凑)为xml类型的String字符串,然后利用HttpRequest的postData方法,参数为选定接口的网址,和刚才的String。返回也是xml格式的String,调用工具方法,生成Map,通过getKey获取结果---一个预付款的Url,我们把这个url返回给前端

2、此时弹出框中的图片标签的src为一个请求,参数带上url,然后后端接收到这个请求根据这个url生成验证码图片,以流的形式写回。并开启轮询,发起验证支付是否成功的请求,跳转页面。

3、用户扫码进行支付,支付后浏览器根据之前设置的回调函数返回,请求我们的后台,通过签名等验证后,我们把xml格式的String转换为map,然后读出订单的状态,并微信发送确认。此时如果支付成功,则我们获取步骤1中存入session中的订单实体类对象,然后将其写入数据库,在预订表中插入一条数据。

4、当游客去现场取预约票时,工作人员根据游客提供的手机号(订单号、身份证),查询到预订的信息,如果游客是付现金或者预付,取票的话就设置订单状态为已取票,并添加进销售表中。如果游客选择退票,则在退票表中,添加数据。

5.如果是新买票,则根据实际的购买情况,插入销售表中。

你可能感兴趣的:(知识点汇总(八)微信支付)