/// <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); }
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>()); }
/// <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); }
/// <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))); }
/// <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)); }
/// <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); }
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); }
/// <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)); }