• 订餐系统之微信支付,踩了官方demo的坑


          最近一个项目要增加微信支付的功能,想来这个东西出来这么久了,按微信提供的应该可以很快搞定的,结果提供的demo( JS API网页支付)中各种坑,咨询他们的客服,态度倒是非常好,就是解决不了问题,最后让我发邮件,一想,这个邮件一来一回至少又得好几个小时,没有办法只能根据开发文档一个一个核对,再加上些猜想,终于完成了。为了别的朋友少踩些坑,特此小文,希望对一此朋友有所帮助。

            

    准备工作

             当然,要集成微信支付,首先还是要先有一个微网站,熟悉的请飘过,不了解的,可以参考下我之前的一篇小文 订餐系统之微信点餐 更多信息可以登录微信公众平台

         目前的情况应该是,只有认证的服务号可以申请微信支付功能。相关认证、申请的操作,登录微信公众平台一看就知道了,在此就不细说了。要特别注意的就是要填写相关请求目录,请求url时,要特别注意,目前微信公众平台是不能自己修改的,只能发邮件给:,让他们修改,邮件格式可以向客服咨询。

        当然,还有一个最重要的准备工作,就是先获取他们的文档和demo.  http://wxpay.weixin.qq.com/doc/index.html 要注意的就是,他们的demo中有很多坑哦。不过,他们的文档我没有看到问题,细读这些文档还是少不了的。

      

    测试相关配置

            如果你的帐号现在处于支付测试状态下,需要进行相关配置。请根据下图操作。

      

                                图(1)

       

                    图(2)

    demo( JS API网页支付)中可能有问题的地方

            下面我就把我在微信提供的demo基础上,说明下要修改的地方。之前一直提示什么订单数据验证失败,当看下图时就知道OK了。

        

       jsapi.aspx.cs  第50行,增加参数: packageReqHandler.setParameter("bank_type", "WX");    //固定为"WX";

            /tenpayLib/TenpayUtil.cs  中的key 其实是 PartnerKey,一开始我还以为是appkey。

            /tenpayLib/RequestHandler.cs 中的 key一定要赋值为  TenpayUtil.key,默认是空的。

            /tenpayLib/ResponseHandler.cs 中的 key 和appkey 一定要赋值为 TenpayUtil.key和TenpayUtil.appkey;

            如果你的项目是utf-8的,还要修改以下内容:

       TenpayUtil.cs.getNoncestr 变成

       public static string getNoncestr()
            {
                Random random = new Random();
                return MD5Util.GetMD5(random.Next(1000).ToString(), charset);
            }

           /tenpayLib/ResponseHandler.cs 中的charset

           所有用到charset的地方修改成utf-8。

    结语

          原本是一个简单的事儿,可由于官方demo的一些问题,用去了我和他们客服的时间,所以希望对在集成或者准备集成的微信支付的朋友有点帮助,做为程序员,我们的时间应该是用在更有意义的地方。为了方便大家,我把自己最后的支付相关代码也做了整理,虽然不能直接用,其实也是稍微修改下里面的逻辑就可以直接用,另外,鄙人能力有限,写得不好,有不对的地方,也请大家海涵哈!

          wxpaydemo.rar

      

         成为一名优秀的程序员!

  • 相关阅读:
    分布式文件系统--FastDFS以及Nginx
    正则
    交互式多媒体图书平台的设计与实现
    安装opencv
    基于VsCode的java语言编程调试环境
    码农的自我修养之必备技能 学习笔记
    工程化编程实战callback接口学习笔记
    'java.lang.String' to required type 'javax.sql.DataSource' for property 'dataSource'
    如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
    深入理解TCP协议及其源代码
  • 原文地址:https://www.cnblogs.com/jijunjian/p/3850999.html
Copyright © 2020-2023  润新知