微信扫码支付~官方DEMO的坑~参数不能自定义
由于微信在校验参数时采用了“微信服务端”校验,它的参数是前期定义好的,所以用户不能自己添加自定义的参数,你可以把参数写在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的坑~参数不能自定义的更多相关文章
- 微信扫码支付.net版本
微信扫码支付有两个坑 1.模式一已经过时,不能使用了 2.HttpService类的POST 和 GET方法内的 //设置代理WebProxy proxy = new WebProxy();proxy ...
- C#微信扫码支付Demo
1.打开微信支付开发平台: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1 2.下载SDK Demo: C#版下载
- C# 微信扫码支付 回调页面
.NET版 微信扫码支付,官方推荐使用[模式二] 一.微信扫码支付模式一: 1.回调页面:官方demo中example文件下的NativeNotifyPage.aspx 2.微信回调地址:http:/ ...
- 微信公众号支付|微信H5支付|微信扫码支付|小程序支付|APP微信支付解决方案总结
最近负责的一些项目开发,都用到了微信支付(微信公众号支付.微信H5支付.微信扫码支付.APP微信支付).在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存. 先说注意 ...
- MVC 微信扫码支付
微信扫码支付有两种模式, 模式一和模式二, 两者具体的区别可参考官网文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_4 微 ...
- Net MVC微信扫码支付
微信扫码支付+Asp.Net MVC 这里的扫码支付指的是PC网站上面使用微信支付,也就是官方的模式二,网站是Asp.net MVC,整理如下. 一.准备工作 使用的微信API中的统一下单方法,关键的 ...
- PHP PC端微信扫码支付【模式二】详细教程-附带源码(转)
博主写这破玩意儿的时候花了大概快两天时间才整体的弄懂逻辑,考虑了一下~还是把所有代码都放出来给大家~抱着开源大无私的精神!谁叫我擅长拍黄片呢?同时也感谢我刚入行时候那些无私帮过我的程序员们! 首先还是 ...
- 微信支付-微信公众号支付,微信H5支付,微信APP支付,微信扫码支付
在支付前,如果使用第三方MVC框架,则使用重写模式,服务器也需要配置该项 if (!-e $request_filename){ rewrite ^/(.*)$ /index.php/$ last; ...
- ThinkPHP5微信扫码支付
1.把微信官网下载的demo放在根目录/vendor/目录下,这里我的是/vendor/wxpay_pc目录 2.把cert里面的文件替换成自己项目的证书(登陆微信商户平台,账户中心,API安全下载) ...
随机推荐
- 探索c#之尾递归编译器优化
阅读目录: 递归运用 尾递归优化 编译器优化 递归运用 一个函数直接或间接的调用自身,这个函数即可叫做递归函数. 递归主要功能是把问题转换成较小规模的子问题,以子问题的解去逐渐逼近最终结果. 递归最重 ...
- AMD and CMD are dead之js模块化黑魔法
var define, require, define2, require2; typeof JSON != "object" && (JSON = {}), fu ...
- String驻留带来的危害
原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com 前段时间接手了一个项目优化工作,在同等场景下内存使用从4G降低到200M. 项目是将实体序列化成字符串存入 ...
- K-均值聚类算法
K-均值聚类算法 聚类是一种无监督的学习算法,它将相似的数据归纳到同一簇中.K-均值是因为它可以按照k个不同的簇来分类,并且不同的簇中心采用簇中所含的均值计算而成. K-均值算法 算法思想 K-均值是 ...
- 分辨率、DPI、PPI和屏幕尺寸,你都知道是啥么?
分辨率.DPI.PPI和屏幕尺寸 分辨率 DPI/PPI 坑爹的屏幕尺寸 Reference 手机开发中不免会遇到分辨率.DPI.PPI和屏幕尺寸等术语,那就弄弄清楚这些概念的真正含义. 分辨率 分辨 ...
- WCF:传输EntityFramework 实体类的POCO 代理
WCF传输EntityFramework 实体类的POCO 代理 Windows Communication Foundation (WCF) 不能对代理进行直接序列化或反序列化,因为 DataCon ...
- ES6新特性之 promise
新的ES6中引入了promise的概念,目的是让回调更为优雅.层层嵌套的回调会让javascript失去美感和可读性,同时javascript也推荐采用链式的方式去书写函数调用.于是Promise就应 ...
- Winform 生成不需要安装的exe可执行文件 ILMerge使用
今天应领导要求,把一个程序打包生成一个可以执行的exe文件,不是安装包那种,类似于绿色文件,就是一个exe,可以直接运行.上网查了一下有一个工具可以实现ILMerge. 参照两个文档http://bl ...
- WordPress上传含有中文文件出现乱码
最近打算学习安装配置WordPress,当然同时也在学习PHP+MySQL,希望以后能做一些关于WordPress定制和二次开发,包括主题和插件.在成功安装WordPress3.5中文版之后,就测试了 ...
- iOS开发之SQLite--C语言接口规范(五)——iOS开发使用SQLite实例
本篇博客就使用前面操作SQLite的知识来实现如何去插入,删除和更新数据.然后再把操作SQlite数据库常用的方法进行一个封装.把常用方法进行封装后,把Cars数据库中的其中一个表的数据进行查询,并在 ...