ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 软件工程 >> 微信JSApi支付~订单号和微信交易号

微信JSApi支付~订单号和微信交易号(2/2)

来源:网络整理     时间:2016-04-08     关键词:sap,订单号

本篇文章主要介绍了"微信JSApi支付~订单号和微信交易号",主要涉及到sap,订单号方面的内容,对于软件工程感兴趣的同学可以参考一下: 谈谈transactionId和out_trade_no前一篇微信JSApi支付~坑和如何填坑文章反映不错,所以又写了个后篇,呵呵。每个第三方在线支付系统中都会...

////// JsApi微信回调
        ///publicstaticvoid Notify(Action action)
        {
            var context = System.Web.HttpContext.Current;
            ResultNotify resultNotify = new ResultNotify(context);
            resultNotify.ProcessNotify(action);
        }

其实,我在看微信API时,也发现了不少问题,感觉他们的.net开发人员功力不够,或者说代码不是很严谨,但一些公用基类,应该声明为abstract,一般必须要子类实现的方法,应该声明为abstract,但它们都没有这样做,感觉很奇怪,哈哈,下面是我对微信Notify

类的修改,加了一些应该加的,去了一些应该去的,感觉舒服多了!

////// 回调处理基类
    /// 主要负责接收微信支付后台发送过来的数据,对数据进行签名验证
    /// 子类在此类基础上进行派生并重写自己的回调处理过程
    ///publicabstractclass Notify
    {
        public HttpContext page { get; set; }
        public Notify(HttpContext page)
        {
            this.page = page;
        }

        ////// 接收从微信支付后台发送过来的数据并验证签名
        //////微信支付后台返回的数据public WxPayData GetNotifyData()
        {
            //接收从微信后台POST过来的数据            System.IO.Stream s = page.Request.InputStream;
            int count = 0;
            byte[] buffer = newbyte[1024];
            StringBuilder builder = new StringBuilder();
            while ((count = s.Read(buffer, 0, 1024)) > 0)
            {
                builder.Append(Encoding.UTF8.GetString(buffer, 0, count));
            }
            s.Flush();
            s.Close();
            s.Dispose();

            Log.Info(this.GetType().ToString(), "Receive data from WeChat : " + builder.ToString());

            //转换数据格式并验证签名            WxPayData data = new WxPayData();
            try            {
                data.FromXml(builder.ToString());
            }
            catch (WxPayException ex)
            {
                //若签名错误,则立即返回结果给微信支付后台                WxPayData res = new WxPayData();
                res.SetValue("return_code", "FAIL");
                res.SetValue("return_msg", ex.Message);
                Log.Error(this.GetType().ToString(), "Sign check error : " + res.ToXml());
                page.Response.Write(res.ToXml());
                page.Response.End();
            }

            Log.Info(this.GetType().ToString(), "Check sign success");
            return data;
        }

        //派生类自已必须重写这个方法publicabstractvoid ProcessNotify(Action action);

    }

对于第三方支付就说到这样,希望大家自己也对一些东西进行封装,方便其它项目中直接使用它们!

微信JSApi支付~坑和如何填坑

以上就介绍了微信JSApi支付~订单号和微信交易号,包括了sap,订单号方面的内容,希望对软件工程有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_603192_2.html

相关图片

相关文章