예제 #1
0
        public static WeChatPayOrder GetWeChatPayOrder()
        {
            WeChatPayOrder weChatPayOrder = new WeChatPayOrder();

            weChatPayOrder.nonce_str  = Guid.NewGuid().ToString("N");
            weChatPayOrder.notify_url = WeChatPayCallBack;
            return(weChatPayOrder);
        }
예제 #2
0
        /// <summary>
        /// 获取签名
        /// 第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
        ///stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";
        ///第二步:拼接API密钥:
        ///stringSignTemp=stringA+"&key=192006250b4c09247ec02edce69f6a2d" //注:key为商户平台设置的密钥key
        ///sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7" //注:MD5签名方式
        ///sign=hash_hmac("sha256", stringSignTemp, key).toUpperCase()="6A9AE1657590FD6257D693A078E1C3E4BB6BA4DC30B23E0EE2496E54170DACD6" //注:HMAC-SHA256签名方式
        /// </summary>
        /// <returns></returns>
        static void SetSign(WeChatPayOrder order)
        {
            var d = JsonConvert.DeserializeObject <Dictionary <string, string> >(JsonConvert.SerializeObject(order));

            var    vDic    = (from objDic in d orderby objDic.Key ascending select objDic);
            string stringA = "";

            foreach (var item in vDic)
            {
                string val = item.Value;
                string key = item.Key;
                if (!string.IsNullOrEmpty(val))
                {
                    stringA += $"{key}={val}&";
                }
            }
            stringA    = stringA.Trim('&') + "&key=" + SHSercret;
            order.sign = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(stringA, "MD5").ToUpper();
        }
예제 #3
0
        public static PayOrderResult CreateOrder(WeChatPayOrder order)
        {
            HttpHelper httpHelper = new HttpHelper();

            SetSign(order);
            string     data   = CreateXmlParam(JsonConvert.DeserializeObject <Dictionary <string, string> >(JsonConvert.SerializeObject(order)));
            HttpResult result = httpHelper.GetHtml(new HttpItem()
            {
                URL          = "https://api.mch.weixin.qq.com/pay/unifiedorder",
                Postdata     = data,
                Method       = "Post",
                PostEncoding = Encoding.UTF8,
                Encoding     = Encoding.UTF8,
                ContentType  = "text/xml;"
            });
            PayOrderResult payOrderResult = XmlHelper.DeserializeToObject <PayOrderResult>(result.Html);

            payOrderResult.timeStamp = GetTimeStamp(DateTime.Now).ToString();
            SetPaySign(payOrderResult);
            return(payOrderResult);
        }