/// <summary> /// 微信统一下单 /// </summary> /// <param name="requestModel">请求数据</param> /// <returns></returns> public UnifiedOrderResponseModel UnifiedOrder(UnifiedOrderModel requestModel) { UnifiedOrderResponseModel response = ServiceUtil.WxPayClient.UnifiedOrder(requestModel); ServiceUtil.AliPayClient.Close(); return(response); }
public virtual async Task <dynamic> UnifiedOrderAsync(UnifiedOrderModel unifiedOrderModel) { var xml = unifiedOrderModel.XML; var response = await _httpRepository.PostParseValidateAsync(CONSTANT.UNIFIEDORDERURL, xml, "prepay_id"); return(response); }
public virtual async Task <string> GetJsApiScriptAsync(string out_trade_no, string body, double total_fee, string openid, string notify_url) { JsApiModel jsApiModel = new JsApiModel(_options.Value); var unifiedOrderModel = new UnifiedOrderModel(_options.Value); unifiedOrderModel.out_trade_no = out_trade_no; unifiedOrderModel.body = body; unifiedOrderModel.total_fee = total_fee; unifiedOrderModel.openid = openid; unifiedOrderModel.trade_type = TradeType.JSAPI.ToString(); unifiedOrderModel.notify_url = notify_url; var unifiedOrderResult = await UnifiedOrderAsync(unifiedOrderModel); var package = "prepay_id=" + unifiedOrderResult.prepay_id; jsApiModel.package = package; var scriptWeixinJSBridge = @" function onBridgeReady() {{ WeixinJSBridge.invoke( 'getBrandWCPayRequest', {0}, function (res) {{ WeixinJSBridge.log(res.err_msg); }} ); }} if (typeof WeixinJSBridge == 'undefined'){{ if (document.addEventListener) {{ document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false); }} else if (document.attachEvent) {{ document.attachEvent('WeixinJSBridgeReady', onBridgeReady); document.attachEvent('onWeixinJSBridgeReady', onBridgeReady); }} }} else{{ onBridgeReady(); }}"; var script = string.Format(scriptWeixinJSBridge, jsApiModel.JSON); return(script); }
public virtual async Task <dynamic> RunH5PayAsync(H5PayModel h5PayModel) { var unifiedOrderModel = new UnifiedOrderModel(_options.Value); unifiedOrderModel.out_trade_no = h5PayModel.out_trade_no; unifiedOrderModel.body = h5PayModel.body; unifiedOrderModel.total_fee = h5PayModel.total_fee; unifiedOrderModel.trade_type = TradeType.MWEB.ToString(); unifiedOrderModel.notify_url = h5PayModel.notify_url; unifiedOrderModel.spbill_create_ip = h5PayModel.spbill_create_ip; unifiedOrderModel.scene_info = new ExpandoObject(); unifiedOrderModel.scene_info.h5_info = h5PayModel.h5_info; var unifiedOrderResult = await UnifiedOrderAsync(unifiedOrderModel); return(unifiedOrderResult); }
public string getPrepay_id(UnifiedOrderModel order, string key) { string prepay_id = ""; string post_data = getUnifiedOrderXml(order, key); string request_data = PostXmlToUrl(UnifiedPayUrl, post_data); SortedDictionary <string, string> requestXML = GetInfoFromXml(request_data); foreach (KeyValuePair <string, string> k in requestXML) { if (k.Key == "prepay_id") { prepay_id = k.Value; break; } } return(prepay_id); }
public virtual async Task <dynamic> RunMiniPayAsync(string out_trade_no, string openid, string body, double total_fee, string spbill_create_ip, string notify_url) { var unifiedOrderModel = new UnifiedOrderModel(_options.Value); unifiedOrderModel.out_trade_no = out_trade_no; unifiedOrderModel.body = body; unifiedOrderModel.total_fee = total_fee; unifiedOrderModel.trade_type = TradeType.JSAPI.ToString(); unifiedOrderModel.spbill_create_ip = spbill_create_ip; unifiedOrderModel.openid = openid; unifiedOrderModel.notify_url = notify_url; var unifiedOrderResult = await UnifiedOrderAsync(unifiedOrderModel); MiniPayModel miniPayModel = new MiniPayModel(_options.Value); miniPayModel.package = $"prepay_id={unifiedOrderResult.prepay_id}"; return(miniPayModel.Parameters.ToDynamic()); }
/// <summary> /// 微信统一下单接口xml参数整理 /// </summary> /// <param name="order">微信支付参数实例</param> /// <param name="key">密钥</param> /// <returns></returns> protected string getUnifiedOrderXml(UnifiedOrderModel order, string key) { string return_string = string.Empty; SortedDictionary <string, string> sParams = new SortedDictionary <string, string>(); sParams.Add("appid", order.appid); sParams.Add("attach", order.attach); sParams.Add("body", order.body); sParams.Add("device_info", order.device_info); sParams.Add("mch_id", order.mch_id); sParams.Add("nonce_str", order.nonce_str); sParams.Add("notify_url", order.notify_url); sParams.Add("openid", order.openid); sParams.Add("out_trade_no", order.out_trade_no); sParams.Add("spbill_create_ip", order.spbill_create_ip); sParams.Add("total_fee", order.total_fee.ToString()); sParams.Add("trade_type", order.trade_type); order.sign = getsign(sParams, key); sParams.Add("sign", order.sign); //拼接成XML请求数据 StringBuilder sbPay = new StringBuilder(); foreach (KeyValuePair <string, string> k in sParams) { if (k.Key == "attach" || k.Key == "body" || k.Key == "sign") { sbPay.Append("<" + k.Key + "><![CDATA[" + k.Value + "]]></" + k.Key + ">"); } else { sbPay.Append("<" + k.Key + ">" + k.Value + "</" + k.Key + ">"); } } return_string = string.Format("<xml>{0}</xml>", sbPay.ToString()); byte[] byteArray = Encoding.UTF8.GetBytes(return_string); return_string = Encoding.GetEncoding("GBK").GetString(byteArray); return(return_string); }
public virtual async Task <string> GetPayUrl(string out_trade_no, string body, double total_fee, string notify_url) { var unifiedOrderModel = new UnifiedOrderModel(_options.Value); unifiedOrderModel.out_trade_no = out_trade_no; unifiedOrderModel.product_id = out_trade_no; unifiedOrderModel.body = body; unifiedOrderModel.total_fee = total_fee; unifiedOrderModel.trade_type = TradeType.NATIVE.ToString(); unifiedOrderModel.notify_url = notify_url; unifiedOrderModel.time_start = DateTime.Now.ToString("yyyyMMddHHmmss"); unifiedOrderModel.time_expire = DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"); unifiedOrderModel.spbill_create_ip = ""; //非必填字段 //payModel.attach = attach; //payModel.goods_tag = goods_tag; var result = await UnifiedOrderAsync(unifiedOrderModel); string url = result.code_url.ToString();//获得统一下单接口返回的二维码链接 return(url); }
/// <summary> /// 统一下单接口 /// </summary> /// <param name="unifiedorderModel">请求参数</param> /// <returns></returns> public static UnifiedOrderResponseModel UnifiedOrder(UnifiedOrderModel unifiedorderModel) { UnifiedOrderResponseModel response = new UnifiedOrderResponseModel(); WxPayData data = new WxPayData(); data.SetValue("body", unifiedorderModel.body); //商品描述 data.SetValue("attach", unifiedorderModel.attach); //附加数据 data.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo()); //随机字符串 data.SetValue("total_fee", unifiedorderModel.total_fee); //总金额 data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss")); //交易起始时间 data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss")); //交易结束时间 data.SetValue("goods_tag", unifiedorderModel.goods_tag); //商品标记 data.SetValue("trade_type", unifiedorderModel.trade_type); //交易类型 data.SetValue("product_id", unifiedorderModel.product_id); //商品ID LogUtil.WriteWxpayLog("统一下单请求", "请求参数", data.ToJson()); WxPayData result = WxPayApi.UnifiedOrder(data); //调用统一下单接口 string resultStr = result.ToJson(); LogUtil.WriteWxpayLog("统一下单响应", "响应参数", resultStr); response = LitJson.JsonMapper.ToObject <UnifiedOrderResponseModel>(resultStr); response.out_trade_no = response.out_trade_no ?? data.GetValue("out_trade_no").ToString(); return(response); //Log.Info(this.GetType().ToString(), "Get native pay mode 2 url : " + url); }
public UnifiedOrderResponseModel UnifiedOrder(UnifiedOrderModel requestModel) { return(WxPayUtil.UnifiedOrder(requestModel)); }
public UnifiedOrderResponseModel UnifiedOrder(UnifiedOrderModel requestModel) { return(base.Channel.UnifiedOrder(requestModel)); }