这几天一直研究支付宝接口调用,因为当前应用中需要调用支付宝接口作移动支付。

遇到一个问题困扰几天,就是当我们的手机端未安装支付宝APP的时候,需要在自己应用中调用支付宝的登陆网页进行支付。我是Android开发,网上有很多小伙伴都遇到了无法调起网页支付宝登陆页面的问题,在此给大家分享一个解决方案,希望能帮助遇到同样问题困扰的小伙伴。

网上也有很多贴,都是说要加入H5PayActivity和AuthActivity的配置来解决,但是并不起作用,我的就是,虽然有跳转的动作,但是直接一个白板页面招呼,就没有然后了。

支付宝技术文档中其实有写,那就是需要将调用支付宝支付那一段代码单独放在一个线程里进行调用,如下:

final String payInfo=args.getString(0);

Runnable payRunnable = new Runnable() {

@Override

public void run() {

PayTask alipay = new PayTask(activity);

String result = null;

// 调用支付接口,获取支付结果

result = alipay.pay(payInfo, true);

Message msg = new Message();

msg.what = SDK_PAY_FLAG;

msg.obj = result;

new Handler() {

@SuppressWarnings("unused")

public void handleMessage(Message msg) {

switch (msg.what) {

case SDK_PAY_FLAG: {

PayResult payResult = new PayResult((String) msg.obj);

/**

* 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/

* detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&

* docType=1) 建议商户依赖异步通知

*/

String resultInfo = payResult.getResult();// 同步返回需要验证的信息

String resultStatus = payResult.getResultStatus();

// 判断resultStatus 为“9000”则代表支付成功,具体状态码代表含义可参考接口文档

if (TextUtils.equals(resultStatus, "9000")) {

Toast.makeText(activity, "支付成功", Toast.LENGTH_SHORT).show();

PluginResult pluginResult=new PluginResult(PluginResult.Status.OK,"支付成功");

pluginResult.setKeepCallback(true);

callbackContext.sendPluginResult(pluginResult);

} else {

// 判断resultStatus 为非"9000"则代表可能支付失败

// "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)

if (TextUtils.equals(resultStatus, "8000")) {

Toast.makeText(activity, "支付结果确认中", Toast.LENGTH_SHORT).show();

} else {

// 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误

Toast.makeText(activity, "支付失败", Toast.LENGTH_SHORT).show();

}

}

break;

}

default:

break;

}

};

}.sendMessage(msg);

}

};

// 必须异步调用

Thread payThread = new Thread(payRunnable);

payThread.start();

return true;

这样就可以调通了,应该没有大问题,因为我还是用插件的方式写的了,有外层的嵌套,都没问题。

原文:http://www.cnblogs.com/xinluqishi/p/5719949.html

android 支付宝未安装,调用支付宝接口Android客户端没有支付宝APP的情况下解决无法调用支付宝页面的问题...相关推荐

  1. android 快捷方式 未安装该应用程序,android,解决手动创建的桌面快捷方式无法跳转到制定的activity的问题,提示未安装应用程序...

    android,解决手动创建的桌面快捷突变无法跳转到制定的activity的问题 第一步也是最关键的一步: mainfest.xml中: android:name=".activity.No ...

  2. android设备安装kali,在Android设备上安装Kali Linux基于Android设备的Kali Linux渗透测试教程大学霸...

    在Android设备上安装Kali Linux基于Android设备的Kali Linux渗透测试教程大学霸 基于Android设备的Kali Linux渗透测试教程2 Android是一种基于Lin ...

  3. java 抽象类与接口区别是什么_JAVA中抽象类与接口的区别,分别在什么情况下使用它们...

    在网上看到很多人问关于"抽象类与接口的区别",因此本人想通过自己多年对JAVA开发的经验来总结一下抽象类与接口的区别以及分别在什么情况下使用它们. 在Java语言中, abstra ...

  4. 继承情况下构造方法的调用过程-java

    继承情况下构造方法的调用过程-java super关键字:可以看做是直接父类对象的引用.每个子类对象都会有一个super引用 指向其直接父类对象.super可以:1.调用成员变量 super.colo ...

  5. php的魔术方式包含哪些(越多越好)? 在何情况下被自动调用?,php笔试题及答案

    php笔试题及答案 T1 一.填空题 1.PHP是用什么语言编写的? :脚本语言 2. LAMP的全称是? :LINUX .APACHE. MYSQL. PHP 3. PHP的三种注释方式? :#./ ...

  6. android调用web接口,Android调用webservice 接口

    以查询手机号码归属地的Web service为例,它的wsdl为 1 在Android项目中导入??Ksoap2-android jar第三方jar包?? 2 Activity代码 public cl ...

  7. 【错误记录】未安装该应用 ( 在 Android 12 之后 组件设置 android:exported=“false“ 属性 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 报错信息 : 点击应用图标后 , 应用并未启动 , 并弹出 " 未安装该应用 " 提示信息 ; 二.解决方案 排查了一下相关地方 ...

  8. Android如何打开未安装的apk,android获取未安装的APK文件的信息

    下面从一个未安装的android的apk文件获取apk信息 /** * 获取未安装的apk信息 * * @param ctx Context * @param apkPath apk路径,可以放在SD ...

  9. android 模拟器应用未安装,当我在Android Studio中运行它时,Android应用程序未安装在模拟器或设备上...

    我正在开发Android应用程序.在我的应用程序中,我正在测试在设备和模拟器上运行的应用程序.这是我的第三个Android应用程序开发.当我开发其他应用程序时,应用程序会自动安装在设备上或模拟器上的启 ...

  10. Android“应用未安装”的解决办法

    最近实现了应用程序的版本更新功能,在下载好服务器上的最新版本应用后,进入安装界面,但是安装不成功,提示"应用未安装"错误. 安装失败的原因是因为手机上已安装的应用是直接从eclip ...

最新文章

  1. java中保存图片到本地_java保存网络图片到本地
  2. TimeoutException
  3. iOS-应用生命周期
  4. javascript学习系列(2):数组中的filter方法
  5. 单片机自动调光C语言,51单片机触控调光程序C语言
  6. 基于RTP协议的数据通讯程序
  7. 计算机组成原理尾数的求法,计算机组成原理第八讲(运算办法).ppt
  8. python 下载文件-python实现从ftp服务器下载文件
  9. fpt指的是什么_ftp是指的什么?
  10. Java IO流常用操作方法总结
  11. qq2008珊瑚虫版SL
  12. Android arm64-v8a、armeabi-v7a、armeabi详解
  13. ad6怎么画电阻_光敏电阻传感器的使用
  14. Verifying dml pool data
  15. 图像处理中常用的相似度评估指标
  16. KEIL5报错error: #67: expected a “}“
  17. 通向互联网未来的七个路标
  18. Jmeter实现多用户压测
  19. postgrepSQL
  20. ServU 11 以上版本的数据库用户关联 密码加密原理

热门文章

  1. 利用EXCEL将中文汉字转为拼音
  2. jQuery实践-别踩白块儿网页版
  3. invalid method declaration
  4. Android直播开发之旅(14):使用RC4算法加解密音视频流
  5. 华硕路由器流量管理QoS设置
  6. 【TVM帮助文档学习】Relay的模式匹配
  7. 百度地图迁徙大数据_百度地图迁徙大数据:北上广深城内出行年后首次大幅增长...
  8. CentOS 7.6安装使用Ansible(三):Ansible Playbook和变量类型
  9. 回复git@vger.kernel.org的注意事项
  10. SVN - commit报错“xxx remains in tree-confilict”