public Task <WeChatPayDictionary> ExecuteAsync(IWeChatPayCallRequest request, string optionsName)
        {
            var options         = _optionsSnapshotAccessor.Get(optionsName);
            var sortedTxtParams = new WeChatPayDictionary(request.GetParameters());

            if (request is WeChatPayAppCallPaymentRequest)
            {
                if (string.IsNullOrEmpty(sortedTxtParams.GetValue(appid)))
                {
                    sortedTxtParams.Add(appid, options.AppId);
                }

                if (string.IsNullOrEmpty(sortedTxtParams.GetValue(partnerid)))
                {
                    sortedTxtParams.Add(partnerid, options.MchId);
                }

                sortedTxtParams.Add(noncestr, Guid.NewGuid().ToString("N"));
                sortedTxtParams.Add(timestamp, WeChatPayUtility.GetTimeStamp());
                sortedTxtParams.Add(sign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.Key));
            }
            else if (request is WeChatPayLiteAppCallPaymentRequest || request is WeChatPayH5CallPaymentRequest)
            {
                if (string.IsNullOrEmpty(sortedTxtParams.GetValue(appId)))
                {
                    sortedTxtParams.Add(appId, options.AppId);
                }

                sortedTxtParams.Add(timeStamp, WeChatPayUtility.GetTimeStamp());
                sortedTxtParams.Add(nonceStr, Guid.NewGuid().ToString("N"));
                sortedTxtParams.Add(signType, SIGN_TYPE_MD5);
                sortedTxtParams.Add(paySign, WeChatPaySignature.SignWithKey(sortedTxtParams, options.Key));
            }

            return(Task.FromResult(sortedTxtParams));
        }
 public Task <WeChatPayDictionary> ExecuteAsync(IWeChatPayCallRequest request)
 {
     return(ExecuteAsync(request, null));
 }