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

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

        

准备工做

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

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

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

  

测试相关配置

        若是你的账号如今处于支付测试状态下,须要进行相关配置。请根据下图操做。app

  

                            图(1)微信公众平台

 

   

                图(2)dom

 

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

  

     成为一名优秀的程序员!

相关文章
相关标签/搜索