非微信内置浏览器中的网页调起微信支付的方案研究
非微信内置浏览器中的网页调起微信支付的方案研究前言在移动应用开发领域,微信支付是非常常见的支付方式之一。然而,在某些情况下,我们需要在非微信内置浏览器中打开网页,并且在这些网页中进行微信支付。这就引出了一个问题:如何在非微信内置浏览器中的网页中调起微信支付呢?本文将详细描述这种方案的研究和实现。
背景我们之前在app中集成过微信支付,当时还写了一篇扫坑贴。此种微信支付方式为app支付,即在我们自己的应用中嵌入微信支付SDK,由Native代码调起微信支付。后来由于业务需要,在我们app的WebView中打开第三方店铺的网页,并且希望在这些网页中也能进行微信支付。
问题但是,微信支付的SDK是针对Native应用开发的,而不是针对Web应用开发的。在非微信内置浏览器中的网页中,我们无法直接使用微信支付的SDK来调起微信支付。因此,我们需要找到一种新的方案来实现这一点。
方案研究经过多次尝试和研究,我们发现了一种新的方案:在非微信内置浏览器中的网页中,通过JavaScript代码来调起微信支付的Native SDK。这种方案涉及以下几个步骤:
1. 在Web应用中引入微信支付的JavaScript SDK2. 在JavaScript代码中调用微信支付的Native SDK3. 在Native SDK中实现微信支付的逻辑具体来说,我们需要在Web应用中引入微信支付的JavaScript SDK,然后通过JavaScript代码来调用微信支付的Native SDK。例如,我们可以使用以下代码来调起微信支付:
```javascriptwx.chooseWXPay({
timestamp: '',
nonceStr: '',
package: '',
signType: 'MD5',
paySign: ''
});
```
在上述代码中,`chooseWXPay`是微信支付的JavaScript API,我们需要传入相关参数来完成微信支付。例如,`timestamp`、`nonceStr`、`package`等都是必要的参数。
但是,这种方案有一个问题:我们无法直接在Web应用中使用微信支付的Native SDK,因为它是针对Native应用开发的。在这种情况下,我们需要通过JavaScript代码来调用微信支付的Native SDK。因此,我们需要在Native SDK中实现微信支付的逻辑。
Native SDK中的实现在Native SDK中,我们需要实现微信支付的逻辑。例如,我们可以使用以下代码来完成微信支付:
```java// Native SDK中的实现public class WXPay {
public static void chooseWXPay(String timestamp, String nonceStr, String packageValue, String signType, String paySign) {
//通过Native API来调起微信支付 Intent intent = new Intent();
intent.setAction("com.tencent.mm.compatible.d.compatible.d");
intent.putExtra("key", "value");
context.startActivity(intent);
}
}
```
在上述代码中,我们需要实现微信支付的逻辑。例如,我们可以通过Native API来调起微信支付。
总结综上所述,非微信内置浏览器中的网页调起微信支付的方案研究涉及以下几个步骤:
1. 在Web应用中引入微信支付的JavaScript SDK2. 在JavaScript代码中调用微信支付的Native SDK3. 在Native SDK中实现微信支付的逻辑这种方案需要在Web应用中引入微信支付的JavaScript SDK,然后通过JavaScript代码来调用微信支付的Native SDK。在Native SDK中,我们需要实现微信支付的逻辑。因此,这种方案是实现非微信内置浏览器中的网页调起微信支付的一种有效方式。