ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 软件工程 >> 微信JSApi支付~微信支付代理模式的实现(原创)

微信JSApi支付~微信支付代理模式的实现(原创)

来源:网络整理     时间:2016-05-13     关键词:微信支付,sap

本篇文章主要介绍了"微信JSApi支付~微信支付代理模式的实现(原创)",主要涉及到微信支付,sap方面的内容,对于软件工程感兴趣的同学可以参考一下: 返回目录起因(大叔原创)对于微信支付来说,你的发起者需要配置对应的域名来获取code(获取用户信息接口),而这意味着,你的多个项目(域名不同)不能同时使用一个公...

返回目录

起因(大叔原创)

对于微信支付来说,你的发起者需要配置对应的域名来获取code(获取用户信息接口),而这意味着,你的多个项目(域名不同)不能同时使用一个公众号,这是一件很操蛋的事,对于我们开发人员来说,当然不能接受,我们需要一种代理模式,代我们实现多个项目使用一个公众号(一个支付的域名),这是必须的,说做就做。(支付发起者可以多个域名,最多三个,就是我们说的权限目录那块)

原理

开始-》

第三方网站重定向在代理服务器-》

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

返回 code到代理服务器-》

代理服务器再发跳到微信服务器拿 openid和token-》

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

当openid不为空时跳回第三方网站服务器-》

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

结果

思维图像

sap剩余支付操作,sap系统的支付流程图,sap 支付方式,sap 微信接口,微信 sap 集成,微信支付,微信支付接口开发,微信支付官网,微信支付商户平

实现

#region 代理模式
        ////// 微信支付
        /// 从代理服务器获取openID
        /// 注意:代理服务器与本服务器需要有预定,双方要告诉对应的URL地址,用来进行二次跳转
        //////public ActionResult Weixin()
        {
            string openId = Request.QueryString["openId"];
            if (string.IsNullOrWhiteSpace(openId))
            {
                //第一次加载页面,跳转到代理服务器获openid                Logger.LoggerFactory.Instance.Logger_Info("openid为空");
                Response.Redirect("http://m.158.cn/order/GetOpenId");

            }
            else            {
                //由代理服务器跳回来后,得到本用户的openId                Logger.LoggerFactory.Instance.Logger_Info("从m158拿到openid:" + openId);
                ViewBag.openId = openId;
            }
            return View();
        }

        ////// 微信支付的代理服务
        //////publicvoid WeixinProxy()
        {
            string openId = JsApiImplement.GetOpenId();//获取当前openIdstring bussinessUrl = "";//业务网站支付地址if (!string.IsNullOrWhiteSpace(openId))
                Redirect(bussinessUrl + "?openId=" + openId);
        }
        ////// 获取支付JSON串
        ///////////////publicstring GetPayJson(string orderId, int money, string openId)
        {
            try            {
                Logger.LoggerFactory.Instance.Logger_Info("发送订单号=" + orderId + ",openID=" + openId);
                //JsApiImplement.GetOpenId();加到主页面上return JsApiImplement.Send(money, orderId, openId);

            }
            catch (Exception ex)
            {

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

        }
#endregion

在测试过程中出现过一些问题,然后通过日志分析解决了,感觉在oauth权限过程中,页面重定向成为了唯一的方式,以后这种方式我们应该在自己的项目中多多使用!

感谢这个坑很多的微信!

没有你的坑,我们也不会学到这么多知识!

返回目录

以上就介绍了微信JSApi支付~微信支付代理模式的实现(原创),包括了微信支付,sap方面的内容,希望对软件工程有兴趣的朋友有所帮助。

本文网址链接:http://www.codes51.com/article/detail_1046712.html

相关图片

相关文章