zoukankan      html  css  js  c++  java
  • 微信支付调试

      1. 首先使用官方demo跑通。

      2. 理解微信支付的流程:

        首先后台服务端,先预下单,从微信获取preOrder订单号。然后后台使用雨订单号等六个字段重新签名返回给app端

      3.app端所做的工作很少,只是获取服务端返回的参数即可。


    现象:跳转支付页面只有一个确认的按钮

    原因: 1. appid没有配置对。

        2. 后台的参数返回不正确。(注意后台返回的签名自的字段是有严格要求,特别是给app端使用的,不能多,不能少,字段必须排好序,最终生成的签名字符串必须是大写)


    后台调试的时候,为了方便,使用了Golang的反射机制,遍历字段,但是需要区分传入的参数是指针还是stucture, 如果是指针的话,获取的key, value都是错的

    当前面的CanSet是一个指针的时候(p)它是不可寻址的,但是当是p.Elem()(实际上就是*p),它就是可以寻址的

    http://www.cnblogs.com/yjf512/archive/2012/06/10/2544391.html


    ps : golang 的支付宝,微信支付都可以搜索得到,好无力啊。

    http://blog.csdn.net/xyzhaopeng/article/details/50386349

    http://blog.csdn.net/xyzhaopeng/article/details/50374191

    支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。 对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。 (通知频率为15/15/30/180/1800/1800/1800/1800/3600,单位:秒) 注意:同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。 推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。 特别提醒:商户系统对于支付结果通知的内容一定要做签名验证,防止数据泄漏导致出现“假通知”,造成资金损失。


    注意 一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。代码示例如下:

  • 相关阅读:
    swagger生成接口文档
    二分查找通用模板
    go-json技巧
    【Go】获取用户真实的ip地址
    数据库储存时间类型
    密码加密:md5/sha1 +盐值
    参数里时间格式的转换
    不好定位的元素定位
    vim编辑器
    ps -ef | grep php kill -9
  • 原文地址:https://www.cnblogs.com/studyNT/p/5456993.html
Copyright © 2011-2022 走看看