webAPP第三方支付系统,请求外部链接后怎么返回

Android中的webview调用第三方支付 - CSDN博客
Android中的webview调用第三方支付
当使用webview打开类似淘宝美团等网页时,如何调用native支付.
首先,在webview中点击某个链接时,需要我们在shouldOverrideUrlLoading()这个方法中对响应进行处理;
处理过程就是拦截第三方支付的跳转链接.
if (url.startsWith(&跳转支付宝的链接&)) {
//支付宝提供了页面支付转native支付的方法
final PayTask task = new PayTask(H5PayDemoActivity.this);
final String ex = task.fetchOrderInfoFromH5PayUrl(url);
if (!TextUtils.isEmpty(ex)) {
new Thread(new Runnable() {
public void run() {
H5PayResultModel result = task.h5Pay(ex, true);
if (!TextUtils.isEmpty(result.getReturnUrl())) {
view.loadUrl(result.getReturnUrl());
}).start();
view.loadUrl(url);
if (url.startsWith(&跳转微信的链接&)) {
//没有找到微信提供的方法
//支付链接携带了支付所需要的各种参数
1.如果我们不在webview内打开这个链接,而是跳转系统中的其它浏览器,可以调起微信,不需要我们做任何操作.不对shouldOverrideUrlLoading()这个方法的返回值做处理,返回默认的super.shouldOverrideUrlLoading()就可以,我记得是这样的.
2.在webview中做处理Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW);intent.setData(Uri.parse(url)); startActivity(intent);只需要这样就可以了...很简单}其实是微信app中提供了scheme值为&weixin://&的data属性,当通过网页唤起微信app后,微信通过既定的参数名称,从url中提取出支付参数,完成支付过程,我把这看作一个进程间通信的例子.以上需要webview.getSettings().setJavaScriptEnabled(true);//下面这篇文章对网页调起微信native支付说的透彻多了http://blog.csdn.net/ahence/article/details///另外记录下对shouldOverrideUrlLoading()方法的返回值的理解这个方式是webview监听对象webviewClient中的一个方法,可以对网页中的超链接做出响应,当点击网页中的超链接时,webviewClient会调用这个方法,并传递此超链接.如果我们从未对这个方法做出任何处理,webview会调用浏览器来打开这个链接.如果我们修改了这个方法的返回值,就不会再调用其它浏览器了,而是在webview中处理这个链接.1.修改返回值为true:表示按照程序已经对这个链接进行了处理,不需要webview再进行操作//如下,load这个url,返回true,表示已经对链接进行了load处理view.loadurl(url);2.返回值为false:表示由webview对这个链接进行默认处理,我理解的&默认处理&就是不写view.loadurl(url),webview仍然会默认load这个url
本文已收录于以下专栏:
相关文章推荐
问题来源之前在app中集成过微信支付,当时还写了一篇扫坑贴,此种微信支付方式为app支付,即在我们自己的应用中嵌入微信支付SDK,由Native代码调起微信支付。后来由于业务需要在我们app的WebV...
参考网址:/kf/727.html
http://blog.csdn.net/u/article/details/51426...
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 如下方...
之前在app中集成过微信支付,此种微信支付方式为app支付,即在我们自己的应用中嵌入微信支付SDK,由Native代码调起微信支付。
后来由于业务需要在我们app的WebView中打开自...
有个需求是调用微信支付和支付宝支付,原本以为要集成SDK,之后才知道后台返回的是html,只需要用webview显示出来,之前没有接触过这种,结果跳了几天的坑 o(////▽////)q傻傻地直接显示...
2 * JSAPI支付——H5网页端调起支付接口
4 class JsApi_pub extends Common_util_pub
微信H5网页公众号支付教程附demo开发之前请详细阅读微信公众号支付开发文档,并配置好服务器信息。
微信支付开发文档1.微信支付申请,开通微信商户平台。
2.开发配置,填写服务器地址。
最近项目需要微信支付,然后看了下微信公众号支付,,虽然不难,但是细节还是需要注意的,用了大半天时间写了个demo,并且完整的测试了一下支付流程,下面分享一下微信公众号支付的经验。
一家移动互联网公司,说到底,要盈利总是需要付费用户的,自己开发支付系统对于资源有限的公司来说显然不太明智,国内已经有多家成熟的移动支付提供商,阿里就是其中之一。 本文分享支付宝app支付sdk的接入。
EasyPay是一个开源的聚合支付可定制化框架,目前已集成微信APP支付,支付宝APP支付SDK。银联支付(开发中)。
Android开发者只需要简单调用EasyPay的几行代码,即可调起支付客户端...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Android内嵌网页webview点击其中的链接跳转到我们应用内的Activity
在一个大的项目中,由于客户端来不及更新和实现,经常会内嵌一些网页(在一些大型的互联网公司,PC的产品总是跑在客户端的前面),比如活动页面,通常可以内嵌用html5实现的页面,可以适配手机。但是这些网页中有好多链接,但是这些链接有些内容有是我们客户端已经实现的,比如有一个注册链接,其实客户端也实现了注册功能,我们不想再继续跳转到网页注册,而是打开客户端某个注册Activity,可以通过以下方式来实现:
xml 文件,如下:
java代码如下:
* 通用的webview,只需要传入2个参数即可, param1:title 标题 param2:url 网站
public class PublicWebView extends Activity {
private WebV
private ImageB
private LinearLayout public_webview_
private boolean showT
private ProgressBar progressB
@SuppressLint(scriptInterface)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.public_webview);
Intent intent = getIntent();
String url = intent.getStringExtra(url);
String title = intent.getStringExtra(title);
showTitle = intent.getBooleanExtra(show_title, true);
public_webview_top = (LinearLayout) findViewById(R.id.public_webview_top);
if (showTitle) {
public_webview_top.setVisibility(View.VISIBLE);
public_webview_top.setVisibility(View.GONE);
TextView titletv = (TextView) findViewById(R.id.public_webview_title);
titletv.setText(title);
progressBar = (ProgressBar) findViewById(R.id.public_webview_progressbar);
webview = (WebView) findViewById(R.id.public_webview_webview);
// 加载需要显示的网页
webview.addJavascriptInterface(new JavascriptInterface(PublicWebView.this), Phoenix_Android);
webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
// 设置WebView属性,能够执行Javascript脚本
webview.getSettings().setEnabled(true);
// 加载需要显示的网页
webview.loadUrl(url);
// 设置Web视图
webview.setWebViewClient(new MyWebViewClient());
webview.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
progressBar.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
super.onProgressChanged(view, newProgress);
back = (ImageButton) findViewById(R.id.public_webview_back);
back.setOnClickListener(new BackListener(PublicWebView.this, null, 1));
@SuppressLint(NewApi)
public class JavascriptInterface {
@SuppressWarnings(unused)
public JavascriptInterface(Context context) {
this.context =
public void back(String module, int status, String place) {
reFreshBlance();
if (status == -1) { // 用户取消了
} else if (status == 0) {
Toast.makeText(PublicWebView.this, 充值请求失败,请稍后重试..., Toast.LENGTH_SHORT).show();
} else if (status == 1) {
// 充值请求成功
reFreshBlance();
// 1.用户中心进来的有两个参数
// a.bet参数是返回购彩界面
// b.userCenter返回用户中心
// 监听 所有点击的链接,如果拦截到我们需要的,就跳转到相对应的页面。
private class MyWebViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
System.out.println(----------------------shouldOverrideUrlLoading 。。 url: + url);
if (url != null && url.contains(/m/phoneRegiste.do)) {
Intent intent = new Intent(PublicWebView.this, RegisterByPhone.class);
PublicWebView.this.startActivity(intent);
return super.shouldOverrideUrlLoading(view, url);
public void onPageFinished(WebView view, String url) {
view.getSettings().setJavaScriptEnabled(true);
super.onPageFinished(view, url);
// 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) {
// webview.goBack();// 返回前一个页面
return super.onKeyDown(keyCode, event);

我要回帖

更多关于 第三方支付 的文章

 

随机推荐