java项目中使用angularjs1.X,解决微信内置h5支付授权目录配置

来源:互联网 发布:拉面说 知乎 编辑:程序博客网 时间:2024/05/29 17:00

在项目中使用angularjs1.X,在微信内置浏览器中使用微信支付,授权目录配置总出现XXXXXX#/XXXXX.html/XXXX未注册,想了很多办法,最终解决了,现在记录一下

1、直接后台重定向

 

  var pay ="http://127.0.0.1/XXXX/mobilePay?id="+$scope.id  window.location.href=pay;
mobilePay控制层实现重定向到你的支付页面
 
response.sendRedirect("http://127.0.0.1/shopxx/mobile/index.html#/payment/"+id);
这个方法可以解决问题,但是微信ios版本的6.5.6不知为何有少部分人还是不能支付

2、去除angularjs1.X URL中#,重新配置授权目录,同时刷新也不会出现404

1)可以使用nginx
2)使用webServer转发

我们先修改 angularjs1项目,开启html5模式

app.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {    $locationProvider.html5Mode(true);}]);
编辑 index.html,增加base标签

<html  ng-app="app"><head>    <base href="/">  //目录请根据自己的实际项目配置,错误的时候不能正常加载js等文件</head>
1)使用nginx

用到的是try_files,修改nginx的配置文件,增加try_files配置,因对nginx不怎么熟悉,本身服务器上配置了负载均衡等,不想再去修改配置文件(同样需要更具自己的项目修改路径),所以只再本地尝试了一下

server {    server_name localhost;    root /;    location / {        try_files $uri $uri/ /index.html;    }}

2)使用webServer转发

懒得自己写拦截器,网上搜了一下UrlRewriteFilter还不错

下载相应jar包并引入

 在WEB-INF/web.xml配置文件中加入拦截器

<filter>    <filter-name>UrlRewriteFilter</filter-name>    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class></filter><filter-mapping>    <filter-name>UrlRewriteFilter</filter-name>    <url-pattern>/*</url-pattern>//根据自己的项目修改,不是所有目录都需要拦截,不过全拦截也无所谓,转发规则文件配置中可以再去除    <dispatcher>REQUEST</dispatcher>    <dispatcher>FORWARD</dispatcher></filter-mapping>
在WEB-INF新建“urlrewrite.xml”转发规则文件

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"    "http://tuckey.org/res/dtds/urlrewrite3.0.dtd"><urlrewrite>   <rule>      <from>mobile/[a-zA-Z]+(/([a-zA-Z]|[0-9])*)*$</from>//正则表达式,根据需求自己再改改      <to>/mobile/index.html</to>   </rule></urlrewrite>



            

0 0
原创粉丝点击