이 글에서는 SignalR을 사용하여 페이지 이동 알림을 보내는 방법에 대한 관련 정보를 주로 소개합니다. 관심 있는 친구가 참고할 수 있습니다.
WeChat Mall에서 결제할 때. 거래가 완료되면 사용자에게 브라우저로 결제할 페이지를 열도록 요청하는 전환 페이지가 있어야 하며, 사용자가 브라우저에서 결제를 완료한 후 WeChat을 열어야 합니다(현재 WeChat은 여전히 전환 페이지를 표시합니다). , 전환 페이지는 주문 세부정보 페이지로 이동해야 합니다. 그러면 이 과도한 페이지가 점프해야 한다는 것을 어떻게 알 수 있을까요?
지금 생각나는 것은 SigbalR을 사용하여 전환 페이지가 점프하도록 알림을 보내는 것입니다.
첫 번째 단계는 먼저 SigbalR 관련 dll을 추가하는 것입니다. .
두 번째 단계, 허브 사용자 정의
public class myHub:Hub { public override Task OnConnected() { return base.OnConnected(); } }
세 번째 단계, UserIdProvider를 사용자 정의합니다. 지정된 사용자
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(); } } }
네 번째 단계, 시작 시 사용자 정의된 UserIdProvider를 등록
//SignlR var idProvider = new CustomerUserIdProvider(); GlobalHost.DependencyResolver.Register(typeof(IUserIdProvider), () => idProvider); app.MapSignalR();
다섯 번째 단계, 이 코드 줄을 비동기 Alipay 결제 완료 알림 알림을 보내고 주문 번호 매개변수를 전달합니다. 여기에서 주문한 사용자에게 알림이 전송됩니다. customerid는 현재 로그인 ID와 동일합니다. 그래야 정보를 받을 수 있습니다.
var myHub = GlobalHost.ConnectionManager.GetHubContext<myHub>(); myHub.Clients.User(order.OrderCustomerId.ToString()).redirctOrderDetails(order.OrderNumber);
6단계는 전환 페이지에서
// 声明一个代理引用该集线器,记得$.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();
를 수락하고 실행하는 것입니다. 이렇게 하면 결제 완료 후 페이지 점프를 완벽하게 구현할 수 있습니다. 현재로서는 더 좋은 방법이 생각나지 않습니다.
【관련 추천】
3. Geek Academy ASP.NET 비디오 튜토리얼
위 내용은 모의 결제 페이지 점프 알림 예시에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!