zoukankan      html  css  js  c++  java
  • 和支付宝打交道的经验教训

      现在不像前一段那么忙了,对去年作一个回顾系列吧。就在不久以前,发现忽然间从某个时段开始,网站预订的订单居然全部支付失败了。来麻烦了,客户投诉领导黑脸,搞得人很头大。

      我们网站系统采用的是支付宝平台。用户要支付订单时,系统会提交含金额等订单信息、支付结果接收地址、签名等参数的请求到支付宝网关,支付宝网关处理请求后,将结果返回给请求参数中指定的接收地址,然后系统再处理支付结果,做设置订单状态输出提示信息等工作。方式和其它在线支付平台差不多。

      开始怎么也没想到是支付宝那边的问题,白忙活了一天,才联系了支付宝客服,马上搞清了真相。本来支付成功后,支付宝会将消息发送到我们网站指定的地址上,我按照他们的接口说明文档,先验证签名再向支付宝网关验证消息ID有效性,再做处理。但大概从12月9号凌晨,支付宝做了次更新,支付消息中签名参数本来是在QueryString中,现在却改成以Post方式在Form中发送。我写的代码在Request.QueryString集合中没有找到sign参数,认为这是个非法请求,直接转到错误页面,自然也不会处理订单了。

      问题是找到了,且不管支付宝做这个改动有无道理,也不论是不是以后该用Request代替Request.QueryString或Request.Form。还是有一些值得总结的经验的。

      一、不能绝对相信任何公司、任何客服、任何文档。

      二、为项目创建完善的日志模块,关键的网站请求的参数、数据库操作的Sql语句,为记日志损失一点性能是值得的。

      三、系统必须可以随时迅速构建集成,保证测试性。第三点最让自己不爽。

      总之,固然系统问题冰冻三尺、支付宝偶然忽悠了一下、主管项目的不管项目集成,由于自己经验也有限,黑锅不你一个人背还谁背。呵呵,百十块的绩效没了就没了,引以为训吧。

      (PS: 已所不欲,勿施于人。要记得自己若开发或维护接口的话,可千万不能给别人制造这种麻烦)

  • 相关阅读:
    C#函数式编程
    三种观察者模式的C#实现
    使用C#设计Fluent Interface
    02.Python网络爬虫第二弹《http和https协议》
    03.Python网络爬虫第一弹《Python网络爬虫相关基础概念》
    第七章:Python基础のXML操作和面向对象(一)
    第五章:Python基础の生成器、迭代器、序列化和虚拟环境的应用
    第六章:Python基础の反射与常用模块解密
    第四章:Python基础の快速认识內置函数和操作实战
    第三章:Python基础の函数和文件操作实战
  • 原文地址:https://www.cnblogs.com/XmNotes/p/1651816.html
Copyright © 2011-2022 走看看