public IDictionary <string, string> GetParameters() { var parameters = new WeChatPayDictionary { { "device_info", DeviceInfo }, { "body", Body }, { "detail", Detail }, { "attach", Attach }, { "out_trade_no", OutTradeNo }, { "total_fee", TotalFee }, { "fee_type", FeeType }, { "spbill_create_ip", SpBillCreateIp }, { "goods_tag", GoodsTag }, { "limit_pay", LimitPay }, { "time_start", TimeStart }, { "time_expire", TimeExpire }, { "auth_code", AuthCode }, { "scene_info", SceneInfo }, { "profit_sharing", ProfitSharing } }; return(parameters); }
public IDictionary <string, string> GetParameters() { var parameters = new WeChatPayDictionary { { "mch_billno", MchBillNo }, { "sub_mch_id", SubMchId }, { "wxappid", WXAppId }, { "msgappid", MsgAppId }, { "send_name", SendName }, { "re_openid", ReOpenId }, { "total_amount", TotalAmount }, { "total_num", TotalNum }, { "wishing", Wishing }, { "client_ip", ClientIp }, { "act_name", ActName }, { "remark", Remark }, { "scene_id", SceneId }, { "risk_info", RiskInfo }, { "consume_mch_id", ConsumeMchId } }; return(parameters); }
public static List <T> Parse <T>(WeChatPayDictionary dictionary) where T : new() { var list = new List <T>(); var properties = typeof(T).GetProperties(); var keyfirst = properties[0]; var count = dictionary.Keys.Where(p => Regex.IsMatch(p, $@"{GetKeyName(keyfirst)}_\d")).Count(); for (var i = 0; i < count; i++) { var item = new T(); foreach (var field in properties) { var name = $"{GetKeyName(field)}_{i}"; var value = dictionary.GetValue(name); if (!string.IsNullOrEmpty(value)) { field.SetValue(item, Convert.ChangeType(value, field.PropertyType)); } } list.Add(item); } return(list); }
public T Parse(string body) { T result = null; var parameters = new WeChatPayDictionary(); try { using (var sr = new StringReader(body)) { var xmldes = new XmlSerializer(typeof(T)); result = (T)xmldes.Deserialize(sr); } var bodyDoc = XDocument.Parse(body).Element("xml"); foreach (var element in bodyDoc.Elements()) { parameters.Add(element.Name.LocalName, element.Value); } } catch { } if (result == null) { result = Activator.CreateInstance <T>(); } if (result != null) { result.Body = body; result.Parameters = parameters; result.Execute(); } return(result); }
public IDictionary <string, string> GetParameters() { var parameters = new WeChatPayDictionary() { { "device_info", DeviceInfo }, { "body", Body }, { "detail", Detail }, { "attach", Attach }, { "out_trade_no", OutTradeNo }, { "fee_type", FeeType }, { "total_fee", TotalFee }, { "spbill_create_ip", SpbillCreateIp }, { "time_start", TimeStart }, { "time_expire", TimeExpire }, { "goods_tag", GoodsTag }, { "notify_url", NotifyUrl }, { "trade_type", TradeType }, { "product_id", ProductId }, { "limit_pay", LimitPay }, { "openid", OpenId } }; return(parameters); }
public void PrimaryHandler(WeChatPayOptions options, WeChatPaySignType signType, WeChatPayDictionary sortedTxtParams) { sortedTxtParams.Add(WeChatPayConsts.nonce_str, WeChatPayUtility.GenerateNonceStr()); sortedTxtParams.Add(WeChatPayConsts.mch_appid, options.AppId); sortedTxtParams.Add(WeChatPayConsts.mchid, options.MchId); sortedTxtParams.Add(WeChatPayConsts.sign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.Key, signType)); }
public void PrimaryHandler(WeChatPayOptions options, WeChatPaySignType signType, WeChatPayDictionary sortedTxtParams) { sortedTxtParams.Add(WeChatPayConsts.nonce_str, WeChatPayUtility.GenerateNonceStr()); sortedTxtParams.Add(WeChatPayConsts.mch_id, options.MchId); if (signType == WeChatPaySignType.HMAC_SHA256) { sortedTxtParams.Add(WeChatPayConsts.sign_type, WeChatPayConsts.HMAC_SHA256); } }
public void PrimaryHandler(WeChatPayOptions options, WeChatPaySignType signType, WeChatPayDictionary sortedTxtParams) { sortedTxtParams.Add(WeChatPayConsts.nonce_str, WeChatPayUtility.GenerateNonceStr()); sortedTxtParams.Add(WeChatPayConsts.appid, options.AppId); sortedTxtParams.Add(WeChatPayConsts.mch_id, options.MchId); var signList = new List<string> { "amount", "appid", "desc", "mch_id", "nonce_str", "openid", "partner_trade_no", "ww_msg_type", }; sortedTxtParams.Add(WeChatPayConsts.workwx_sign, WeChatPaySignature.SignWithSecret(sortedTxtParams, options.Secret, signList)); sortedTxtParams.Add(WeChatPayConsts.sign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.Key, signType)); }
public void PrimaryHandler(WeChatPayOptions options, WeChatPaySignType signType, WeChatPayDictionary sortedTxtParams) { sortedTxtParams.Add(WeChatPayConsts.nonce_str, WeChatPayUtility.GenerateNonceStr()); sortedTxtParams.Add(WeChatPayConsts.appid, options.AppId); sortedTxtParams.Add(WeChatPayConsts.sub_appid, options.SubAppId); sortedTxtParams.Add(WeChatPayConsts.mch_id, options.MchId); sortedTxtParams.Add(WeChatPayConsts.sub_mch_id, options.SubMchId); if (signType == WeChatPaySignType.HMAC_SHA256) { sortedTxtParams.Add(WeChatPayConsts.sign_type, WeChatPayConsts.HMAC_SHA256); } sortedTxtParams.Add(WeChatPayConsts.sign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.Key, signType)); }
private static string BuildSignatureSourceData(WeChatPayDictionary sortedTxtParams) { return($"{sortedTxtParams.GetValue(WeChatPayConsts.appId)}\n{sortedTxtParams.GetValue(WeChatPayConsts.timeStamp)}\n{sortedTxtParams.GetValue(WeChatPayConsts.nonceStr)}\n{sortedTxtParams.GetValue(WeChatPayConsts.package)}\n"); }
public void PrimaryHandler(WeChatPayOptions options, WeChatPaySignType signType, WeChatPayDictionary sortedTxtParams) { sortedTxtParams.Add(WeChatPayConsts.nonce_str, WeChatPayUtility.GenerateNonceStr()); sortedTxtParams.Add(WeChatPayConsts.wxappid, options.AppId); sortedTxtParams.Add(WeChatPayConsts.mch_id, options.MchId); var signList = new List <string> { "act_name", "mch_billno", "mch_id", "nonce_str", "re_openid", "total_amount", "wxappid", }; sortedTxtParams.Add(WeChatPayConsts.workwx_sign, WeChatPaySignature.SignWithSecret(sortedTxtParams, options.AppSecret, signList)); sortedTxtParams.Add(WeChatPayConsts.sign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.Key, signType)); }
public void PrimaryHandler(WeChatPayOptions options, WeChatPaySignType signType, WeChatPayDictionary sortedTxtParams) { if (string.IsNullOrEmpty(options.RsaPublicKey)) { throw new WeChatPayException("WeChatPayPayBankRequest: RsaPublicKey is null!"); } sortedTxtParams.Add(WeChatPayConsts.nonce_str, WeChatPayUtility.GenerateNonceStr()); sortedTxtParams.Add(WeChatPayConsts.mch_id, options.MchId); var no = OaepSHA1WithRSA.Encrypt(sortedTxtParams.GetValue(WeChatPayConsts.enc_bank_no), options.RsaPublicKey); sortedTxtParams.SetValue(WeChatPayConsts.enc_bank_no, no); var name = OaepSHA1WithRSA.Encrypt(sortedTxtParams.GetValue(WeChatPayConsts.enc_true_name), options.RsaPublicKey); sortedTxtParams.SetValue(WeChatPayConsts.enc_true_name, name); sortedTxtParams.Add(WeChatPayConsts.sign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.Key, signType)); }
public List <T> Parse <T, TChildren>(WeChatPayDictionary dictionary, int index = -1) { var flag = true; var list = new List <T>(); var i = 0; while (flag) { var type = typeof(T); var obj = Activator.CreateInstance(type); var properties = type.GetProperties(); var isFirstProperty = true; foreach (var propertie in properties) { if (propertie.PropertyType == typeof(List <TChildren>)) { var chidrenList = Parse <TChildren, object>(dictionary, i); propertie.SetValue(obj, chidrenList); continue; } var renameAttribute = propertie.GetCustomAttributes(typeof(XmlElementAttribute), true); if (renameAttribute.Length > 0) { var key = ((XmlElementAttribute)renameAttribute[0]).ElementName; if (index > -1) { key += $"_{index}"; } key += $"_{i}"; var value = dictionary.GetValue(key); if (value == null) { if (isFirstProperty) { flag = false; break; } continue; } isFirstProperty = false; propertie.SetValue(obj, Convert.ChangeType(value, propertie.PropertyType)); } } if (!flag) { return(list); } list.Add((T)obj); i++; } return(list); }
public T Parse(string body, string data) { if (string.IsNullOrEmpty(body)) { throw new ArgumentNullException(nameof(body)); } if (string.IsNullOrEmpty(data)) { throw new ArgumentNullException(nameof(data)); } T rsp = null; var parameters = new WeChatPayDictionary(); try { var bodyDoc = XDocument.Parse(body).Element("xml"); var dataDoc = XDocument.Parse(data).Element("root"); bodyDoc.Add(dataDoc.Nodes()); var text = bodyDoc.DescendantNodes().OfType <XText>().ToList(); foreach (var t in text) { parameters.Add(t.Parent.Name.LocalName, t.Value); if (t is XCData) { t.Parent.Add(t.Value); t.Remove(); } } var jsonText = JsonConvert.SerializeXNode(bodyDoc); var json = JsonConvert.DeserializeObject <IDictionary>(jsonText); if (json != null) { // 忽略根节点的名称 foreach (var key in json.Keys) { var str = json[key].ToString(); if (!string.IsNullOrEmpty(str)) { rsp = JsonConvert.DeserializeObject <T>(str); break; } } } } catch { } if (rsp == null) { rsp = Activator.CreateInstance <T>(); } if (rsp != null) { rsp.Body = data; rsp.Parameters = parameters; } return(rsp); }
public void PrimaryHandler(WeChatPayOptions options, WeChatPaySignType signType, WeChatPayDictionary sortedTxtParams) { if (string.IsNullOrEmpty(options.RsaPublicKey)) { throw new WeChatPayException($"{nameof(WeChatPayPayBankRequest)}.{nameof(PrimaryHandler)}: {nameof(options.RsaPublicKey)} is null or empty!"); } sortedTxtParams.Add(WeChatPayConsts.nonce_str, WeChatPayUtility.GenerateNonceStr()); sortedTxtParams.Add(WeChatPayConsts.mch_id, options.MchId); sortedTxtParams.Add(WeChatPayConsts.enc_bank_no, OaepSHA1WithRSA.Encrypt(BankNo, options.RsaPublicKey)); sortedTxtParams.Add(WeChatPayConsts.enc_true_name, OaepSHA1WithRSA.Encrypt(TrueName, options.RsaPublicKey)); sortedTxtParams.Add(WeChatPayConsts.sign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.Key, signType)); }