Cet article présente principalement en détail les informations pertinentes sur la façon d'utiliser SignalR pour envoyer des notifications de saut de page. Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer
WeChat Mall utilise Alipay pour payer. la transaction est terminée, il doit y avoir une page de transition pour inviter l'utilisateur à ouvrir la page avec un navigateur pour payer, puis à ouvrir WeChat une fois que l'utilisateur a terminé le paiement dans le navigateur (WeChat affiche toujours la page de transition à ce moment) , et la page de transition doit passer à la page des détails de la commande. Alors, comment cette page excessive sait-elle qu’elle doit sauter ?
Ce à quoi je peux penser maintenant, c'est d'utiliser SigbalR pour envoyer une notification pour indiquer à la page de transition de sauter.
La première étape consiste à ajouter d'abord la DLL liée à SigbalR .
La deuxième étape, personnalisez le hub
public class myHub:Hub { public override Task OnConnected() { return base.OnConnected(); } }
La troisième étape, personnalisez le UserIdProvider, car nous devons envoyer un jump notification à l'utilisateur spécifié
public class CustomerUserIdProvider: IUserIdProvider { public string GetUserId(IRequest request) { //获取当前登录用户 var customer = EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer; if(customer==null) { return ""; }else { //返回当前登录用户id return customer.Id.ToString(); } } }
Étape 4, enregistrez notre UserIdProvider personnalisé au démarrage
//SignlR var idProvider = new CustomerUserIdProvider(); GlobalHost.DependencyResolver.Register(typeof(IUserIdProvider), () => idProvider); app.MapSignalR();
Étape 5, effectuez le paiement asynchrone dans Alipay, ajoutez cette ligne de code à la notification pour envoyer la notification et transmettez le paramètre du numéro de commande. Ici, une notification est envoyée à l'utilisateur qui a commandé l'ID client. L'ID client de la commande est le même que l'ID de la connexion actuelle. Ainsi, les informations peuvent être reçues.
var myHub = GlobalHost.ConnectionManager.GetHubContext<myHub>(); myHub.Clients.User(order.OrderCustomerId.ToString()).redirctOrderDetails(order.OrderNumber);
Étape 6, acceptez et exécutez sur la page de transition
// 声明一个代理引用该集线器,记得$.connection.后面的方法首字母必须要小写,这也是我为什么使用别名的原因 var chat = $.connection.chinookHub; // 这里是注册集线器调用的方法,和1.0不同的是需要chat.client后注册,1.0则不需要 chat.client.redirctOrderDetails = function (oerderNumber) { window.location.href = "/Customer/MyOrderDetails?page=4&orderNumber=" + oerderNumber; }; chat.client.redirctMoneyAccountDetail = function () { window.location.href = "/Customer/AccountDetail/Money"; }; // 启动连接 $.connection.hub.start();
De cette façon, vous pouvez parfaitement réaliser le saut de page une fois le paiement terminé . Je ne peux pas penser à une meilleure façon pour le moment.
【Recommandations associées】
1. Tutoriel vidéo gratuit ASP.NET
3.Tutoriel vidéo ASP.NET de la Geek Academy
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!