SignalR envoie une notification de saut de page

高洛峰
Libérer: 2017-02-28 15:26:57
original
1495 Les gens l'ont consulté

Lorsque vous utilisez Alipay pour payer dans le centre commercial WeChat, 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 est toujours affiche la page de transition à ce moment), excessif La page 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 est d'ajouter SigbalR dll associée en premier.

La deuxième étape, personnaliser le hub

 public class myHub:Hub
 {
  public override Task OnConnected()
  {
   return base.OnConnected();
  }
 }
Copier après la connexion

La troisième étape , personnalisez UserIdProvider, car nous devons envoyer une notification de saut à 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();
   }
  }
 }
Copier après la connexion

Étape 4, inscrivez-vous nous au démarrage Le UserIdProvider défini

//SignlR
 var idProvider = new CustomerUserIdProvider();
GlobalHost.DependencyResolver.Register(typeof(IUserIdProvider), () => idProvider);
app.MapSignalR();
Copier après la connexion

Étape 5, ajoutez cette ligne de code pour envoyer la notification lorsque le paiement Alipay est terminé de manière asynchrone et passez Entrez 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);
Copier après la connexion

Étape 6, accepter l'exécution 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();
Copier après la connexion

De cette façon, vous pouvez parfaitement réaliser le saut de page une fois le paiement effectué. Je ne peux pas penser à une meilleure façon pour le moment.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. J'espère également que tout le monde soutiendra le site Web PHP chinois.

Pour plus d'articles liés à l'envoi de notifications de saut de page par SignalR, veuillez faire attention au site Web PHP chinois !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal