该资源主要介绍如何在Android的WebView中集成微信和支付宝的支付功能。 在Android应用中,经常需要集成第三方支付平台如微信、支付宝,以便用户能够方便地完成在线交易。本示例代码主要讲解了如何在WebView组件中调用微信和支付宝的支付接口,让用户在不离开应用的情况下完成支付流程。 首先,我们看到`AsActivity`继承自`BaseActivity`,并在`onCreate`方法中初始化布局和ButterKnife注解绑定。`R.id.webview`对应着一个WebView对象,它是实现网页加载和交互的核心组件。 接着是`init`方法的定义,创建了一个HashMap `map`,用于存储可能需要传递给支付页面的参数。在这个例子中,只有一个键值对"Referer",其值为"http://.",这通常用来设置请求来源。 然后,通过`WebSettings`对象配置WebView的行为。`setJavaScriptEnabled(true)`允许执行JavaScript代码,`setDefaultTextEncodingName("UTF-8")`设置默认的文本编码为UTF-8,`setJavaScriptCanOpenWindowsAutomatically(true)`允许JavaScript自动打开新窗口,这对于调用支付接口来说是必需的。 `PreferenceUtil.getString("data","")`用于获取存储的支付数据,这里可能是用户的订单信息或者支付密钥。将这个数据与特定的URL(如"BashApi.MAIN")拼接,并将结果加载到WebView中。在示例中,URL被设置为`http://wxpay.wxutil.com/mch/pay/h5.v2.php`,这是一个微信支付的H5接口。 `mWebView.setWebChromeClient(new WebChromeClient())`创建了一个WebChromeClient实例,用于处理一些高级的浏览器功能,如对话框、进度条等。同时,通过自定义的`WebViewClient`来拦截URL加载,当检测到URL以"weixin://"或"alipay://"开头时,表明是微信或支付宝的支付回调,此时需要启动相应的支付应用进行处理。 在自定义的`WebViewClient`中,`shouldOverrideUrlLoading`方法是关键。当用户点击网页中的链接时,此方法会被调用。如果URL是微信支付的回调,那么创建并启动一个Intent来处理这个支付结果。同样的逻辑可以应用于支付宝支付,只是需要替换相应的URL匹配和Intent构建。 这个示例展示了如何在Android应用的WebView中集成微信和支付宝支付,涉及到的主要步骤包括:配置WebView设置、加载支付页面、拦截URL并处理支付回调。在实际开发中,还需要处理各种异常情况,确保支付过程的安全性和用户体验。
@BindView(R.id.webview)
WebView mWebView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web);
ButterKnife.bind(this);
inint();
}
private void inint() {
Map<String, String> map = new HashMap<>();
map.put("Referer","http://....");
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDefaultTextEncodingName("UTF-8");
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
String s= PreferenceUtil.getString("data","");
Log.i("lidaming",s.toString()+" || url="+ BashApi.MAIN+"&appuid="+s);
// webView.loadUrl(BashApi.MAIN+"&appuid="+s);
mWebView.loadUrl("http://wxpay.wxutil.com/mch/pay/h5.v2.php");
mWebView.setWebChromeClient(new WebChromeClient());
WebViewClient webViewClient = new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 如下方案可在非微信内部WebView的H5页面中调出微信支付
if (url.startsWith("weixin://wap/pay?")) {
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 2
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展