返回目录

由于微信在校验参数时采用了“微信服务端”校验,它的参数是前期定义好的,所以用户不能自己添加自定义的参数,你可以把参数写在Attach字段时,作为它的附加参数。

参数和返回值定义如下:

    public class NotifyResult : ResultBase
{
public NotifyResult(ResultBuilder resultBuilder)
: base(resultBuilder)
{ }
/// <summary>
/// 设备号
/// </summary>
public string Device_Info { get { return GetValue("device_info"); } }
/// <summary>
/// 用户标识
/// </summary>
public string OpenId { get { return GetValue("openid"); } }
/// <summary>
/// 是否关注公众号
/// </summary>
public bool Is_Subscribe { get { return GetBooleanValue("is_subscribe"); } }
/// <summary>
/// 交易类型
/// </summary>
public TradeType Trade_Type { get { return (TradeType)GetEnumValue<TradeType>("trade_type"); } }
/// <summary>
/// 付款银行
/// </summary>
public string Bank_Type { get { return GetValue("bank_type"); } }
/// <summary>
/// 总金额
/// </summary>
public int Total_Fee { get { return GetIntValue("total_fee"); } }
/// <summary>
/// 现金券金额
/// </summary>
public int Coupon_Fee { get { return GetIntValue("coupon_fee"); } }
/// <summary>
/// 货币种类 货币类型,符合 ISO 4217标准的三位字母代码,默认人民币:CNY
/// </summary>
public string Fee_Type { get { return GetValue("fee_type"); } }
/// <summary>
/// 微信支付订单号
/// </summary>
public string Transaction_Id { get { return GetValue("transaction_id"); } }
/// <summary>
/// 商户订单号
/// </summary>
public string Out_Trade_No { get { return GetValue("out_trade_no"); } }
/// <summary>
/// 商家数据包
/// </summary>
public string Attach { get { return GetValue("attach"); } }
/// <summary>
/// 支付完成时间
/// </summary>
public string Time_End { get { return GetValue("time_end"); } }
/// <summary>
/// 产品ID
/// </summary>
public string Product_Id { get { return GetValue("product_id"); } } }

基本这些已经够用了,如果你的业务需要其它信息(发到微信再发回来),直接写到Attach里即可。

统一的回调封装

下面代码是大叔Lind框架对微信模块的封装,体现了自定义参数的作用

     /// <summary>
/// 微信回调
/// </summary>
public string WeixinNotify()
{
Lind.DDD.Logger.LoggerFactory.Instance.Logger_Info("微信Callback");
WxPaymentConfig wxPaymentConfig = new WxPaymentConfig();
WxPayImpl wxPayImpl = new WxPayImpl(wxPaymentConfig); string Msg = wxPayImpl.RecieveWxPayNotify((notify) =>
{
int projectId;
int.TryParse(notify.Attach, out projectId);
string fullName = Db.Project_Modules.Where(i => i.Id == projectId).FirstOrDefault().FullName;
taskInfoProvider = Lind.DDD.Plugins.PluginManager.Resolve<ITaskInfoProvider>(fullName); taskInfoProvider.Pay_Callback(new PayCallbackParams
{
OrderId = notify.Out_Trade_No,
TradeId = notify.Transaction_Id
});
}, (msg) =>
{
});
return Msg;
}

返回目录

微信扫码支付~官方DEMO的坑~参数不能自定义的更多相关文章

  1. 微信扫码支付.net版本

    微信扫码支付有两个坑 1.模式一已经过时,不能使用了 2.HttpService类的POST 和 GET方法内的 //设置代理WebProxy proxy = new WebProxy();proxy ...

  2. C#微信扫码支付Demo

    1.打开微信支付开发平台: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1 2.下载SDK Demo: C#版下载

  3. C# 微信扫码支付 回调页面

    .NET版 微信扫码支付,官方推荐使用[模式二] 一.微信扫码支付模式一: 1.回调页面:官方demo中example文件下的NativeNotifyPage.aspx 2.微信回调地址:http:/ ...

  4. 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结

    最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付.APP微信支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存. 先说注意 ...

  5. MVC 微信扫码支付

    微信扫码支付有两种模式, 模式一和模式二, 两者具体的区别可参考官网文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4 微 ...

  6. Net MVC微信扫码支付

    微信扫码支付+Asp.Net MVC 这里的扫码支付指的是PC网站上面使用微信支付,也就是官方的模式二,网站是Asp.net MVC,整理如下. 一.准备工作 使用的微信API中的统一下单方法,关键的 ...

  7. PHP PC端微信扫码支付【模式二】详细教程-附带源码(转)

    博主写这破玩意儿的时候花了大概快两天时间才整体的弄懂逻辑,考虑了一下~还是把所有代码都放出来给大家~抱着开源大无私的精神!谁叫我擅长拍黄片呢?同时也感谢我刚入行时候那些无私帮过我的程序员们! 首先还是 ...

  8. 微信支付-微信公众号支付,微信H5支付,微信APP支付,微信扫码支付

    在支付前,如果使用第三方MVC框架,则使用重写模式,服务器也需要配置该项 if (!-e $request_filename){ rewrite ^/(.*)$ /index.php/$ last; ...

  9. ThinkPHP5微信扫码支付

    1.把微信官网下载的demo放在根目录/vendor/目录下,这里我的是/vendor/wxpay_pc目录 2.把cert里面的文件替换成自己项目的证书(登陆微信商户平台,账户中心,API安全下载) ...

随机推荐

  1. ASP.NET MVC 5 - 创建连接字符串(Connection String)并使用SQL Server LocalDB

    您创建的MovieDBContext类负责处理连接到数据库,并将Movie对象映射到数据库记录的任务中.你可能会问一个问题,如何指定它将连接到数据库? 实际上,确实没有指定要使用的数据库,Entity ...

  2. java.lang.IndexOutOfBoundsException at java.io.FileOutputStream.writeBytes(Native Method)

    ss available : /usr/linkapp/data/linkapp/ddn_1440639847758_temp java.lang.IndexOutOfBoundsException ...

  3. SQLServer比较两条数据是否相同

    SQLServer比较两条数据是否相同 直接比较可能会一个一个字段的比较,也可以将多个字段拼成一个串然后比较,这里有个hash值比较的方法,很好用 用法 将需要的比较的column放进去,逗号隔开,只 ...

  4. SSIS Design6:利用数据流

    数据流利用内存来缓冲数据,并在内存中处理数据转换,由于内存的访问速度是非常快的,所以SSIS数据流转换性能是非常高效的.SSIS Engine将数据分批加载到内存中,当Data Flow将一批新的数据 ...

  5. 【Win10 应用开发】语音命令与App Service集成

    昨天,老周演示了语音命令集成这一高大上功能,今天咱们来点更高级的语音命令. 在昨天的例子中,响应语音命令是需要启动应用程序的,那么如果可以不启动应用程序,就直接在小娜面板上进行交互,是不是会更高大小呢 ...

  6. UDP(强行关闭了一个现有的连接远程主机)

    事件回顾:客户端连接服务器 ,一段时间后会发生服务器“挂掉”的情况,为了找到原因,在调试模式下运行服务器,捕捉到了一下异常: 红色框出来的即为异常原因:强行关闭了一个现有的连接远程主机 然后就发生了可 ...

  7. jquery $.each的用法

    通过它,你可以遍历对象.数组的属性值并进行处理. 使用说明 each函数根据参数的类型实现的效果不完全一致: 1.遍历对象(有附加参数) $.each(Object, function(p1, p2) ...

  8. 亚马逊云架设WordPress博客

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 这篇文章介绍如何在亚马逊云架设WordPress博客.最强的云,加上最流行的建站工 ...

  9. jQuery UI Datepicker使用介绍

    本博客使用Markdown编辑器编写 在企业级web开发过程中,日历控件和图表控件是使用最多的2中第三方组件.jQuery UI带的Datepicker,日历控件能满足大多数场景开发需要.本文就主要讨 ...

  10. 关于SubSonic3.0未处理InvalidOperationException异常(关键字TOP附近有语法错误)的处理

    早上在测试程序时,使用了Top这个属性,没想到马上抛出了个“未处理InvalidOperationException异常(关键字'TOP'附近有语法错误)”这个错误提示,见下图: 然后Debug一下, ...