返回目录

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

参数和返回值定义如下:

  1. public class NotifyResult : ResultBase
  2. {
  3. public NotifyResult(ResultBuilder resultBuilder)
  4. : base(resultBuilder)
  5. { }
  6. /// <summary>
  7. /// 设备号
  8. /// </summary>
  9. public string Device_Info { get { return GetValue("device_info"); } }
  10. /// <summary>
  11. /// 用户标识
  12. /// </summary>
  13. public string OpenId { get { return GetValue("openid"); } }
  14. /// <summary>
  15. /// 是否关注公众号
  16. /// </summary>
  17. public bool Is_Subscribe { get { return GetBooleanValue("is_subscribe"); } }
  18. /// <summary>
  19. /// 交易类型
  20. /// </summary>
  21. public TradeType Trade_Type { get { return (TradeType)GetEnumValue<TradeType>("trade_type"); } }
  22. /// <summary>
  23. /// 付款银行
  24. /// </summary>
  25. public string Bank_Type { get { return GetValue("bank_type"); } }
  26. /// <summary>
  27. /// 总金额
  28. /// </summary>
  29. public int Total_Fee { get { return GetIntValue("total_fee"); } }
  30. /// <summary>
  31. /// 现金券金额
  32. /// </summary>
  33. public int Coupon_Fee { get { return GetIntValue("coupon_fee"); } }
  34. /// <summary>
  35. /// 货币种类 货币类型,符合 ISO 4217标准的三位字母代码,默认人民币:CNY
  36. /// </summary>
  37. public string Fee_Type { get { return GetValue("fee_type"); } }
  38. /// <summary>
  39. /// 微信支付订单号
  40. /// </summary>
  41. public string Transaction_Id { get { return GetValue("transaction_id"); } }
  42. /// <summary>
  43. /// 商户订单号
  44. /// </summary>
  45. public string Out_Trade_No { get { return GetValue("out_trade_no"); } }
  46. /// <summary>
  47. /// 商家数据包
  48. /// </summary>
  49. public string Attach { get { return GetValue("attach"); } }
  50. /// <summary>
  51. /// 支付完成时间
  52. /// </summary>
  53. public string Time_End { get { return GetValue("time_end"); } }
  54. /// <summary>
  55. /// 产品ID
  56. /// </summary>
  57. public string Product_Id { get { return GetValue("product_id"); } }
  58.  
  59. }

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

统一的回调封装

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

  1.      /// <summary>
  2. /// 微信回调
  3. /// </summary>
  4. public string WeixinNotify()
  5. {
  6. Lind.DDD.Logger.LoggerFactory.Instance.Logger_Info("微信Callback");
  7. WxPaymentConfig wxPaymentConfig = new WxPaymentConfig();
  8. WxPayImpl wxPayImpl = new WxPayImpl(wxPaymentConfig);
  9.  
  10. string Msg = wxPayImpl.RecieveWxPayNotify((notify) =>
  11. {
  12. int projectId;
  13. int.TryParse(notify.Attach, out projectId);
  14. string fullName = Db.Project_Modules.Where(i => i.Id == projectId).FirstOrDefault().FullName;
  15. taskInfoProvider = Lind.DDD.Plugins.PluginManager.Resolve<ITaskInfoProvider>(fullName);
  16.  
  17. taskInfoProvider.Pay_Callback(new PayCallbackParams
  18. {
  19. OrderId = notify.Out_Trade_No,
  20. TradeId = notify.Transaction_Id
  21. });
  22. }, (msg) =>
  23. {
  24. });
  25. return Msg;
  26. }

返回目录

微信扫码支付~官方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. 现在创业做App,先做 Android 还是 iOS?

    随着互联网+的高速发展,现在创业大部分都是在布局移动端,初期往往摆在面前最大的难题是,如何分配有限的成本,在最快的速度内占领市场?这个大难题会影响创始人在团队和产品建设方方面面的决定.缩小至移动App ...

  2. MySQL mysqlslap压测

    200 ? "200px" : this.width)!important;} --> 介绍 mysqlslap是mysql自带的一个性能压测工具:mysqlslap用于和其 ...

  3. 容易被忽略CSS特性

    CSS初学感觉很简单,但随着学习的深入才感觉CSS的水由多深,平常总会遇到各种坑,先总结一些经常遇到的坑 大小写不敏感 虽然我们平时在写CSS的时候都是用小写,但其实CSS并不是大小写敏感的 .tes ...

  4. [ASP.NET MVC 小牛之路]11 - Filter

    Filter(筛选器)是基于AOP(面向方面编程)的设计,它的作用是对MVC框架处理客户端请求注入额外的逻辑,以非常简单优美的方式实现横切关注点(Cross-cutting Concerns).横切关 ...

  5. WCF Security基本概念(转载)

    WCF Security 主要包括 "Transfer Security"."Access Control"."Auditing" 几个部分 ...

  6. JS 实现"可读"字符串转换成"二进制的01"字符串

    问题起源 看过一个漫画, 两位程序员在办公司交流, 可是说的语言却是010101类似的字符串.周围人很是惊异.计算机的世界,确实是由01组成的.今天突然想实现这个编码转换. 解决思路 学过C语言的都知 ...

  7. Leetcode-83 Remove Duplicates from Sorted List

    #83. Remove Duplicates from Sorted List Given a sorted linked list, delete all duplicates such that ...

  8. QUOTED_IDENTIFIER 选项对 index 的影响

    在修改或创建Index时,有时会收到一些Error Message,指明Set options设置错误,最常见的选项是:SET QUOTED_IDENTIFIER 选项 当创建或修改的index包含c ...

  9. MVC:The name 'Scripts' does not exist in the current context

    汇总:http://www.cnblogs.com/dunitian/p/4523006.html#efmvc 解决:在View下面的Web.Config的namespaces添加 <add n ...

  10. Python第一天 - set

    (一)初识set dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的.有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,目的就 ...