微信交易单号查询系统明细

谈谈transactionId和out_trade_no
前一篇文章反映不错,所以又写了个后篇,呵呵。
每个第三方在线支付系统中都会有至少两类订单号,其一为支付系统的订单号,我们称为transactionId,其二为商户平台的订单号,我们通常称为out_trade_no,这两个号一般用来对账,在第三方支付平台你可以通过这两个订单号来查询订单的状态,而在商户自己的网站后台,也可以查询它的状态,一般地,transactionId由支付系统生成,并在回调时转回给商户;而out_trade_no一般在商户平台生成,自己可以设计自己的规则,然后把这个ID转到第三方支付平台,在支付成功后,第三方同样把这个号转回来,我们通过这个号进行商户系统的其它操作。
看一下第三方支付的流程图
对第三方支付的封装
封装要求通用,对任何一个项目都可以灵活的使用它,这是最重要的,要想实现松耦合,需要记住委托的概念,我们在订单回调时,定义一个订单所要数据的实体,然后以这个实体做为参数,定义一个委托,当然你完全可以使用.net为我们提供的Action,Func等通用的委托对象,这在大叔框架里通常被看到,也是大叔的常客!
下面是微信支付的封装,可以看到业务代码只写自己业务,而不处理任务微信API相关的东西
/// &summary&
/// 返回链接串
/// &/summary&
/// &returns&&/returns&
public string Get()
int money = 10;
string orderID = "Lind0001";
Logger.LoggerFactory.Instance.Logger_Info("发送订单号" + orderID);
return JsApiImplement.Send(money, orderID);
//微信回调
public void Notify()
JsApiImplement.Notify((model) =&
Logger.LoggerFactory.Instance.Logger_Info("回调订单号" + model.Out_Trade_No);
//更新领域订单状态,用户账户数据,流水等
微信回调实体是大叔自己定义的,应该可以满足大部分业务的需要了,主要用于回调业务层的方法
/// &summary&
/// 微信回调数据模型
/// &/summary&
public class NotifyModel
/// &summary&
/// 当次交易存储到微信平台的订单号
/// &/summary&
public string Transaction_Id { get; set; }
/// &summary&
/// 系统本身生成的订单号
/// &/summary&
public string Out_Trade_No { get; set; }
/// &summary&
/// 对应当前公众号的用户OpenId
/// &/summary&
public string OpenId { get; set; }
/// &summary&
/// 微信用户唯一标识
/// &/summary&
public string UniqueId { get; set; }
而对于方法回调JsApiImplement.Notify方法,我们在底层进行了封装,对外公开一个委托,这个委托实现了方法的回调,当执行到微信核心业务时,回调业务层的方法即可。
/// &summary&
/// JsApi微信回调
/// &/summary&
public static void Notify(Action&NotifyModel& action)
var context = System.Web.HttpContext.C
ResultNotify resultNotify = new ResultNotify(context);
resultNotify.ProcessNotify(action);
其实,我在看微信API时,也发现了不少问题,感觉他们的.net开发人员功力不够,或者说代码不是很严谨,但一些公用基类,应该声明为abstract,一般必须要子类实现的方法,应该声明为abstract,但它们都没有这样做,感觉很奇怪,哈哈,下面是我对微信Notify
类的修改,加了一些应该加的,去了一些应该去的,感觉舒服多了!
/// &summary&
/// 回调处理基类
/// 主要负责接收微信支付后台发送过来的数据,对数据进行签名验证
/// 子类在此类基础上进行派生并重写自己的回调处理过程
/// &/summary&
public abstract class Notify
public HttpContext page { get; set; }
public Notify(HttpContext page)
this.page =
/// &summary&
/// 接收从微信支付后台发送过来的数据并验证签名
/// &/summary&
/// &returns&微信支付后台返回的数据&/returns&
public WxPayData GetNotifyData()
//接收从微信后台POST过来的数据
System.IO.Stream s = page.Request.InputS
int count = 0;
byte[] buffer = new byte[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();
(this.GetType().ToString(), "Receive data from WeChat : " + builder.ToString());
//转换数据格式并验证签名
WxPayData data = new WxPayData();
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();
(this.GetType().ToString(), "Check sign success");
//派生类自已必须重写这个方法
public abstract void ProcessNotify(Action&NotifyModel& action);
对于第三方支付就说到这样,希望大家自己也对一些东西进行封装,方便其它项目中直接使用它们!
阅读(...) 评论()微信支付交易 单号查询_未来软件园
手机版,更便捷!
当前位置: >
> 微信支付交易 单号查询
微信支付交易 单号查询
因为微商的兴起很多人都开始用微信来支付了,怎么查看微信交易单号呢?1.打开微信,点击底部的【我】2.选择【】3.点击右上角的【菜单】标志4.选择【交易记录】5.选择某个交易记录进入6.即可查到交易单号
感谢您的支持,我会继续努力的!
扫码打赏,建议金额1-10元微信支付交易单号查询方法_手机软件_
微信支付交易单号查询方法
来源:人气:898
&  1.打开微信,点击底部的【我】
  2.选择【钱包】
  3.点击右上角的【菜单】标志
  4.选择【交易记录】
  5.选择某个交易记录进入
  6.即可查到交易单号
优质网站模板微信支付怎么查询交易记录?微信支付交易单号查询方法
随着的越来越流行,微信支付也越来越受到大家的欢迎,使用的频率也越来越高,对于一些使用微信支付的小伙伴们来说,微信支付的交易单号是一个比较重要的记录,那么在微信支付上怎么查询交易单号呢?如果你不知道的话,不妨来看看。
1.打开微信,点击底部的【我】
2.选择【钱包】
3.点击右上角的【菜单】标志
4.选择【交易记录】
5.选择某个交易记录进入
6.即可查到交易单号
如果您喜欢本文请分享给您的好友,谢谢!
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)}

我要回帖

更多关于 微信交易单号有什么用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信