微信掃(sao)碼支付(fu)~官方(fang)DEMO的坑(keng)~參數不能自定義
由(you)于微信在校驗參(can)(can)數(shu)時采用(yong)了“微信服務端”校驗,它(ta)(ta)的參(can)(can)數(shu)是(shi)前期定(ding)義(yi)好的,所以用(yong)戶不能自(zi)己添加自(zi)定(ding)義(yi)的參(can)(can)數(shu),你可(ke)以把參(can)(can)數(shu)寫在Attach字(zi)段時,作為(wei)它(ta)(ta)的附加參(can)(can)數(shu)。
參(can)數和返(fan)回(hui)值定(ding)義如下:
public class NotifyResult : ResultBase { public NotifyResult(ResultBuilder resultBuilder) : base(resultBuilder) { } /// <summary> /// 設備號 /// </summary> public string Device_Info { get { return GetValue("device_info"); } } /// <summary> /// 用(yong)戶標識 /// </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> /// 總(zong)金額 /// </summary> public int Total_Fee { get { return GetIntValue("total_fee"); } } /// <summary> /// 現金券金額 /// </summary> public int Coupon_Fee { get { return GetIntValue("coupon_fee"); } } /// <summary> /// 貨幣種類 貨幣類型(xing),符合 ISO 4217標準的三位字母代(dai)碼,默認人(ren)民幣:CNY /// </summary> public string Fee_Type { get { return GetValue("fee_type"); } } /// <summary> /// 微信支(zhi)付訂單號 /// </summary> public string Transaction_Id { get { return GetValue("transaction_id"); } } /// <summary> /// 商(shang)戶訂單號 /// </summary> public string Out_Trade_No { get { return GetValue("out_trade_no"); } } /// <summary> /// 商家(jia)數據包 /// </summary> public string Attach { get { return GetValue("attach"); } } /// <summary> /// 支付完成(cheng)時間 /// </summary> public string Time_End { get { return GetValue("time_end"); } } /// <summary> /// 產品ID /// </summary> public string Product_Id { get { return GetValue("product_id"); } } }
基本這些已經夠用了,如(ru)果你的業務需要其它信(xin)息(發到微信(xin)再(zai)發回來),直(zhi)接寫到Attach里即(ji)可(ke)。
統一的回(hui)調封裝
下面代(dai)碼是大叔(shu)Lind框架(jia)對微(wei)信模塊(kuai)的封裝(zhuang),體現了(le)自(zi)定義參數的作用
/// <summary> /// 微信回調 /// </summary> public string WeixinNotify() { Lind.DDD.Logger.LoggerFactory.Instance.Logger_Info("微(wei)信(xin)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; }