查询资料发现,大多数的答案是:微信与支付宝属于互相竞争的关系,是两个不同的支付平台,目前是不支持互相通用的。微信小程序里面的程序软件属于内嵌于微信的服务,支持微信支付,但不能使用支付宝支付。也就是说:

①在小程序中生成支付宝二维码的方式,不可行

②在小程序中内嵌H5网页后调用支付宝支付接口,也不可行,由于支付协议

那么我通过诱导的方式直接在浏览器使用支付呢?也就是:

③通过点击某个链接直接跳出小程序自动跳转到系统浏览器的方式,也不可行,原因:

微信小程序没办法直接跳转打开app、网址、手机浏览器,但是可以直接打开其他的小程序并跳转到指定的小程序页面

微信公众号可以直接打开app或app指定页面,可以直接打开手机浏览器并跳转指定网址,可以打开小程序或进入小程序指定页面。

但是,我就是想通过某种方式实现小程序通过支付宝支付呢?(嗯 其实也不是我轴了 公司要求)哪怕是曲里拐弯儿的方式,所以:

通过诱导的方式在小程序中生成你需要在浏览器中打开使用支付页面的链接地址,诱导用户手动复制网址并手动切换到系统浏览器中使用。我自己的这个链接有公司小程序接口的前提下弄的,比如说http://xxxx.com/xxxx.aspx?参数=xxxx,复制这个链接到浏览器打开是一个信息展示的页面,在这个页面上有一个按钮,通过这个按钮再去请求支付宝支付的接口。类似于如图:)

微信小程序支付 java 微信小程序支付宝支付_支付宝支付


注意:使用此种方式传参时,若需要传递包含中文的参数时,需要在小程序中传参时,将地址进行二次编码,比如:

url: encodeURI(encodeURI(that.data.url))

在浏览器中接收参数并在页面显示数据时:

string param= String.Empty;
if (Request.QueryString["param"] != null && Request.QueryString["param"].ToString() != "")
            {
                param= HttpUtility.UrlDecode(Request.QueryString["param"]);
            }

然后就可以走支付宝支付的流程了,我使用的是PC端网站支付的接口(alipay.trade.page.pay),具体接入方式可参考官方文档https://docs.open.alipay.com/270/105898/

此方式的两种支付方式:

1、根据浏览器自动检测手机安装了支付宝了的话就自动打开支付宝客户端完成支付

2、要么就不使用支付宝客户端的方式,就直接使用输入支付宝账号的支付密码的方式直接在手机网页里完成支付

如图所示:

微信小程序支付 java 微信小程序支付宝支付_支付宝支付_02


微信小程序支付 java 微信小程序支付宝支付_支付宝支付_03


微信小程序支付 java 微信小程序支付宝支付_微信小程序支付 java_04

第二种网页里输入密码支付的方式

微信小程序支付 java 微信小程序支付宝支付_手机浏览器_05


微信小程序支付 java 微信小程序支付宝支付_手机浏览器_06