博客
关于我
微信支付系统开发
阅读量:256 次
发布时间:2019-03-01

本文共 1165 字,大约阅读时间需要 3 分钟。

最近,我花了近一个月的时间完成微信支付功能的开发工作,并在本地使用MyEclipse进行调试。然而,由于之前将工作空间设置在MyEclipse安装目录下,导致所有代码丢失。幸运的是,工作中的代码已经托管到SVN仓库,但微信支付相关的代码尚未上传,让我感到无比焦虑。

面对这一困境,我决定冷静分析问题。首先,我备份了所有相关代码,然后重新整合微信支付功能到现有项目中。微信支付的功能主要包括统一下单、支付结果通知和查询订单,这些功能需要与业务系统进行集成。

统一下单(WeChatPayServerServlet)

统一下单功能是整个微信支付流程的起点。我的实现逻辑如下:

  • 接收并解析客户端请求中的XML数据,转换为有序的Map格式,便于后续处理。
  • 验证客户端签名,确保数据的安全性。
  • 生成随机的nonce_str,构建请求参数,包括设备数量、续费年限等信息。
  • 调用微信支付统一下单接口,发送请求并处理返回结果。
  • 在代码实现中,我使用了MD5加密算法来验证签名,确保客户端数据的完整性。同时,我还需要处理支付结果的通知,这需要在成功处理下单后,通过HTTPS协议将结果通知给 backend服务器。

    支付结果通知(WeChatPayNoticeServlet)

    支付结果通知是微信支付流程的关键环节,负责处理支付成功或失败的状态更新。我实现了以下逻辑:

  • 接收微信支付系统返回的通知结果,解析XML数据。
  • 验证通知结果的签名,确保数据的合法性。
  • 根据返回的结果代码(SUCCESS或FAIL),更新本地数据库中的订单信息。
  • 对于成功支付的通知,更新设备的续费时间和有效期,确保业务逻辑的正确性。
  • 在数据库更新部分,我特别注意了设备续费的时间处理,确保续费时间在产品过期之前或之后正确更新产品信息。

    查询订单(WeChatPayQueryServlet)

    查询订单功能允许商家查看具体订单的支付状态和详情。我的实现步骤如下:

  • 接收APP发送的查询请求,解析参数。
  • 调用微信支付查询订单接口,发送HTTPS请求。
  • 处理返回结果,解析XML数据,验证签名。
  • 将查询结果返回给前端,供用户查看。
  • 整个过程中,我注重数据解析的准确性和异常处理的完整性,确保在不同情况下都能稳定运行。

    技术工具

    为了实现上述功能,我使用了以下工具和库:

    • XML解析工具(XmlParseUtil):用于将XML数据转换为有序的Map格式,便于后续处理。
    • MD5加密(MD5Util):用于签名验证,确保数据传输的安全性。
    • HTTPS连接工具(WeUtil):实现了安全的HTTPS数据传输,确保数据传输的安全性。

    总结

    通过以上实现,我完成了微信支付功能的开发和集成。虽然过程中遇到了一些挑战,但通过仔细的分析和调试,最终实现了一个稳定、高效的微信支付解决方案。

    转载地址:http://yxex.baihongyu.com/

    你可能感兴趣的文章
    Openlayers高级交互(17/20):通过坐标显示多边形,计算出最大幅宽
    查看>>
    Openlayers高级交互(18/20):根据feature,将图形适配到最可视化窗口
    查看>>
    Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
    查看>>
    Openlayers高级交互(2/20):清除所有图层的有效方法
    查看>>
    Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
    查看>>
    Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除
    查看>>
    Openlayers高级交互(4/20):手绘多边形,导出KML文件,可以自定义name和style
    查看>>
    Openlayers高级交互(5/20):右键点击,获取该点下多个图层的feature信息
    查看>>
    Openlayers高级交互(6/20):绘制某点,判断它是否在一个电子围栏内
    查看>>
    Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
    查看>>
    Openlayers高级交互(8/20):选取feature,平移feature
    查看>>
    Openlayers高级交互(9/20):编辑图形(放缩、平移、变形、旋转),停止编辑
    查看>>
    Openlayers:DMS-DD坐标形式互相转换
    查看>>
    openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
    查看>>
    OpenLDAP(2.4.3x)服务器搭建及配置说明
    查看>>
    OpenLDAP编译安装及配置
    查看>>
    Openmax IL (二)Android多媒体编解码Component
    查看>>
    OpenMCU(一):STM32F407 FreeRTOS移植
    查看>>
    OpenMCU(三):STM32F103 FreeRTOS移植
    查看>>
    OpenMCU(三):STM32F103 FreeRTOS移植
    查看>>