Android开发:app工程集成银联支付功能(客户端)

email:chentravelling@163.com

上一篇博文完成了服务器端的集成,可参考: Android开发:app工程集成银联支付功能(服务器端)   。这一篇博文完成客户端的集成。

一.功能描述

银联支付流程如下所示:

上一篇尝试了tn的获取,本篇将跑通整个流程。

二.实现部分

先说一下我的IDE是as(Android Studio)+win7 64位

2.1配置,依旧是配置

按照官方说明文档,就可以完成,我在这里贴上结构图,因为as的特殊性。

  • jar包、.so文件和.bin文件

    因为我的工程资源有点多了,一张图截不下,所以我只给出文件夹的结构图。

    1. 拷贝upmp_android/sdkPro/jar/data.bin到工程的assets文件夹中;
    2. 拷贝upmp_android/sdkPro/jar/xxx/libentryexpro.so和upmp_android/sdkPro/jar/xxx/libuptsmaddon.so到工程的armeabi-v7a文件夹中(官方说v8 v7 abi都行)
    3. 拷贝upmp_android/sdkPro/UPPayAssistEx.jar到工程的libs/目录下;
    4. 拷贝upmp_android/sdkPro/jar/UPPayPluginExPro.jar到工程的libs/目录下;
  • AndroidManifest.xml添加配置

<!-- 银联支付相关配置 --><uses-libraryandroid:name="org.simalliance.openmobileapi"android:required="false" /><activityandroid:name="com.unionpay.uppay.PayActivity"android:configChanges="orientation|keyboardHidden"android:excludeFromRecents="true"android:label="@string/app_name"android:screenOrientation="portrait"android:windowSoftInputMode="adjustResize" /><activityandroid:name="com.unionpay.UPPayWapActivity"android:configChanges="orientation|keyboardHidden"android:screenOrientation="portrait"android:windowSoftInputMode="adjustResize" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.NFC" /><uses-feature android:name="android.hardware.nfc.hce" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><uses-permission android:name="org.simalliance.openmobileapi.SMARTCARD" />

2.2调用支付控件

2.2.1调用支付接口

import com.unionpay.UPPayAssistEx;
//在调用支付控件的代码按以下方式调用支付控件
//比如onclick或者handler等等...
/*参数说明:
activity —— 用于启动支付控件的活动对象
spId —— 保留使用,这里输入null
sysProvider —— 保留使用,这里输入null
orderInfo —— 订单信息为交易流水号,即TN,为商户后台从银联后台获取。
mode —— 银联后台环境标识,“00”将在银联正式环境发起交易,“01”将在银联测试环境发起交易
返回值:
UPPayAssistEx.PLUGIN_VALID —— 该终端已经安装控件,并启动控件
UPPayAssistEx.PLUGIN_NOT_FOUND — 手机终端尚未安装支付控件,需要先安装支付控件
*/
String serverMode = "01";
UPPayAssistEx.startPay (activity, null, null, tn, serverMode);

2.2.2接收支付结果

支付完成后,获取支付控件支付结果,并添加相应处理逻辑,只需实现调用Activity中的onActivityResult()方法即可,支付成功时会返回商户客户端支付结果的签名信息。

  • 官方Demo是这样的:
    其中有一句:此处的verify,商户需送去商户后台做验签 ,请注意并不是在这里向后台请求验签,因为后台也会接收到银联后台的支付结果通知,验签是在商户后台做,请参考上一篇博文的补充部分《Android开发:app工程集成银联支付功能(服务器端) 》
protected void onActivityResult( int requestCode,int resultCode, Intent data)
{if( data == null ){return;}String str =  data.getExtras().getString("pay_result");if( str.equalsIgnoreCase(R_SUCCESS) ){// 支付成功后,extra中如果存在result_data,取出校验
// result_data结构见c)result_data参数说明if(data.hasExtra("result_data")) {
String sign =  data.getExtras().getString("result_data");
// 验签证书同后台验签证书
// 此处的verify,商户需送去商户后台做验签
if(verify(sign)) {//验证通过后,显示支付结果showResultDialog(" 支付成功! ");
} else {
// 验证不通过后的处理
// 建议通过商户后台查询支付结果
}
} else {
// 未收到签名信息
// 建议通过商户后台查询支付结果
}}else if( str.equalsIgnoreCase(R_FAIL) ){showResultDialog(" 支付失败! ");}else if( str.equalsIgnoreCase(R_CANCEL) ){showResultDialog(" 你已取消了本次订单的支付! ");

由此就基本完成了客户端的集成,当然还有一些:支付失败的处理、取消订单的处理,以及退货、退款等等处理,等有时间再完善了。

本想截图的!!手机暂时出现了无法截图的毛病...

Android开发:app工程集成银联支付功能(客户端)相关推荐

  1. Android开发:app工程集成银联支付功能(服务器端)

    一功能描述 二实现过程 1下载银联支付SDK和Demo 1银联商家服务地址httpsopenunionpaycomajwebindex 2下载的文件如下 2集成过程 1先试官方Demo 2集成到自己的 ...

  2. Android 开发 | App 工程目录结构

    包括两个分类:app 和 Gradle Scripts. app 目录包括: manifests 子目录,只有一个 AndroidManifest.xml 文件,它是 App 的运行配置文件. jav ...

  3. Android开发app实现发送短信功能

    程序使用手机发短信的方法 短信收发: ◆发送短信只需要几行代码,如下: SmsManager sms = SmsManager.getDefault(); PendingIntent pi = Pen ...

  4. Android集成银联支付最新版3.8.5(银联真NM坑)

    Android集成银联支付(银联真N&M坑) 1.这是银联Android 开发包的下载地址开发包下载地址 2.下载完里面的内容是这样的 3.其实调起来银联支付(云闪付),就一句代码,其他的都是 ...

  5. PHP 集成银联支付

    现如今支付系统几乎成了许多网站必不可少的东西,那么常见的几种支付方式:支付宝.微信:关于 支付宝 .微信 的实现方式在 世界上最好用的 Alipay 和 WeChat 的支付 SDK 这篇文章有介绍, ...

  6. android仿疯狂猜图源码,Android开发实现高仿优酷的客户端图片左右滑动切换功能实例【附源码下载】...

    本文实例讲述了Android开发实现高仿优酷的客户端图片左右滑动切换功能.分享给大家供大家参考,具体如下: 本例是用ViewPager去做的实现,支持自动滑动和手动滑动,不仅优酷网,实际上有很多商城和 ...

  7. APP中的第三方“支付”功能该如何测试

    经过最近几个项目的测试,APP中带有支付功能的产品有很多,那么APP中带有第三方支付功能的产品在这一模块该如何测试才尽可能的测试完整. 正常流程: 正常使用支付宝.微信.银行卡(目前使用最多的第三方支 ...

  8. android微信风格,Android开发实现模仿微信小窗口功能【Dialog对话框风格窗口】

    本文实例讲述了Android开发实现模仿微信小窗口功能.分享给大家供大家参考,具体如下: 运用方法: 将显示窗口的风格 设置为对话框风格即可 具体效果: 具体实现: 首先我们先定义布局文件: andr ...

  9. Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题

    Android开发 调用系统相机相册图片功能,解决小米手机拍照或者图片横竖相反问题,及小米手机相册图片路径问题 1.调用相机,兼容7.0 AndroidManifest配置 <providera ...

最新文章

  1. 阿里平头哥首款CPU芯片发布!5nm倚天710,128核单片600亿晶体管,无人能与争锋...
  2. 如何让控件span的id调用ajax_微服务架构之「 调用链监控 」
  3. java实现聊天室界面javafx_java 聊天室WeChat
  4. C语言—sort函数比较大小的快捷使用--algorithm头文件下
  5. 网管实战之使用RSA实现企业安全访问
  6. javascript-自定义对象-数组形态对象-字典形态对象
  7. 学习 jQuery -2 document 对象的 ready 事件
  8. PyQt5学习--基本窗口控件--QButton类控件
  9. 伙伴系统二叉树可视化笔记
  10. Wondershare DVD Creator mac版如何刻录光盘文件
  11. 这就是为什么IT人没有女朋友的原因!!
  12. nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录
  13. 于的繁体字有几种写法_【于字书法繁体字怎么写】作文写作问答 - 归教作文网...
  14. Mysql基础篇(6)—— 视图
  15. 化繁为简,我用”知晓推送”开发微信小程序订阅消息
  16. 语音信号的时域处理(二)
  17. 设备模型一(基本概念)
  18. 操作系统 CentOS8 Linux内核编译一遍通过教程
  19. MPOS in Retail (Dynamics 365 for Operation)
  20. Better Menubar--Mac硬件信息显示菜单栏助手

热门文章

  1. cherry MX board 8.0 怎么打开和锁定WIN/APP键
  2. ireport(jasper)打印excel时列对不上
  3. Fiber架构的简单理解与实现
  4. WPF水珠效果按钮组的实现教程
  5. 17种家常菜竟是健康杀手
  6. Docker容器部署
  7. ab,qps,服务器性能压力
  8. python 进度条库 tqdm
  9. C++函数返回右值引用
  10. Android好书推荐:《Google Android SDK开发范例》