/// <summary>
        /// 创建chooseWxPay配置
        /// </summary>
        /// <param name="unifiedOrder"></param>
        /// <param name="signType"></param>
        /// <returns></returns>
        public ChooseWxPayConfig GenerateChooseWxPayConfig(UnifiedOrder unifiedOrder, WxPaySignType signType = WxPaySignType.MD5)
        {
            //转换字典
            var dic = UtilityHelper.Obj2Dictionary(unifiedOrder);

            //生成签名
            unifiedOrder.sign = SignatureGenerater.GenerateWxPaySignature(dic, _baseSettings.ApiKey, signType);
            //统一下单
            var unifiedOrderResult = _wxPayInterfaceCaller.UnifiedOrder(unifiedOrder);

            var nonceStr          = UtilityHelper.GenerateNonce();
            var timeStamp         = UtilityHelper.GetTimeStamp();
            var chooseWxPayConfig = new ChooseWxPayConfig()
            {
                nonceStr  = nonceStr,
                timestamp = timeStamp,
                package   = unifiedOrderResult.prepay_id,
                signType  = signType.GetDescription()
            };
            var paySign = SignatureGenerater.GenerateWxPaySignature(new Dictionary <string, string>()
            {
                { "appId", _baseSettings.AppId },
                { "timeStamp", chooseWxPayConfig.timestamp.ToString() },
                { "nonceStr", chooseWxPayConfig.nonceStr },
                { "package", chooseWxPayConfig.package },
                { "signType", chooseWxPayConfig.signType }
            }, _baseSettings.ApiKey, signType);

            chooseWxPayConfig.paySign = paySign;

            return(chooseWxPayConfig);
        }
Esempio n. 2
0
        /// <summary>
        /// Js-API支付
        /// </summary>
        /// <param name="info"></param>
        /// <param name="signType"></param>
        /// <returns></returns>
        public ChooseWxPayConfig JsApiPay(UnifiedOrderInfo info)
        {
            var unifiedOrder = new UnifiedOrder()
            {
                nonce_str        = info.NonceStr,
                appid            = _baseSettings.AppId,
                mch_id           = _baseSettings.MchId,
                out_trade_no     = info.TradeNo,
                sign_type        = info.SignType.GetDescription(),
                total_fee        = (int)(info.TotalFee * 100),
                openid           = info.OpenId,
                notify_url       = info.NotifyUrl,
                fee_type         = info.FeeType,
                spbill_create_ip = info.DeviceIp,
                time_start       = info.StartTime.ToString("yyyyMMddHHmmss"),
                time_expire      = info.EndTime.ToString("yyyyMMddHHmmss"),
                attach           = info.Attach,
                body             = info.Body,
                detail           = info.Detail,
                goods_tag        = info.GoodTags,
                limit_pay        = info.UseLimitPay ? "no_credit" : null,
                trade_type       = info.TradeType,
                scene_info       = info.SceneInfo
            };
            //转换字典
            var dic = UtilityHelper.Obj2Dictionary(unifiedOrder);

            //生成签名
            unifiedOrder.sign = SignatureGenerater.GenerateWxPaySignature(dic, _baseSettings.ApiKey, info.SignType);
            //统一下单
            var unifiedOrderResult = _wxPayInterfaceCaller.UnifiedOrder(unifiedOrder);

            var chooseWxPayConfig = new ChooseWxPayConfig()
            {
                nonceStr  = info.NonceStr,
                timestamp = info.TimeStamp,
                package   = unifiedOrderResult.prepay_id,
                signType  = info.SignType.GetDescription()
            };
            var paySign = SignatureGenerater.GenerateWxPaySignature(new Dictionary <string, string>()
            {
                { "appId", _baseSettings.AppId },
                { "timeStamp", chooseWxPayConfig.timestamp.ToString() },
                { "nonceStr", chooseWxPayConfig.nonceStr },
                { "package", chooseWxPayConfig.package },
                { "signType", chooseWxPayConfig.signType }
            }, _baseSettings.ApiKey, info.SignType);

            chooseWxPayConfig.paySign = paySign;

            return(chooseWxPayConfig);
        }
        public string ReplyMessageMiddle(string replyMsg)
        {
            string replyMsgEncrypted = CryptographyHelper.AESEncrypt(replyMsg, _baseSettings.EncodingAESKey, _baseSettings.AppId);
            string timestamp         = UtilityHelper.GetTimeStamp().ToString();
            string nonce             = UtilityHelper.GenerateNonce();
            string signature         = SignatureGenerater.GenerateSignature(_baseSettings.Token, timestamp, nonce, replyMsgEncrypted);

            StringBuilder sb = new StringBuilder();

            sb.Append($"<xml>");
            sb.Append($"<Encrypt><![CDATA[{replyMsgEncrypted}]]></Encrypt>");
            sb.Append($"<MsgSignature><![CDATA[{signature}]]></MsgSignature>");
            sb.Append($"<TimeStamp><![CDATA[{timestamp}]]></TimeStamp>");
            sb.Append($"<Nonce><![CDATA[{nonce}]]></Nonce>");
            sb.Append($"</xml>");

            return(sb.ToString());
        }
        /// <summary>
        /// 创建JS-API配置
        /// </summary>
        /// <param name="url"></param>
        /// <param name="jsApis"></param>
        /// <returns></returns>
        public JsApiConfig GenerateJsApiConfig(string url, params string[] jsApis)
        {
            var timeStamp   = UtilityHelper.GetTimeStamp();
            var nonceStr    = UtilityHelper.GenerateNonce();
            var accessToken = _accessTokenContainer.GetAccessToken();
            var ticket      = _ticketContainer.GetJsApiTicket(accessToken);
            var signature   = SignatureGenerater.GenerateJsApiSignature(ticket, nonceStr, timeStamp, url);

            return(new JsApiConfig()
            {
                debug = _baseSettings.Debug,
                appId = _baseSettings.AppId,
                timestamp = timeStamp,
                nonceStr = nonceStr,
                signature = signature,
                jsApiList = jsApis
            });
        }
Esempio n. 5
0
        /// <summary>
        /// H5支付
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public string H5Pay(UnifiedOrderInfo info)
        {
            var unifiedOrder = new UnifiedOrder()
            {
                nonce_str        = info.NonceStr,
                appid            = _baseSettings.AppId,
                mch_id           = _baseSettings.MchId,
                out_trade_no     = info.TradeNo,
                sign_type        = info.SignType.GetDescription(),
                total_fee        = (int)(info.TotalFee * 100),
                openid           = info.OpenId,
                notify_url       = info.NotifyUrl,
                fee_type         = info.FeeType,
                spbill_create_ip = info.DeviceIp,
                time_start       = info.StartTime.ToString("yyyyMMddHHmmss"),
                time_expire      = info.EndTime.ToString("yyyyMMddHHmmss"),
                attach           = info.Attach,
                body             = info.Body,
                detail           = info.Detail,
                goods_tag        = info.GoodTags,
                limit_pay        = info.UseLimitPay ? "no_credit" : null,
                trade_type       = info.TradeType,
                scene_info       = info.SceneInfo
            };
            //转换字典
            var dic = UtilityHelper.Obj2Dictionary(unifiedOrder);

            //生成签名
            unifiedOrder.sign = SignatureGenerater.GenerateWxPaySignature(dic, _baseSettings.ApiKey, info.SignType);
            //统一下单
            var unifiedOrderResult = _wxPayInterfaceCaller.UnifiedOrder(unifiedOrder);

            var mWebUrl = unifiedOrderResult.mweb_url;

            if (!string.IsNullOrEmpty(info.RedirectUrl))
            {
                mWebUrl += $"&redirect_url={HttpUtility.UrlEncode(info.RedirectUrl)}";
            }

            return(mWebUrl);
        }
Esempio n. 6
0
        /// <summary>
        /// 签名有效性验证
        /// </summary>
        /// <param name="signature">签名</param>
        /// <param name="strings">生成签名的字符串</param>
        /// <returns></returns>
        public bool VerifySignature(string signature, params string[] strings)
        {
            string sign = SignatureGenerater.GenerateSignature(strings);

            return(sign == signature);
        }