只有微信支付商户单号查询里的交易单号和商户单号怎么查酒店订单,没有订单号。也

你正在使用的浏览器版本过低,将不能正常浏览和使用知乎。谈谈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);
对于第三方支付就说到这样,希望大家自己也对一些东西进行封装,方便其它项目中直接使用它们!
阅读(...) 评论()查看: 4848|回复: 21
阅读权限10
主题帖子积分
新手上路, 积分 9, 距离下一级还需 41 积分
微信支付成功后,三天了,银行卡里的钱也成功消费了。账户里却没有我的订单记录?求客服帮忙寻找,邮箱里也没有订单单成功的反馈记录。微信交易记录订单号:,谢谢!
/topic-contact.html
联系客服吧
阅读权限70
激情108602 点
金币5220 枚
在线670 天
主题帖子积分
联系客服吧
阅读权限70
激情165114 点
金币1400 枚
在线1479 天
主题帖子积分
可能是系统问题。发邮件问一下客服&&
[]: 幸福很簡單 偶遇帅哥,激情澎湃,增长了 1 点 激情.
阅读权限100
激情341839 点
金币14377 枚
在线1528 天
主题帖子积分
平平安安才是福。NUQ958,10美元送给你 
一直没使用微信支付
阅读权限100
激情108135 点
金币10092 枚
在线806 天
主题帖子积分
广告和个人联系方式——禁你没商量!
可能系统比较慢吧,等等再看看
阅读权限100
激情273320 点
金币10080 枚
在线1160 天
主题帖子积分
行到水穷处,坐看云起时。
发邮件给客服协助。中文客服: (中文交流)
阅读权限10
主题帖子积分
新手上路, 积分 9, 距离下一级还需 41 积分
/topic-contact.html
联系客服吧
阅读权限10
主题帖子积分
新手上路, 积分 9, 距离下一级还需 41 积分
阅读权限70
激情108602 点
金币5220 枚
在线670 天
主题帖子积分
不客气啊,祝顺利解决& && && && && && && && && && && && &
[]: 一个袋子砸在了 haoyuwong 头上,haoyuwong 赚了 1 枚 金币.
阅读权限70
激情77022 点
金币3576 枚
在线599 天
主题帖子积分
不管用社么支付,订单记录总会有的吧
您也可以通过微信订阅精彩的更新,不错过任何一个好活动
我们还会通过微信不定期送福利哦~微信支付-JSAPI支付V3-查询订单
时间: 16:16:35
&&&& 阅读:2331
&&&& 评论:
&&&& 收藏:0
标签:接口链接
https://api.mch./pay/orderquery
请求参数:
公众账号ID
String(32)
微信分配的公众账号ID
String(32)
微信支付分配的商户号
微信订单号
transaction_id
String(32)
微信的订单号,优先使用
商户订单号
out_trade_no
String(32)
商户系统内部的订单号,当没提供transaction_id时需要传这个。
随机字符串
String(32)
C380BEC2BFD727A4BF3AD6
随机字符串,不长于32位。推荐
String(32)
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
返回状态码
return_code
String(16)
SUCCESS/FAIL
此字段是通信标识,非交易标识,交易是否成功需要查看trade_state来判断
return_msg
String(128)
返回信息,如非空,为错误原因
参数格式校验错误
以下字段在return_code为SUCCESS的时候有返回
公众账号ID
String(32)
微信分配的公众账号ID
String(32)
微信支付分配的商户号
随机字符串
String(32)
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
随机字符串,不长于32位。推荐
String(32)
C380BEC2BFD727A4BF3AD6
签名,详见
result_code
String(16)
SUCCESS/FAIL
String(32)
SYSTEMERROR
详细参见第6节错误列表
错误代码描述
err_code_des
String(128)
结果信息描述
以下字段在return_code&和result_code都为SUCCESS的时候有返回
device_info
String(32)
微信支付分配的终端设备号,
String(128)
wxd930ea5d5a258f4f
用户在商户appid下的唯一标识
是否关注公众账号
is_subscribe
用户是否关注公众账号,Y-关注,N-未关注,仅在公众账号类型支付有效
trade_type
String(16)
调用接口提交的交易类型,取值如下:JSAPI,NATIVE,APP,MICROPAY,详细说明见
trade_state
String(32)
SUCCESS&支付成功
REFUND&转入退款
NOTPAY&未支付
CLOSED&已关闭
REVOKED&已撤销
USERPAYING--用户支付中
PAYERROR--支付失败(其他原因,如银行返回失败)
String(16)
银行类型,采用字符串类型的银行标识
订单总金额,单位为分
货币类型,符合ISO&4217标准的三位字母代码,默认人民币:CNY,其他值列表详见
现金支付金额
现金支付金额订单现金支付金额,详见
现金支付货币类型
cash_fee_type
String(16)
货币类型,符合ISO&4217标准的三位字母代码,默认人民币:CNY,其他值列表详见
代金券或立减优惠金额
coupon_fee
&代金券或立减优惠&金额&=订单总金额,订单总金额-&代金券或立减优惠&金额=现金支付金额,详见
代金券或立减优惠使用数量
coupon_count
代金券或立减优惠使用数量
代金券或立减优惠批次ID
coupon_batch_id_$n
String(20)
代金券或立减优惠批次ID&,$n为下标,从1开始编号
代金券或立减优惠ID
coupon_id_$n
String(20)
代金券或立减优惠ID,&$n为下标,从1开始编号
单个代金券或立减优惠支付金额
coupon_fee_$n
单个代金券或立减优惠支付金额,&$n为下标,从1开始编号
微信支付订单号
transaction_id
String(32)
微信支付订单号
商户订单号
out_trade_no
String(32)
商户系统的订单号,与请求一致。
商家数据包
String(128)
商家数据包,原样返回
支付完成时间
String(14)
订单支付时间,格式为yyyyMMddHHmmss,如日9点10分10秒表示为10。其他详见
交易状态描述
trade_state_desc
String(256)
支付失败,请重新下单支付
对当前查询订单状态的描述和下一步操作的指引
后台代码:
/// &summary&
/// 订单查询
/// &/summary&
/// &returns&&/returns&
public JsonResult OrderQuery(WXM_TRADE_Model trade)
string nonceStr = Senparc.Weixin.MP.TenPayLibV3.TenPayV3Util.GetNoncestr();
Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null);
//设置package订单参数
packageReqHandler.SetParameter("appid", AppId);
//公众账号ID
packageReqHandler.SetParameter("mch_id", MchId);
//packageReqHandler.SetParameter("transaction_id", "");
//填入微信订单号
packageReqHandler.SetParameter("out_trade_no", trade.TRADE_NO);
//填入商家订单号
packageReqHandler.SetParameter("nonce_str", nonceStr);
//随机字符串
string querysign = packageReqHandler.CreateMd5Sign("key", Key);
packageReqHandler.SetParameter("sign", querysign);
string data = packageReqHandler.ParseXML();
var result = Senparc.Weixin.MP.AdvancedAPIs.TenPayV3.OrderQuery(data);
var res =System.Xml.Linq.XDocument.Parse(result);
string return_code = res.Element("xml").Element("return_code").V
string trade_state = res.Element("xml").Element("trade_state").V//SUCCESS-支付成功,REFUND-转入退款,NOTPAY-未支付,CLOSED-已关闭,REVOKED-已撤销,USERPAYING-用户支付中,PAYERROR-支付失败
Hashtable hashtable = new Hashtable();
hashtable.Add("trade_state", trade_state);
return Json(hashtable);
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!}

我要回帖

更多关于 微信支付商户退款单号 的文章

更多推荐

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

点击添加站长微信