经过论坛查询相关10003历史提问和相应评论,最后通过部署核实,总结出两种比较正确的配置方式。但前提需要满足一个先决的配置,仅供参考。 先决条件: 其中官方在设置页面上说的多写的这段话,直接忽略,请绕过这句话,因为存在实现不完整。 若填写路径,将文件放置在路径目录下,例如wx.qq.com/mp/MP_verify_kJZoNHudBxxxxxxx.txt),并确保可以访问。 公众号-功能设置-网页授权域名设置:只配置域名,即填写类似 `sub.aaa.bbb.com`,则这样等同于微信官方校验文件访问url等于 https://sub.aaa.bbb.com/MP_verify_kJZoNHudBxxxxxxx.txt 所以保证这个curl能获取到你放置这个校验文件静态服务,例如nginx。 方案一:通过只用域名方式来配置,这个是最简单的方式。 1.公众号静态网页和校验文件打包放置一个目录,然后利用nginx托管静态服务 此时静态页面目录结构大致如下./dist |--- index.html |--- MP_verify_xxxxxx.txt |--- src/ |---... nginx配置(docker)# /etc/nginx/conf.d/default.conf server { listen 80; # 为兼容ios14代理微信服务验证 location /__wx__/ { proxy_pass https://servicewechat.com/wxa-qbase/; } # 定向静态网页 location / { root /usr/share/nginx/html; try_files $uri $uri/ /index.html; } } 2.验证并使得公众号功能设置-网页授权域名设置成功 通过网页访问或者curl访问以下url ,能够获得校验文件内容,则网页授权域名设置:sub.aaa.bbb.com 能够保存成功。https://sub.aaa.bbb.com/MP_verfiy_xxxx.txt` 通过网页访问或者curl访问以下url,能够获得类似的json `{"base_resp":{"ret":40097,"errmsg":""}}` 返回,则说明能够成功访问 servicewechat服务https://sub.aaa.bbb.com/__wx__/check_login 方案二:通过只用path方式,然后前置代理nginx重定向至内部的托管静态网页的nginx服务,譬如k8s的ingress和pod配套使用。 1.公众号静态网页和校验文件打包放置一个目录,然后利用nginx托管静态服务 此时静态页面目录结构大致如下./dist |--- index.html |--- MP_verify_xxxxxx.txt |--- src/ |---... nginx配置(pod)# /etc/nginx/conf.d/default.conf server { listen 80; # 为兼容ios14代理微信服务验证 location /__wx__/ { proxy_pass https://servicewechat.com/wxa-qbase/; } # 代理公众号网页 location /mpweb/ { proxy_pass http://127.0.0.1:90/; } # 代理其他附带静态文件,例如MP_verfiy验证文件 location / { root http://127.0.0.1:90/; } } server { listen 90; # 定向静态网页 location / { root /usr/share/nginx/html; try_files $uri $uri/ /index.html; } } 2.配置ingress,使得ingress-controller生成相应的nginx配置 使得ingress通过指定path来定向至内部的静态服务svc,再转至podapiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: .... nginx.ingress.kubernetes.io/ssl-redirect: "true" name: mpweb-ingress namespace: namespace-mpweb spec: rules: - host: sub.aaa.bbb.com http: paths: - backend: serviceName: mpweb-svc servicePort: 80 path: /mpweb - backend: serviceName: mpweb-svc servicePort: 80 path: /__wx__ - backend: serviceName: mpweb-svc servicePort: 80 # 根据自己的校验文件 path: /MP_verify_kJZoNHuxxxxx.txt tls: - hosts: - sub.aaa.bbb.com secretName: subaaabbcom-tls-secret 通过apply生效yaml文件后,大致在ingress-controller上可以看到nginx配置内容location ~* "^/__wx__" { set $namespace "nampespace-mpweb"; set $ingress_name "mpweb-ingress"; set $service_name "mpweb-svc"; set $service_port "80"; set $location_path "/__wx__"; ...; proxy_pass http://upstream_balancer; } location ~* "^/mpweb" { set $namespace "nampespace-mpweb"; set $ingress_name "mpweb-ingress"; set $service_name "mpweb-svc"; set $service_port "80"; set $location_path "/mpweb"; ...; proxy_pass http://upstream_balancer; } location ~* "^/MP_verify_kJZoNHxxxxxxxx.txt" { set $namespace "nampespace-mpweb"; set $ingress_name "mpweb-ingress"; set $service_name "mpweb-svc"; set $service_port "80"; set $location_path "/MP_verify_kJZoNHxxxxxxxx.txt"; ...; proxy_pass http://upstream_balancer; } 3.以上内容相当于起到定向且直通内部服务 代理内path变化情况如下# 校验文件 ingress层 https://sub.aaa.bbb.com/MP_verify_kJZoNHxxxxxxxx.txt svc层 http://nampespace-mpweb-mpweb-svc-80/MP_verify_kJZoNHxxxxxxxx.txt pod层 http://mpweb-pod:80/MP_verify_kJZoNHxxxxxxxx.txt 内部 http://127.0.0.1:90/MP_verify_kJZoNHxxxxxxxx.txt # 访问servicewechat ingress层 https://sub.aaa.bbb.com/__wx__/check_login svc层 http://nampespace-mpweb-mpweb-svc-80/__wx__/check_login pod层 http://mpweb-pod:80/__wx__/check_login 内部 https://servicewechat.com/wxa-qbase/check_login # 访问静态网页 ingress层 https://sub.aaa.bbb.com/mpweb/#/ svc层 http://nampespace-mpweb-mpweb-svc-80/mpweb/#/ pod层 http://mpweb-pod:80/mpweb/#/ 内部 http://127.0.0.1:90/#/ 4.验证并使得公众号功能设置-网页授权域名设置成功 通过网页访问或者curl访问以下url ,能够获得校验文件内容,则网页授权域名设置:sub.aaa.bbb.com 能够保存成功。https://sub.aaa.bbb.com/MP_verfiy_xxxx.txt` 通过网页访问或者curl访问以下url,能够获得类似的json `{"base_resp":{"ret":40097,"errmsg":""}}` 返回,则说明能够成功访问 servicewechat服务https://sub.aaa.bbb.com/__wx__/check_login 总结: 1.对于第二种解决方案,主要是方便把服务托管至已经有的域名体系下,通过path来重定位内部托管的公众号静态服务,又因为微信官方的所谓“文档”和“友好”,需要另外对于校验文件的url和servicewechat的访问在前置nginx上再做具体path的rewrite,才能解决一直出现在微信app上的 `redirect_uri与后台配置域名不一致` 错误。 2.对于微信云开发SDK中,cloud.startLogin() 中的redirect_uri填写问题,根据采取的部署方案来填写 # 采用方案一的方式填写 https://sub.aaa.bbb.com # 采取方案二的方式填写 https://sub.aaa.bbb.com/mpweb 从中也间接说明SDK的redirect_uri的相应填写,是根据自己部署静态网页服务后,所定的url的path来确定。 3.至于为什么公众号上网页授权域名设置上,只使用域名来填写是正确的,而不使用带路径的方式,但官方又说明了可以使用路径方式,那就不清楚了。
网页授权域名使用“路径指向的web服务器(或虚拟主机)的目录”配置出现10003错误?问题: 网页授权域名使用了 “路径指向的web服务器(或虚拟主机)的目录” 方式后,通过将相应的校验文件和公众号网页一起打包,并通过nginx部署至服务器,采用 `域名+Path` 方式指向来获取相应资源,公众号设置上填写正确访问路径目录后,校验通过保存成功。公众号网页打包时配置redirectUri为公众号所设置的网页授权域名的值,出现在访问中,微信授权登录时,出现 “redirect_uri域名与后台设置不一致,错误码10003” 请问这种配置方式下,公众号网页在调用云开发 Web SDK 的cloud.startLogin()方法时,参数所填写的 `redirect_uri` 应该如何填写? 当前配置情况: 公众号-公众号设置-功能设置-网页授权域名(大概格式):sub.testxxx.com/web 公众号网页,调用云开发 Web SDK 的cloud.startLogin(),配置redirect_uri: https://sub.testxxx.com/web 运行公众号网页nginx容器A: listen 80; location /__wx__/ { proxy_pass https://servicewechat.com/wxa-qbase/; } location / { root /usr/share/nginx/html; # 已放置公众号静态网页 index index.html index.htm; } 公众号静态网页目录 --/usr/share/nginx/html | -- ... | -- index.html | -- MP_verify_xxxxxxx.txt 前置nginx负载均衡,代理域名sub.testxxx.com { listen 443; ssl on; location ~* "^/web(/|$)(.*)" { rewrite "(?i)/web(/|$)(.*)" /$2 break; proxy_pass http://A容器:80; proxy_redirect off; } location ~* "^/__wx__(/|$)(.*)" { rewrite "(?i)/__wx__(/|$)(.*)" /__wx__/$2 break; proxy_pass http://A容器:80; proxy_redirect off; } } 测试情况: curl https://sub.testxxx.com/web/ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <link rel="icon" href="./favicon.ico" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" /> <title>公众号网页</title> <!-- 公众号 JSSDK --> <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> <!-- 云开发 Web SDK --> <script src="https://res.wx.qq.com/open/js/cloudbase/1.2.0/cloud.js"></script> <script type="module" crossorigin src="./assets/index.978a9c1f.js"></script> <link rel="modulepreload" href="./assets/vendor.0f57903d.js"> <link rel="stylesheet" href="./assets/index.4b3c4cd9.css"> </head> <body> <div id="app"></div> </body> </html> curl https://sub.testxxx.com/web/MP_verify_xxxxxxx.txt kJZoNHudBuxxxxxx curl https://sub.testxxx.com/__wx__/oauth {"base_resp":{"ret":40097,"errmsg":""}} 上述访问已成功测试获取资源正常,对接 `servicewechat.com` 服务正常。 但在实际微信上尝试使用时,均出现10003错误 请麻烦官方解答一下,在正常使用云开发web SDK时填写redirect_uri与公众号后台的域名字符串后,为何还会出现不一致错误?谢谢 补充:访问url在经过前置nginx中转后,到达服务nginx的路径接收变化情况 https://sub.testxxx.com/web/MP_verify_xxxxxxx.txt 前置nginx --> http://A容器:80/MP_verify_xxxxxxx.txt 服务nginx https://sub.testxxx.com/__wx__/oauth 前置nginx --> http://A容器:80/__wx__/oauth 服务nginx --> https://servicewechat.com/wxa-qbase/oauth 外部
2021-04-21我这边也是一样,下了顺丰单,也没有快递员上门取件,,小程序也已经已经绑定顺丰月结账号,用自己biz_id:月结账号下了单,以及直接用biz_id: SF_CASH下单,都没有上门。 小程序这个物流助手到底能不能用?
【物流助手】物流顺丰下单成功但是没有人联系取件我顺丰下单之后,询问了顺丰客服,说没有这个单,问我这个运单号是否正确,我是使用的下单时返回的运单号,然后昨天下了一单之后,没有人联系我 今天的运单号 SF6026000000575
2019-04-26