返回目录

起因(大叔原创)

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

原理

开始-》

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

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

返回 code到代理服务器-》

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

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

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

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

结果

思维图像

实现

#region 代理模式/// <summary>/// 微信支付/// 从代理服务器获取openID/// 注意:代理服务器与本服务器需要有预定,双方要告诉对应的URL地址,用来进行二次跳转/// </summary>/// <returns></returns>public ActionResult Weixin(){string openId = Request.QueryString["openId"];if (string.IsNullOrWhiteSpace(openId)){//第一次加载页面,跳转到代理服务器获openidLogger.LoggerFactory.Instance.Logger_Info("openid为空");Response.Redirect("http://m.xxx.cn/order/GetOpenId");}else{//由代理服务器跳回来后,得到本用户的openIdLogger.LoggerFactory.Instance.Logger_Info("从m158拿到openid:" + openId);ViewBag.openId = openId;}return View();}/// <summary>/// 微信支付的代理服务/// </summary>/// <returns></returns>public void WeixinProxy(){string openId = JsApiImplement.GetOpenId();//获取当前openIdstring 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("发送订单号=" + orderId + ",openID=" + openId);//JsApiImplement.GetOpenId();加到主页面上return JsApiImplement.Send(money, orderId, openId);}catch (Exception ex){Logger.LoggerFactory.Instance.Logger_Error(ex);return "出错了";}}
#endregion

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

感谢这个坑很多的微信!

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

返回目录

转载于:https://www.cnblogs.com/lori/p/5488675.html

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

  1. 微信jsapi支付获取code_微信JSAPI公众号支付在部分机型上出现appid参数错误的解决办法 - YangJunwei...

    都说微信支付的坑比较多,老杨感觉还行,就是开始周期和调试过程比较费时费力-_-! 今儿在调试一个基于微信JSAPI公众号的支付项目时发现,部分机型(比如iphone7/vivo-x6d)中微信支付获取 ...

  2. php 公众号内h5支付宝支付宝支付宝支付宝支付,微信浏览器中支付宝wap支付和微信JSAPI公众号支付...

    手机浏览器只有支付宝wap支付,微信浏览器中出现支付宝wap支付和微信JSAPI公众号支付,其中支付宝wap在线支付没有在新窗口打开(兼容大部分手机),Thinkphp3.2公众号支付 下载资源 下载 ...

  3. 微信jsApI及微信分享对应在手机浏览器的调用总结。

    摘录自别人的博客: 第一篇:微信内置浏览器的JsAPI(WeixinJSBridge续) 之前有写过几篇关于微信内置浏览器(WebView)中特有的Javascript API(Javascript ...

  4. 微信支付回调页面html,微信JSAPI支付成功后获取回调数据

    微信JSAPI公众号支付是素材火群主提供的,支付成功后跳转到订单详情页,里面是微信支付成功后回调的数据,由第三方微信支付平台定时请求获取. 下载资源 下载积分: 780 积分 回调地址notify.p ...

  5. 微信公众号开发笔记(三):微信JSAPI支付功能开发

    很久之前做了微信支付,其中也趟过很多坑,现在有时间就做个自我梳理吧算是. 公众号开发的基本配置(不明白的可以参考https://blog.csdn.net/TOP__ONE/article/detai ...

  6. 微信开发(一):用JSAPI做微信支付+微信卡包(代金券)

    做微信支付前期准备: 1,服务好开通微信支付. 2,公众账号ID:AppId. 3,公众账号密钥:AppSecret. 4,微信支付密钥:Key. 第一步:获取用户信息并跳转到需要微信支付的页面 pu ...

  7. php微信jsapi支付小结,ThinkPHP接入微信支付 - JSAPI支付

    一.支付准备 二.获取用户openid 首先,到微信公众平台后台 - 设置 - 网页授权域名(别忘了添加开发者) // 在头部引入WechatPubService.php文件,见附录一 use app ...

  8. 微信Jsapi支付实战踩坑

    准备 需求 需求就是最简单的对接微信网页支付接口 方案心路历程 一开始是对接的H5,后面才发现H5支付是一定要在微信环境外才可以调用并跳转支付的 这是H5支付对接实操过程 下面称为P1 上文H5支付对 ...

  9. Python实现微信支付(Jsapi和微信扫码)

    Python实现微信支付 一.准备环境 1.要有微信公众号,商户平台账号 https://pay.weixin.qq.com/wiki/doc/api/index.html 一.扫码支付 点击&quo ...

最新文章

  1. IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  2. MySQL面试题 | 附答案解析(十六)
  3. Codeforces 460E Roland and Rose(暴力)
  4. CSharpGL(28)得到高精度可定制字形贴图的极简方法
  5. excel导入mysql语句_求助:用SQL语句从Excel将数据导入到SQL数据库
  6. python: 判断字符串是否为合法的json格式
  7. 谷歌上线数据搜索引擎 Dataset Search
  8. 解决由于sz rz导致抓包时文件容量增加
  9. Python标准库中的glob
  10. 大数据数据挖掘与云计算-认识大数据
  11. “APP故障门”频出,移动应用开发到底应该怎么做?
  12. 模重复平方计算法的C实现
  13. constrain用法_constrain是什么意思_constrain的翻译_音标_读音_用法_例句_爱词霸在线词典...
  14. UE4-如何做一个简单的TPS角色(一)-创建一个基础角色
  15. EXCEL多页打印保留表头
  16. 招生难、管理难!教育如何实现零流失、高增长?教育行业如何玩转“私域流量”?...
  17. ERP与PDM集成基本原理
  18. 10.Java面向对象进阶2
  19. 华为设备命令与用户级别
  20. 解决navicat 连接数据库隔段时间后自动断开连接问题

热门文章

  1. [WC2018]通道——边分治+虚树+树形DP
  2. 怎样查找this的指向
  3. Android开发——内存优化 图片处理
  4. Windows 8.1内置微软五笔输入法
  5. java实现泛型顺序栈
  6. 正确使用stl vecotr erase函数
  7. Nginx相关基础配置详解
  8. mysql利用CPU多核
  9. 提高你的Java代码质量吧:让我们疑惑的字符串拼接方式的选择
  10. SQL SERVER 2008的元数据视图