支付宝支付成功后通知在微信打开的提示页面

摘要:
在PC端使用微信扫码支付后,页面会跳转。1.支付宝支付完成2。支付宝将请求您设置的通知_ Url3。在此方法中,跳转到付款成功页面。5.用户返回微信后,首先下载官方演示:notify method//Business logic//notify the client varcontext=GlobalHost。ConnectionManager。GetHubContext<

背景

正常情况下,在微信浏览器使用支付宝支付,会出现一大坨链接,让你手动的复制到浏览器打开去操作。

这样的用户体验,别说用户,就连没有审美的程序员也不能忍的。

于是阿力饼饼给出了方案,倒不是解决跳转的问题,只是把那个不友好的提示,通过判断,给出已给相对友好的提示。

在园友的文章:腾腾流氓,云云更流氓(问微信怎样接入支付宝支付),手贱的赶紧点,你会感谢我的 里,有详细的介绍。

等到你在浏览器里支付完成之后(如果有唤起支付宝APP,那么将在APP里支付),手动的关闭浏览器,回到微信。

这个时候,你会发现,微信上还是那个友好的提示页面。

关于这个问题,原文中也给出了办法:

首先呢,在pay方法中添加一个参数,可以为orderid,然后同加密后的url一起跳转到pay.htm,再然后,在pay.htm页面中获取到orderid,写个定时器,每隔几秒中去服务器查询订单的支付状态,如果支付成功了,就跳转到支付成功的页面。用户再返回微信的时候看到的就不会是“快到碗里来”的提示了。

这是个办法,这个办法同样的适用于,在PC端使用微信扫码支付后页面的跳转。见:https://www.zhihu.com/question/30355733

关于消息推送,可以看这篇文章获取更多信息:WebSocket与消息推送。文章中提到了SignalR:

SignalR是一个ASP .NET下的类库,可以在ASP .NET的Web项目中实现实时通信。在Web网页与服务器端间建立Socket连接,当WebSockets可用时(即浏览器支持Html5)SignalR使用WebSockets,当不支持时SignalR将使用长轮询来保证达到相同效果。
官网:http://signalr.net/
源码:https://github.com/SignalR/SignalR

思路

那我们就尝试使用SignalR解决此问题,解决思路如下:

1.支付宝支付完成

2.支付宝会请求你设置的notify_url

3.在此方法中,处理你的业务逻辑,处理成功,则通知在微信里的提示页面

4.页面获取到通知信息,跳转到支付成功页面

5.等用户返回微信后,看到的就是支付成功页面了。

实现

首先我们下载官方demo:Tutorial: Getting Started with SignalR 2

是一个网页聊天的例子,我们加以改造。

新建hub类:

    public class TestHub : Hub
    {

    }

控制器代码:

  public class TestController : Controller
    {
        public void CallBack()
        {
            //模拟支付宝支付成功后,notify方法
            //业务逻辑......
            //通知客户端
            var context = GlobalHost.ConnectionManager.GetHubContext<TestHub>();
            context.Clients.All.addNewMessageToPage("ok");
        }

        public ActionResult Default()
        {
            return View();
        }
    }

View页面代码:

@{
    ViewBag.Title = "SignalR";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<link rel="stylesheet" href="/Theme/Css/Login.css">
<div class="main">
    接收到服务端的通知,我就跳转至博客园
</div>

<script src="~/Theme/Js/jquery.signalR-2.0.3.min.js"></script>
<script src="~/signalr/hubs"></script>
<script>
    $(function () {
        // Reference the auto-generated proxy for the hub.
        var chat = $.connection.chatHub;

        // Create a function that the hub can call back to display messages.
        chat.client.addNewMessageToPage = function (str) {
            //服务器返回
            if (str == "ok") {
                window.location.href = "https://www.cnblogs.com/";
            }
        };

        $.connection.hub.start().done(function () {
            //chat.server.send("ok");
        });
    });
</script>

这样的话,我们微信打开/Test/Default页面,再访问/Test/CallBack,就会发现/Test/Default页面跳转到博客园了。

(完)

免责声明:文章转载自《支付宝支付成功后通知在微信打开的提示页面》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用go自带的http包搭建一个的web服务器Vue|分页处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

十一、JSP及语法概要 (基础教程11)

十一、JSP及语法概要   作 者 : 仙人掌工作室            11.1 概述         JavaServer Pages(JSP)使得我们能够分离页面的静态HTML和动态部分。HTML可以用任何通常使用的Web制作工具编写,编写方式也和原来的一样;动态部分的代码放入特殊标记之内,大部分以“<%”开始,以“%>”结束。例如,下面是一个JSP...

防盗链原理

昨天去参加一个面试,面试官上来就问“知道防盗链吗?它是怎么实现的?”。当时立刻傻了,防盗链是什么东东? 百度百科对防盗链的定义是 此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容。 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址(比如一些音乐、图片、软件的下载地址)然后放置...

多个iframe的刷新问题

我们的系统有个公用的弹出框,弹出框html结构是在顶层页面里的。一般弹出框里的内容,单独做个页面,嵌入iframe里面。就可以在弹出框里显示要显示的内容。但是出现一个问题是,有时候弹出框里的操作不是单一的,就像这次的操作。在弹出框里有个分拣操作,这个操作力选中目标文件夹的时候又有一个新建文件夹的操作。选择新建文件夹-新建文件夹成功后,还需要返回到分拣操作的...

支付宝回调

1 //这个是支付宝回调的信息 2 @RequestMapping("alipay_callback.do") 3 @ResponseBody 4 publicObject alipayCallback(HttpServletRequest request){ 5 Map<String,String> p...

CSS选择器命名及常用命名

CSS选择器命名及常用命名CSS选择器命名及常用命名 规范的命名也是Web标准中的重要一项,标准的命名可以使代码更加易读,而且利于搜索引擎搜索,比如定义了两个div,一个 id 命名为“div1”,另外一个命名为“News”,肯定第二个比较易读,而且搜索引擎抓取率要高,在团队合作中还可以大大提高工作效率。为了达到这种效果我们就要规范化命名(语义化命名)!...

C#:总结页面传值几种方法

 小知识点: 1.  W7自带 .NetFrameWork 3.5, 兼容模式为 高版本号兼容低版本号; 2. WF和WPF都是基于XAML的,可是两者的用途不同。 WF是一种开发框架,将工作流嵌入在.NET Framework应用程序中,所主要用于开发创建工作流应用程序。WF:http://msdn.microsoft.com/zh-cn/librar...