WeChat 몰에서 Alipay를 사용하여 결제하는 경우 사용자에게 브라우저로 결제 페이지를 열라는 메시지를 표시하는 전환 페이지가 있어야 하며, 사용자가 브라우저에서 결제를 완료한 후 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(); } } }
4단계, 시작 시 사용자 정의 UserIdProvider를 등록합니다.
//SignlR var idProvider = new CustomerUserIdProvider(); GlobalHost.DependencyResolver.Register(typeof(IUserIdProvider), () => idProvider); app.MapSignalR();
다섯 번째 단계, Alipay 결제 완료 비동기 알림 후 알림을 보내는 코드 줄을 추가하고 전달합니다. 주문번호 매개변수, 여기서는 customerid를 주문한 사용자에게 알림이 전송됩니다. 주문 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();
이렇게 하면 결제 완료 후 페이지 점프를 완벽하게 구현하실 수 있습니다. 현재로서는 더 좋은 방법이 생각나지 않습니다.
위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.
SignalR의 페이지 이동 알림 전송과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!