微信支付
今天我也遇到了,可以通过开放平台授权跳转
通过好几个社区朋友的综合,特地改下实现方式。
1.将签约地址输入在浏览器地址栏,回车会有一个open开头的授权登录域名地址
2.两种方式
(1)将该地址(open.weixin.qq.com/xxx)放在小程序端(webview),在地址中 redirect_uri 替换成动态的签约地址(注意需要转义),其他不需要变,将组合后的地址放在webview src内即可。由于appid是写固定的,建议做成数据库存储,通过接口获取,以防appid有变动,影响线上项目
(2)将该地址(open.weixin.qq.com/xxx)写在配置好的业务域名服务器端。通过小程序端(webview) src 为 业务域名+ redirect_uri=(转义后签约地址),服务端将(open.weixin.qq.com/xxx)中redirect_uri做成动态获取(地址参数获取:转义后签约地址),其他不需要变。重定向组合好的地址即可。其中appid建议做成与第一种方式一样,存储在数据库里。
以上两种方式的区别就是 appid 在哪端动态获取
注意:复制下来的 open.weixin.qq.com/xxx 地址,一定不要更换appid(建议将appid放在数据库存储起来,每次调用都是以读取的方式进行),因为这个是微信支付自己的应用,回调地址也是pay.weixin.xxx(也是签约地址),appid做成动态是为了防止appid有变化。
弊端:不太建议做成嵌入在小程序内的签约方式,因为签约页面底部协议相关页面是打不开的(特地感谢 @whe 提醒)。官方建议做成二维码形式(https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/ecommerce/applyments/chapter3_2.shtml)
2021.5.1以后(也有可能是安卓系统 微信8.0.0版本以后) -> 以上两种方法针对安卓机已作废,请统一更换成二维码形式,感谢贴主@郑旭东
问题已经优化,建议清除缓存+关掉浏览器再试试