Esempio n. 1
0
        /// <summary>
        /// 根据统一下单接口返回的对象,创建一个App客户端直接可用的参数对象。
        /// </summary>
        /// <param name="uiniOrderResp"></param>
        /// <returns></returns>
        public WxAppPrepayOrderInfoMo GetAppPrepayOrderInfoMo(WxAddPayUniOrderResp uiniOrderResp)
        {
            var wxAppPrepayOrderInfoMo = new WxAppPrepayOrderInfoMo
            {
                appid     = uiniOrderResp.appid,
                partnerid = uiniOrderResp.mch_id,
                prepayid  = uiniOrderResp.prepay_id,
                noncestr  = uiniOrderResp.nonce_str,
                timestamp = DateTime.Now.ToUtcSeconds().ToString(),
                package   = "Sign=WXPay",
            };

            var dic = new SortedDictionary <string, object>()
            {
                { "appid", wxAppPrepayOrderInfoMo.appid },
                { "partnerid", wxAppPrepayOrderInfoMo.partnerid },
                { "prepayid", wxAppPrepayOrderInfoMo.prepayid },
                { "noncestr", wxAppPrepayOrderInfoMo.noncestr },
                { "package", wxAppPrepayOrderInfoMo.package },
                { "timestamp", wxAppPrepayOrderInfoMo.timestamp },
            };

            wxAppPrepayOrderInfoMo.sign = GetSign(dic);
            return(wxAppPrepayOrderInfoMo);
        }
Esempio n. 2
0
        /// <summary>
        ///  把统一下单结果响应给微信支付系统
        /// </summary>
        /// <param name="uniOrder"></param>
        /// <returns></returns>
        public string GetScanCallBackResponse(WxAddPayUniOrderResp uniOrder)
        {
            var res = new WxPayScanCallBackResMo();

            res.err_code_des = uniOrder.err_code_des;
            res.prepay_id    = uniOrder.prepay_id;
            res.result_code  = uniOrder.result_code;
            res.return_code  = uniOrder.return_code;
            res.return_msg   = uniOrder.return_msg;

            var dics = res.GetDics();

            dics.Add("appid", ApiConfig.AppId);
            dics.Add("mch_id", ApiConfig.MchId);

            CompleteDicSign(dics);
            return(dics.ProduceXml());
        }
Esempio n. 3
0
        /// <summary>
        /// 获取签名
        /// </summary>
        /// <param name="res"></param>
        /// <returns></returns>
        public string GetSign(WxAddPayUniOrderResp res)
        {
            TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
            string   GenerateTimeStamp = Convert.ToInt64(ts.TotalSeconds).ToString();

            var list = new SortedDictionary <string, object>();

            list.Add("appId", res.appid);
            list.Add("timeStamp", GenerateTimeStamp);
            list.Add("nonceStr", res.nonce_str);
            list.Add("package", "prepay_id=" + res.prepay_id);
            list.Add("signType", "MD5");
            string encStr = string.Join("&",
                                        list.Select(
                                            k =>
            {
                var str = k.Value?.ToString();
                return(string.IsNullOrEmpty(str)
                            ? string.Empty
                            : string.Concat(k.Key, "=", str));
            }));

            return(Md5.EncryptHexString(string.Concat(encStr, "&key=", m_Api.ApiConfig.Key)).ToUpper());
        }