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

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

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

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

谈谈transactionId和out_trade_no

前一篇微信JSApi支付~坑和如何填坑文章反映不错,所以又写了个后篇,呵呵。

每个第三方在线支付系统中都会有至少两类订单号,其一为支付系统的订单号,我们称为transactionId,其二为商户平台的订单号,我们通常称为out_trade_no,这两个号一般用来对账,在第三方支付平台你可以通过这两个订单号来查询订单的状态,而在商户自己的网站后台,也可以查询它的状态,一般地,transactionId由支付系统生成,并在回调时转回给商户;而out_trade_no一般在商户平台生成,自己可以设计自己的规则,然后把这个ID转到第三方支付平台,在支付成功后,第三方同样把这个号转回来,我们通过这个号进行商户系统的其它操作。

看一下第三方支付的流程图

订单号查询,京东订单号查询,淘宝订单号查询,订单号,京东物流订单号查询,订单号查询快递,携程订单号查询,火车票订单号查询,剑三充值订单号查

对第三方支付的封装

封装要求通用,对任何一个项目都可以灵活的使用它,这是最重要的,要想实现松耦合,需要记住委托的概念,我们在订单回调时,定义一个订单所要数据的实体,然后以这个实体做为参数,定义一个委托,当然你完全可以使用.net为我们提供的Action,Func等通用的委托对象,这在大叔框架里通常被看到,也是大叔的常客!

下面是微信支付的封装,可以看到业务代码只写自己业务,而不处理任务微信API相关的东西

        ////// 返回链接串
        //////publicstring Get()
        {
            int money = 10;
            string orderID = "Lind0001";
            Logger.LoggerFactory.Instance.Logger_Info("发送订单号" + orderID);

            return JsApiImplement.Send(money, orderID);
        }

        //微信回调publicvoid Notify()
        {
            JsApiImplement.Notify((model) =>            {
                Logger.LoggerFactory.Instance.Logger_Info("回调订单号" + model.Out_Trade_No);

                //更新领域订单状态,用户账户数据,流水等            });
        }

微信回调实体是大叔自己定义的,应该可以满足大部分业务的需要了,主要用于回调业务层的方法

////// 微信回调数据模型
    ///publicclass NotifyModel
    {
        ////// 当次交易存储到微信平台的订单号
        ///publicstring Transaction_Id { get; set; }
        ////// 系统本身生成的订单号
        ///publicstring Out_Trade_No { get; set; }
        ////// 对应当前公众号的用户OpenId
        ///publicstring OpenId { get; set; }
        ////// 微信用户唯一标识
        ///publicstring UniqueId { get; set; }
    }

而对于方法回调JsApiImplement.Notify方法,我们在底层进行了封装,对外公开一个委托,这个委托实现了方法的回调,当执行到微信核心业务时,回调业务层的方法即可。

相关图片

相关文章