/// <summary> /// 统一下单 /// </summary> public async Task <UnifiedOrderResult> UnifiedOrder(UnifiedOrderParam param) { var url = "https://api.mch.weixin.qq.com/pay/unifiedorder"; var dataDic = new SortedDictionary <string, object>(); dataDic.SetValue("appid", _wxOptions.WxAppId); //配置文件读取 dataDic.SetValue("mch_id", _wxOptions.MechId); //配置文件读取 dataDic.SetValue("nonce_str", WeChatPayUtility.GeneratorNonceStr()); dataDic.SetValue("body", _wxOptions.Body); //传入或者配置 dataDic.SetValue("out_trade_no", param.OutTradeNo ?? WeChatPayUtility.GeneratorNonceStr()); dataDic.SetValue("total_fee", param.TotalFee); //传入 dataDic.SetValue("spbill_create_ip", ""); // dataDic.SetValue("notify_url", _wxOptions.NotifyUrl); //配置读取 dataDic.SetValue("trade_type", param.TradeType); //传入 if (param.TradeType == "JSAPI") { dataDic.SetValue("OpenId", param.OpenId); } //可选参数 dataDic.SetValue("goods_tag", _wxOptions.GoodsTag); dataDic.SetValue("attach", _wxOptions.Attach); dataDic.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); dataDic.SetValue("time_expire", DateTime.Now.AddMinutes(40).ToString("yyyyMMddHHmmss")); var sign = WeChatPayUtility.MakeSign(dataDic.ToUrlString(), _wxOptions.MechKey); dataDic.SetValue("sign", sign); var xml = dataDic.ToXml(); var result = await _aSampleHttpClient.PostAsync <UnifiedOrderResult>(url, xml, DeserializeType.XmlDeserialize); return(result); }
public string TestToShowXml(UnifiedOrderParam param) { SetParams(param); ValidateParameters(); string xml = ParamBuilder.ToXml(); return(xml); }
public UnifiedOrderResult PostXml(UnifiedOrderParam param) { SetParams(param); ValidateParameters(); ResultBuilder resultBuilder = PostForResult(Url, false, TimeOut); resultBuilder.BasicValidate(); UnifiedOrderResult result = new UnifiedOrderResult(resultBuilder); return(result); }
public async Task <string> JSAPIPay(UnifiedOrderParam param) { param.TradeType = "JSAPI"; var result = await UnifiedOrder(param); if (result.ReturnCode == "SUCCESS" && result.ResultCode == "SUCCESS") { return(result.CodeUrl); } return(string.Empty); }
private void SetParams(UnifiedOrderParam param) { SetParam("body", param.Body); SetParam("attach", param.Attach); SetParam("out_trade_no", param.Out_trade_no); SetParam("total_fee", param.Total_fee); SetParam("spbill_create_ip", param.Spbill_create_ip); SetParam("time_start", param.Time_start); SetParam("time_expire", param.Time_expire); SetParam("goods_tag", param.Goods_tag); SetParam("notify_url", PaymentConfig.Instance.NOTIFY_URL); SetParam("trade_type", param.Trade_type); SetParam("openid", param.OpenId); SetParam("product_id", param.Product_id); SetParam("appId", param.AppId); }
/// <summary> /// 提交到微信,返回二维码的URL,通过二维码工具解析它 /// </summary> /// <param name="orderid">订单号</param> /// <param name="vMoney">单位:分</param> /// <param name="userID">用户ID</param> /// <param name="product_id">产品ID</param> /// <returns></returns> public string RechargeTo(string orderid, decimal vMoney, int userID, string product_id = "") { var totalfee = (int)vMoney; string strImaUrl = string.Empty; Dictionary <string, string> dictReturnParams = new Dictionary <string, string>(); try { WxPayClient client = GetWxPayClient(); UnifiedOrderParam unifiedOrderParam = new UnifiedOrderParam() { Body = "微信支付", Out_trade_no = orderid, Total_fee = totalfee, Spbill_create_ip = "", Time_start = DateTime.Now.ToString("yyyyMMddHHmmss"), Time_expire = DateTime.Now.AddMinutes(30).ToString("yyyyMMddHHmmss"), Trade_type = TradeType.NATIVE, Product_id = product_id }; UnifiedOrderResult result = client.CreateUnifiedOrder(unifiedOrderParam); if (result.Success) { dictReturnParams.Add("CodeUrl", result.Code_Url); dictReturnParams.Add("PrepayId", result.Prepay_Id); strImaUrl = result.Code_Url; } else { dictReturnParams.Add("Error", result.ErrorMessage); } } catch (Exception ex) { dictReturnParams.Add("Error", ex.Message); } return(strImaUrl); }
/// <summary> /// 创建支付订单 /// </summary> /// <param name="param"></param> /// <returns></returns> public UnifiedOrderResult CreateUnifiedOrder(UnifiedOrderParam param) { UnifiedOrderClient unifiedOrder = new UnifiedOrderClient(); return(unifiedOrder.PostXml(param)); }
public string TestToShowOrderRequestXml(UnifiedOrderParam param) { UnifiedOrderClient unifiedOrder = new UnifiedOrderClient(); return(unifiedOrder.TestToShowXml(param)); }