示例#1
0
        public T Parse(JDPayDictionary dictionary)
        {
            if (dictionary == null || dictionary.Count == 0)
            {
                throw new ArgumentNullException(nameof(dictionary));
            }

            if (!DicProperties.ContainsKey(typeof(T)))
            {
                DicProperties[typeof(T)] = GetPropertiesMap(typeof(T));
            }

            var propertiesMap = DicProperties[typeof(T)];

            var rsp = Activator.CreateInstance <T>();

            foreach (var item in dictionary)
            {
                if (propertiesMap.ContainsKey(item.Key))
                {
                    propertiesMap[item.Key].SetValue(rsp, item.Value.TryTo(propertiesMap[item.Key].PropertyType));
                }
            }

            if (rsp != null)
            {
                rsp.Parameters = dictionary;
            }

            return(rsp);
        }
        public static JDPayDictionary EncryptData(string signCert, string password, string envelopCert, JDPayDictionary dictionary, string singKey, string encryptType, bool isEncrypt)
        {
            var encryptData = new JDPayDictionary();
            var data        = GetNPP10SignContentOrEncryptContent(dictionary);

            dictionary.TryGetValue(JDPayContants.CUSTOMER_NO, out var customerNo);
            dictionary.TryGetValue(JDPayContants.SIGN_TYPE, out var signType);

            if (!isEncrypt || string.IsNullOrEmpty(encryptType))
            {
                dictionary.Add(JDPayContants.SIGN_DATA, GetNPP10Sign(data, signType, singKey));
                encryptData = dictionary;
            }
            else
            {
                encryptData.Add(JDPayContants.SIGN_TYPE, signType);
                encryptData.Add(JDPayContants.SIGN_DATA, GetNPP10Sign(data, signType, singKey));
                encryptData.Add(JDPayContants.CUSTOMER_NO, customerNo);
                encryptData.Add(JDPayContants.ENCRYPT_TYPE, encryptType);
                if ("RSA" == encryptType)
                {
                    encryptData.Add(JDPayContants.ENCRYPT_DATA, SignEnvelop(signCert, password, envelopCert, data));
                }
                else
                {
                    throw new JDPayException("不支持的加密方式");
                }
            }

            return(encryptData);
        }
        public IDictionary <string, string> GetParameters()
        {
            var parameters = new JDPayDictionary
            {
                { "token", Token },
                { "device", Device },
                { "tradeNum", TradeNum },
                { "tradeName", TradeName },
                { "tradeDesc", TradeDesc },
                { "tradeTime", TradeTime },
                { "amount", Amount },
                { "industryCategoryCode", IndustryCategoryCode },
                { "currency", Currency },
                { "note", Note },
                { "notifyUrl", NotifyUrl },
                { "orderGoodsNum", OrderGoodsNum },
                { "vendorId", VendorId },
                { "goodsInfoList", GoodsInfoList },
                { "receiverInfo", ReceiverInfo },
                { "termInfo", TermInfo },
                { "payMerchant", PayMerchant },
                { "riskInfo", RiskInfo }
            };

            return(parameters);
        }
        public IDictionary <string, string> GetParameters()
        {
            var parameters = new JDPayDictionary()
            {
                { "payMerchant", PayMerchant },
                { "device", Device },
                { "tradeNum", TradeNum },
                { "tradeName", TradeName },
                { "tradeDesc", TradeDesc },
                { "tradeTime", TradeTime },
                { "amount", Amount },
                { "orderType", OrderType },
                { "industryCategoryCode", IndustryCategoryCode },
                { "currency", Currency },
                { "note", Note },
                { "callbackUrl", CallbackUrl },
                { "notifyUrl", NotifyUrl },
                { "ip", Ip },
                { "specCardNo", SpecCardNo },
                { "specId", SpecId },
                { "specName", SpecName },
                { "tradeType", TradeType },
                { "userId", UserId },
                { "expireTime", ExpireTime },
                { "orderGoodsNum", OrderGoodsNum },
                { "vendorId", VendorId },
                { "goodsInfo", GoodsInfo },
                { "receiverInfo", ReceiverInfo },
                { "termInfo", TermInfo },
                { "riskInfo", RiskInfo },
            };

            return(parameters);
        }
        private static string GetNPP10Sign(JDPayDictionary dictionary, string algorithm, string salt)
        {
            if (dictionary == null || dictionary.Count == 0)
            {
                return(string.Empty);
            }

            var sb = new StringBuilder();

            foreach (var iter in dictionary)
            {
                if (!string.IsNullOrEmpty(iter.Value) && iter.Key != "sign_type" && iter.Key != "sign_data" && iter.Key != "encrypt_type" && iter.Key != "encrypt_data" && iter.Key != "salt")
                {
                    sb.Append(iter.Key).Append("=").Append(iter.Value).Append("&");
                }
            }

            var sign = string.Empty;
            var data = sb.Remove(sb.Length - 1, 1) + salt;

            if ("SHA" == algorithm)
            {
                sign = SHA1.Compute(data).ToUpper();
            }
            else if ("SHA-256" == algorithm)
            {
                sign = SHA256.Compute(data).ToUpper();
            }

            return(sign);
        }
        public static string SortedDictionary2XmlStr(JDPayDictionary dictionary)
        {
            var xmldoc = new XmlDocument();

            SortedDictionary2Xml(xmldoc, dictionary);
            return(ConvertXmlToString(xmldoc));
        }
 public static bool VerifySign(JDPayDictionary dic, string key)
 {
     dic.TryGetValue(JDPayContants.SIGN_TYPE, out var algorithm);
     dic.TryGetValue(JDPayContants.SIGN_DATA, out var sign);
     dic.Remove(JDPayContants.SIGN_TYPE);
     dic.Remove(JDPayContants.SIGN_DATA);
     return(Verify(sign, dic, algorithm, key));
 }
        public static XmlDocument SortedDictionary2AllXml(JDPayDictionary dictionary)
        {
            var xmldoc  = new XmlDocument();
            var xmldecl = xmldoc.CreateXmlDeclaration("1.0", "UTF-8", null);

            xmldoc.AppendChild(xmldecl);
            SortedDictionary2Xml(xmldoc, dictionary);
            return(xmldoc);
        }
        public IDictionary <string, string> GetParameters()
        {
            var parameters = new JDPayDictionary()
            {
                { "userId", UserId },
            };

            return(parameters);
        }
示例#10
0
        private static bool Verify(string signStr, JDPayDictionary dic, string algorithm, string salt)
        {
            if (string.IsNullOrEmpty(signStr) || null == dic || dic.Count == 0)
            {
                return(false);
            }
            var newsign = GetNPP10Sign(dic, algorithm, salt);

            return(newsign == signStr);
        }
示例#11
0
        public IDictionary <string, string> GetParameters()
        {
            var parameters = new JDPayDictionary()
            {
                { "tradeNum", TradeNum },
                { "oTradeNum", OTradeNum },
                { "tradeType", 0 }, // 消费
            };

            return(parameters);
        }
示例#12
0
        public static void SortedDictionary2Xml(XmlDocument xmldoc, JDPayDictionary dic)
        {
            var xmlelem = xmldoc.CreateElement("", "jdpay", "");

            xmldoc.AppendChild(xmlelem);
            foreach (var kv in dic)
            {
                var xe = xmldoc.CreateElement(kv.Key);
                xe.InnerText = kv.Value;
                xmlelem.AppendChild(xe);
            }
        }
        public IDictionary <string, string> GetParameters()
        {
            var parameters = new JDPayDictionary()
            {
                { "request_datetime", RequestDatetime },
                { "out_trade_no", OutTradeNo },
                { "trade_no", TradeNo },
                { "trade_type", TradeType },
            };

            return(parameters);
        }
示例#14
0
        public IDictionary <string, string> GetParameters()
        {
            var parameters = new JDPayDictionary()
            {
                { "tradeNum", TradeNum },
                { "oTradeNum", OTradeNum },
                { "amount", Amount },
                { "currency", Currency },
                { "tradeTime", TradeTime },
                { "note", Note },
            };

            return(parameters);
        }
示例#15
0
        public IDictionary <string, string> GetParameters()
        {
            var parameters = new JDPayDictionary()
            {
                { "request_datetime", RequestDatetime },
                { "out_trade_no", OutTradeNo },
                { "out_trade_date", OutTradeDate },
                { "buyer_info", BuyerInfo },
                { "query_type", QueryType },
                { "ledger_type", LedgerType },
            };

            return(parameters);
        }
示例#16
0
        public IDictionary <string, string> GetParameters()
        {
            var parameters = new JDPayDictionary
            {
                { "tradeNum", TradeNum },
                { "oTradeNum", OTradeNum },
                { "amount", Amount },
                { "currency", Currency },
                { "tradeTime", TradeTime },
                { "notifyUrl", NotifyUrl },
                { "note", Note },
                { "device", Device },
                { "termInfoId", TermInfoId }
            };

            return(parameters);
        }
示例#17
0
        private static string GetNPP10SignContentOrEncryptContent(JDPayDictionary para)
        {
            if (para == null || para.Count == 0)
            {
                return(string.Empty);
            }

            var sb = new StringBuilder();

            foreach (var iter in para)
            {
                if (!string.IsNullOrEmpty(iter.Value) && iter.Key != "sign_type" && iter.Key != "sign_data" && iter.Key != "encrypt_type" && iter.Key != "encrypt_data" && iter.Key != "salt")
                {
                    sb.Append(iter.Key).Append("=").Append(iter.Value).Append("&");
                }
            }

            return(sb.Remove(sb.Length - 1, 1).ToString());
        }
示例#18
0
        public static string GetSignContent(JDPayDictionary para)
        {
            if (para == null || para.Count == 0)
            {
                return(string.Empty);
            }

            var sb = new StringBuilder();

            foreach (var iter in para)
            {
                if (!string.IsNullOrEmpty(iter.Value) && iter.Key != "sign")
                {
                    sb.Append(iter.Key).Append("=").Append(iter.Value).Append("&");
                }
            }

            return(sb.Remove(sb.Length - 1, 1).ToString());
        }
示例#19
0
        public IDictionary <string, string> GetParameters()
        {
            var parameters = new JDPayDictionary
            {
                { "request_datetime", RequestDatetime },
                { "out_trade_no", OutTradeNo },
                { "biz_trade_no", BizTradeNo },
                { "out_trade_date", OutTradeDate },
                { "trade_amount", TradeAmount },
                { "trade_currency", TradeCurrency },
                { "seller_info", SellerInfo },
                { "trade_subject", TradeSubject },
                { "category_code", CategoryCode },
                { "pay_tool", PayTool },
                { "trade_source", TradeSource },
                { "payee_bank_code", PayeeBankCode },
                { "payee_bank_associated_code", PayeeBankAssociatedCode },
                { "payee_bank_fullname", PayeeBankFullname },
                { "payee_bank_country_code", PayeeBankCountryCode },
                { "payee_bank_province_code", PayeeBankProvinceCode },
                { "payee_bank_city_code", PayeeBankCityCode },
                { "payee_card_type", PayeeCardType },
                { "payee_account_type", PayeeAccountType },
                { "payee_account_no", PayeeAccountNo },
                { "payee_account_name", PayeeAccountName },
                { "payee_id_type", PayeeIdType },
                { "payee_id_no", PayeeIdNo },
                { "payee_mobile", PayeeMobile },
                { "notify_url", NotifyUrl },
                { "return_params", ReturnParams },
                { "extend_params", ExtendParams },
                { "bank_card_info_type", BankCardInfoType },
                { "bank_card_id", BankCardId }
            };

            return(parameters);
        }
示例#20
0
        public IDictionary <string, string> GetParameters()
        {
            var parameters = new JDPayDictionary()
            {
                { "payMerchant", PayMerchant },
                { "device", Device },
                { "tradeNum", TradeNum },
                { "tradeName", TradeName },
                { "tradeDesc", TradeDesc },
                { "tradeTime", TradeTime },
                { "amount", Amount },
                { "orderType", OrderType },
                { "industryCategoryCode", IndustryCategoryCode },
                { "currency", Currency },
                { "tradeType", TradeType },
                { "note", Note },
                { "callbackUrl", CallbackUrl },
                { "notifyUrl", NotifyUrl },
                { "ip", Ip },
                { "riskInfo", RiskInfo },
            };

            return(parameters);
        }