Exemplo n.º 1
0
        /// <summary>
        /// 微信转账
        /// </summary>
        /// <param name="request">请求</param>
        /// <param name="config">配置</param>
        /// <returns>结果</returns>
        public static TransfersResult Transfers(TransfersRequest request, Config config)
        {
            TransfersResult       result = new TransfersResult();
            TransfersQueryRequest transfersQueryRequest = new TransfersQueryRequest
            {
                PartnerTradeNo = request.PartnerTradeNo
            };
            TransfersQueryResult transfersQueryResult = TransfersQuery(transfersQueryRequest, config);

            if (transfersQueryResult.Status == TransfersStatus.Success)
            {
                result.IsSuccess = TransfersStatus.Success;
                return(result);
            }
            if (transfersQueryResult.Status == TransfersStatus.Processing)
            {
                result.IsSuccess = TransfersStatus.Processing;
                return(result);
            }

            var requestStr = TenpayUtil.GetTransfersRequestXml(request, config);
            var response   = HttpHelp.PostXmlToUrl(Config.TransfersUrl, requestStr, config.GetTransfersCertPath(), config.GetPid());

            result = TenpayUtil.ConvertToTransfersResult(response);
            return(result);
        }
Exemplo n.º 2
0
        public async Task <PagedResult> GetTransfersAsync(TransfersRequest request)
        {
            var httpResponseMessage = await this.m_HttpClient.PostAsync("/v1/history/get_transfers", CreateStringContent(JsonConvert.SerializeObject((object)new
            {
                contract = "eosio.token",
                action = "transferex",
                skip = request.Skip,
                limit = request.Limit,
                Owner = request.Owner
            })));

            if (httpResponseMessage.IsSuccessStatusCode)
            {
                var contentStr = await httpResponseMessage.Content.ReadAsStringAsync();

                var response  = JsonConvert.DeserializeObject <TransferResponse>(contentStr);
                var transfers = response.Actions.Select(a => new Transfer
                {
                    Id            = a.TrxId,
                    blockNum      = a.BlockNum,
                    Time          = a.BlockTime,
                    From          = a.Data.From,
                    To            = a.Data.To,
                    Quantity      = a.Data.Quantity,
                    Memo          = a.Data.Memo,
                    Confirmations = (response.LastIrreversibleBlock > a.BlockNum) ? (response.LastIrreversibleBlock - a.BlockNum) : 0
                }).ToList();
                var result = PagedResult.Create(transfers, response.Total);
                return(result);
            }
            return(PagedResult.Empty <Transfer>());
        }
Exemplo n.º 3
0
        /// <summary>
        /// 企业向微信用户个人付款https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2
        /// </summary>
        public TransfersResponse Transfers(TransfersRequest request)
        {
            var response = new TransfersResponse()
            {
                return_code = "FAI"
            };

            string requestUrl = "https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";

            TransfersImpl wxTransfers = new TransfersImpl()
            {
                apiKey = request.apiKey
            };

            wxTransfers.Add("mch_appid", request.mch_appid);
            wxTransfers.Add("mchid", request.mchid);
            wxTransfers.Add("nonce_str", request.nonce_str);
            wxTransfers.Add("partner_trade_no", request.partner_trade_no);
            wxTransfers.Add("openid", request.openid);
            wxTransfers.Add("check_name", "NO_CHECK");
            wxTransfers.Add("amount", Convert.ToInt32(request.amount * 100).ToString());
            wxTransfers.Add("desc", request.desc);
            wxTransfers.Add("spbill_create_ip", request.spbill_create_ip);
            var sign = wxTransfers.CreateMd5Sign();

            wxTransfers.Add("sign", sign);

            var xmlData = wxTransfers.ParseXML();

            var data = new HttpUtils().DoPost(requestUrl, xmlData, request.isUseCert, request.cert, request.password);
            var doc  = new XmlDocument();

            doc.LoadXml(data);

            XmlNode xmlNode = doc.DocumentElement;

            if (xmlNode != null)
            {
                response.return_code = xmlNode["return_code"].InnerText;
                if (response.return_code.ToUpper() != "SUCCESS")
                {
                    response.return_msg = xmlNode["return_msg"].InnerText;
                    return(response);
                }

                response.result_code = xmlNode["result_code"].InnerText;
                if (response.result_code.ToUpper() == "FAIL")
                {
                    response.err_code     = "错误码:" + xmlNode["err_code"].InnerText;
                    response.err_code_des = "错误描述:" + xmlNode["err_code_des"].InnerText;
                    return(response);
                }
            }
            return(response);
        }
Exemplo n.º 4
0
 /// <summary>
 /// 企业付款到零钱
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public ApiResult <TransfersResponse> Transfers(TransfersRequest request)
 {
     if (request == null)
     {
         return(new ApiResult <TransfersResponse>()
         {
             message = "require parameters"
         });
     }
     else if (request.amount <= 0)
     {
         return(new ApiResult <TransfersResponse>()
         {
             message = "missing amount"
         });
     }
     else if (string.IsNullOrEmpty(request.desc))
     {
         return(new ApiResult <TransfersResponse>()
         {
             message = "missing desc"
         });
     }
     else if (string.IsNullOrEmpty(request.openid))
     {
         return(new ApiResult <TransfersResponse>()
         {
             message = "missing openid"
         });
     }
     else if (string.IsNullOrEmpty(request.partner_trade_no))
     {
         return(new ApiResult <TransfersResponse>()
         {
             message = "missing partner_trade_no"
         });
     }
     else if (string.IsNullOrEmpty(request.spbill_create_ip))
     {
         return(new ApiResult <TransfersResponse>()
         {
             message = "missing spbill_create_ip"
         });
     }
     return(GetResponseFromAsyncTask(TransfersAsync(request)));
 }
Exemplo n.º 5
0
        /// <summary>
        /// 企业付款到零钱
        /// </summary>
        /// <param name="trade_no"></param>
        /// <param name="amount"></param>
        /// <param name="openid"></param>
        /// <param name="desc"></param>
        /// <param name="check_name"></param>
        /// <returns></returns>
        public ApiResult <TransfersResponse> Transfers(String trade_no, Int32 amount, String openid
                                                       , String desc, String check_name = null)
        {
            var request = new TransfersRequest();

            request.spbill_create_ip = Wlniao.OpenApi.Tool.GetIP();
            request.partner_trade_no = trade_no;
            request.amount           = amount;
            request.openid           = openid;
            request.desc             = desc;
            if (!string.IsNullOrEmpty(check_name))
            {
                request.check_name   = true;
                request.re_user_name = check_name;
            }
            return(Transfers(request));
        }
Exemplo n.º 6
0
        /// <summary>
        /// 微信转账
        /// </summary>
        /// <param name="request"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public static string GetTransfersRequestXml(TransfersRequest request, Config config)
        {
            SortedDictionary <string, string> sParams = new SortedDictionary <string, string>
            {
                { "mch_appid", config.GetAppId() },
                { "mchid", config.GetPid() },
                { "nonce_str", Config.GetNoncestr() },
                { "partner_trade_no", request.PartnerTradeNo },
                { "openid", request.OpenId },
                { "amount", request.Amount.ToString() },
                { "desc", request.Desc },
                { "spbill_create_ip", request.SpbillCreateIp }
            };

            if (!string.IsNullOrWhiteSpace(request.ReUserName))
            {
                sParams.Add("check_name", "FORCE_CHECK");
                sParams.Add("re_user_name", request.ReUserName);
            }
            else
            {
                sParams.Add("check_name", "NO_CHECK");
            }
            var sing = Signature.Getsign(sParams, config.GetKey());

            sParams.Add("sign", sing);
            StringBuilder sbPay = new StringBuilder();

            foreach (KeyValuePair <string, string> k in sParams)
            {
                if (k.Key == "desc" || k.Key == "re_user_name")
                {
                    sbPay.Append("<" + k.Key + "><![CDATA[" + k.Value + "]]></" + k.Key + ">");
                }
                else
                {
                    sbPay.Append("<" + k.Key + ">" + k.Value + "</" + k.Key + ">");
                }
            }
            var return_string = $"<xml>{sbPay}</xml>";

            return(return_string);
        }
Exemplo n.º 7
0
        public async Task <TransfersResponse> TransfersAsync(string openId, decimal amount, string desc, string spbillCreateIp, string reUserName = "")
        {
            var transferReq = new TransfersRequest(
                _weixinSetting.AppID,
                _weixinSetting.MchId,
                openId,
                _weixinSetting.PartnerKey,
                amount,
                desc,
                spbillCreateIp ?? "192.168.1.122");

            transferReq.sign = Utility.MakeSign(transferReq, _weixinSetting.PartnerKey);

            //var appEnv = _commonContext.GetService<IApplicationEnvironment>();
            var clientService = new ClientService(_loggerFactory);
            var resp          = await clientService.ExecuteAsync(
                transferReq,
                RequestStringDataTypes.Xml,
                _weixinSetting.CertPassword,
                _weixinSetting.CertFullName);

            return(resp);
        }
        public Task <PagedResult> Transfers([FromQuery] TransfersRequest request)
        {
            var transfers = m_ChainManager.GetTransfersAsync(request);

            return(transfers);
        }
Exemplo n.º 9
0
 /// <summary>
 /// 企业付款到零钱 的异步形式。
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public Task <ApiResult <TransfersResponse> > TransfersAsync(TransfersRequest request)
 {
     request.desc = request.desc.Replace("&", "");
     return(CallAsync <TransfersRequest, TransfersResponse>("transfers", request, System.Net.Http.HttpMethod.Get));
 }