コード例 #1
0
ファイル: SelfServiceEquipment.cs プロジェクト: ghbylmt/LsPay
        /// <summary>
        /// 微信统一下单
        /// </summary>
        /// <param name="requestModel">请求数据</param>
        /// <returns></returns>
        public UnifiedOrderResponseModel UnifiedOrder(UnifiedOrderModel requestModel)
        {
            UnifiedOrderResponseModel response = ServiceUtil.WxPayClient.UnifiedOrder(requestModel);

            ServiceUtil.AliPayClient.Close();
            return(response);
        }
コード例 #2
0
        public virtual async Task <dynamic> UnifiedOrderAsync(UnifiedOrderModel unifiedOrderModel)
        {
            var xml      = unifiedOrderModel.XML;
            var response = await _httpRepository.PostParseValidateAsync(CONSTANT.UNIFIEDORDERURL, xml, "prepay_id");

            return(response);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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());
        }
コード例 #7
0
        /// <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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        /// <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);
        }
コード例 #10
0
 public UnifiedOrderResponseModel UnifiedOrder(UnifiedOrderModel requestModel)
 {
     return(WxPayUtil.UnifiedOrder(requestModel));
 }
コード例 #11
0
ファイル: WxPayClient.cs プロジェクト: ghbylmt/LsPay
 public UnifiedOrderResponseModel UnifiedOrder(UnifiedOrderModel requestModel)
 {
     return(base.Channel.UnifiedOrder(requestModel));
 }