一次完整的支付链路

一次完整的支付链路

  1. 用户在商城下单,计算各种优惠生成订单信息

  2. 订单进行自动流转,流转到由新建流转到待审核,在待审核中创建应收账款

  3. 通过返回的应收账款信息,前端组装数据,调用生成收款单接口,此接口调用支付宝支付1011请求,生成支付流水(此时支付流水为用户转给品牌商),1011请求此时默认返回待支付状态,与支付二维码返回给前端

  4. 前端界面展示支付二维码,客户扫码支付,支付成功后,钱到支付宝账户;支付宝发起回调通知,调用商城系统回调接口,回调接口将支付流水(用户转给品牌商的流水)状态修改为支付成功;然后将收款单状态流转为已收款,将订单流转为待出库;同时发起两次转账请求,一个是品牌商转账给经销商,一个是品牌商转账给中间商的手续费;再生成两条支付流水

### Java 实现微信支付过程中的握手机制 在Java实现微信支付的过程中,涉及到的主要通信协议是HTTPS。HTTPS基于HTTP并利用SSL/TLS来加密传输的数据。TLS/SSL握手发生在TCP三次握手之后,在应用层上提供安全的通信通道。 #### TCP 三次握手 当发起一个请求到微信支付服务器时,首先会经历标准的TCP三次握手过程以建立可靠的连接: 1. **SYN** 请求:客户端向服务器发送同步报文(SYN),表示希望与对方建立连接,并附带初始序列号。 2. **SYN-ACK** 响应:服务器接收到客户端的SYN后返回自己的SYN以及对客户端SYN的确认(ACK)。此时携带两个序列号——一个是来自客户端的加一后的值作为确认;另一个则是服务器自身的初始序列号[^1]。 3. **ACK** 确认:最后由客户端再次回应给服务器一个确认消息(ACK),其中包含了对于之前接收到的服务端SYN的确认信息。至此完成TCP层面的三次握手。 ```java // 创建Socket对象实例化 try (Socket socket = new Socket("weixinpay.example.com", 443)) { // 这里省略了实际业务逻辑代码... } catch (IOException e) { System.err.println(e.getMessage()); } ``` #### TLS/SSL 握手 一旦建立了TCP连接,则紧接着会发生TLS/SSL握手用于设置加密参数和验证身份等操作。此阶段通常包括但不限于以下几个步骤: - 客户端问候(Client Hello) - 服务端响应(Server Hello) - 证书交换 - 密钥协商 - 验证完毕通知 整个TLS/SSL握手中涉及多个往返通讯,具体次数取决于所使用的版本和其他配置因素,但一般情况下至少需要额外两次完整的网络交互才能最终确立安全会话[^2]。 因此,在Java程序调用微信支付API期间,实际上经历了两轮不同的握手动作:首先是TCP三次握手确保底层链路稳定性和可靠性;其次是TLS/SSL握手保障高层级的应用数据安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值