中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

微信JSApi支付(fu)~微信支付(fu)代理模式的實現(原(yuan)創(chuang))

返回目錄

起因(大叔原創)

對(dui)于微信(xin)支(zhi)付來說(shuo)(shuo),你的發(fa)起者(zhe)(zhe)需(xu)要配(pei)置對(dui)應的域(yu)名來獲取code(獲取用(yong)戶信(xin)息接(jie)(jie)口),而這(zhe)意(yi)味著,你的多個(ge)(ge)項目(mu)(mu)(域(yu)名不同(tong))不能(neng)同(tong)時(shi)使用(yong)一個(ge)(ge)公眾(zhong)(zhong)號,這(zhe)是一件(jian)很操蛋(dan)的事,對(dui)于我(wo)(wo)們(men)(men)開發(fa)人員來說(shuo)(shuo),當然不能(neng)接(jie)(jie)受,我(wo)(wo)們(men)(men)需(xu)要一種代(dai)理模(mo)式,代(dai)我(wo)(wo)們(men)(men)實現多個(ge)(ge)項目(mu)(mu)使用(yong)一個(ge)(ge)公眾(zhong)(zhong)號(一個(ge)(ge)支(zhi)付的域(yu)名),這(zhe)是必須的,說(shuo)(shuo)做(zuo)就做(zuo)。(支(zhi)付發(fa)起者(zhe)(zhe)可以多個(ge)(ge)域(yu)名,最多三個(ge)(ge),就是我(wo)(wo)們(men)(men)說(shuo)(shuo)的權限目(mu)(mu)錄那塊)

原理

開始-》

第三方網站重定向在代理服務器-》

代理服務器跳到微信服務器拿code-》

返回 code到代理服務器-》

代理服務器再發跳到微信服務器拿 openid和token-》

返回openid和token到代理服務器-》

當openid不為空時跳回第三方網站服務器-》

由第三方服務的支付完成最后的付款過程-》

結果

思維圖像

實現

#region 代理模式
        /// <summary>
        /// 微信(xin)支付
        /// 從(cong)代理服務器(qi)獲(huo)取openID
        /// 注(zhu)意:代理(li)服務器(qi)與本服務器(qi)需要有預定,雙方要告(gao)訴對應的URL地址(zhi),用(yong)來進行二次跳轉
        /// </summary>
        /// <returns></returns>
        public ActionResult Weixin()
        {
            string openId = Request.QueryString["openId"];
            if (string.IsNullOrWhiteSpace(openId))
            {
                //第一次加(jia)載頁面,跳轉(zhuan)到代(dai)理服務器獲openid
                Logger.LoggerFactory.Instance.Logger_Info("openid為空");
                Response.Redirect("//m.xxx.cn/order/GetOpenId");

            }
            else
            {
                //由(you)代理服務器(qi)跳回來后,得到(dao)本用戶的openId
                Logger.LoggerFactory.Instance.Logger_Info("從m158拿到openid:" + openId);
                ViewBag.openId = openId;
            }
            return View();
        }

        /// <summary>
        /// 微信支付的代理(li)服務
        /// </summary>
        /// <returns></returns>
        public void WeixinProxy()
        {
            string openId = JsApiImplement.GetOpenId();//獲取當(dang)前openId
            string bussinessUrl = "";//業務網站支付地址
            if (!string.IsNullOrWhiteSpace(openId))
                Redirect(bussinessUrl + "?openId=" + openId);
        }
        /// <summary>
        /// 獲取支付JSON串
        /// </summary>
        /// <param name="orderId"></param>
        /// <param name="money"></param>
        /// <param name="openId"></param>
        /// <returns></returns>
        public string GetPayJson(string orderId, int money, string openId)
        {
            try
            {
                Logger.LoggerFactory.Instance.Logger_Info("發(fa)送訂單(dan)號=" + orderId + ",openID=" + openId);
                //JsApiImplement.GetOpenId();加到主頁(ye)面上
                return JsApiImplement.Send(money, orderId, openId);

            }
            catch (Exception ex)
            {

                Logger.LoggerFactory.Instance.Logger_Error(ex);
                return "出錯了";
            }

        }
#endregion

在測試過程(cheng)(cheng)中出現過一些問題,然后通(tong)過日志分析解決(jue)了,感覺在oauth權限過程(cheng)(cheng)中,頁面重(zhong)定(ding)向(xiang)成為(wei)了唯一的(de)方(fang)式,以后這種方(fang)式我們(men)應該在自己的(de)項目(mu)中多(duo)多(duo)使用!

感謝這個坑很多(duo)的微信!

沒(mei)有你(ni)的(de)坑,我(wo)們也不會學到(dao)這么(me)多知識!

返回目錄

posted @ 2016-05-13 11:06  張占嶺  閱讀(4308)  評論(4)    收藏  舉報