目录

一:介绍

二:支付流程介绍

三:下载银联SDK

四:导入开发SDK

4.1 如果项目开发使用的Eclipse软件,导入步骤如下:

4.2 如果项目开发使用的Android Studio软件,导入步骤如下:

除了导入jar包之外,还要导入资源包和依赖包,如下图:

五:修改AndroidManifest.xml配置

六:支付接口调用


一:介绍

项目中要用到支付功能,需要支付宝支付、微信支付、银联支付,所以打算总结一下,方便以后的查阅,也方便大家, 用到的地方避免再次被坑。
今天我们就主要介绍一下银联控件支付,其他支付也写了对应教程,并且给出了连接。

集成前首先要看看文档,银联手机控件支付,里面包含需要的库文件和详细的文档。鉴于小伙伴们不容易找到,好事做到底,送上截图方便下载。

银联手机控件SDK

二:支付流程介绍

通过支付控件进行交易的流程如下图:

业务流程图

流程图说明:
  (1)用户在客户端中点击购买商品,客户端发起订单生成请求到商户后台;
  (2)商户后台收到订单生成请求后,按照《手机控件支付产品接口规范》组织并推送订单信息至银联后台;
  (3)银联后台接收订单信息并检查通过后,生成对应交易流水号(即TN),并回复至商户后台(应答要素:交易流水号等);
  (4)商户后台接收到交易流水号(TN),将交易流水号返回至客户端;
  (5)客户端通过交易流水号(TN)调用支付控件;
  (6)用户在支付控件中输入相关支付信息后,由支付控件向银联后台发起支付请求;
  (7)支付成功后,银联后台将支付结果通知给商户后台;
  (8)银联后台同时也将支付结果通知支付控件;
  (9)支付控件显示支付结果并将支付结果返回至客户端;
  此处备注:我们是通过后台获取订单,我们可以根据商品id等信息通过后台接口获取订单信息,对订单支付流程的签名加密过程后台完成。

三:下载银联SDK

银联手机控件支付SDK

下载之后,找到两个jar包,将UPPayAssistEx.jar和UPPayPluginExPro.jar添加到商户应用的工程中

SDK路径

四:导入开发SDK

导入sdk流程同支付宝导入流程一样,这里就借用支付宝导入流程进行介绍。

4.1 如果项目开发使用的Eclipse软件,导入步骤如下:

1.将alipaySDK-20150602.jar包放入商户应用工程的libs目录下,如下图。

2.进入商户应用工程的Java Build Path,将libs目录下的alipaySDK-20150602.jar导入,如下图。

3.选中Order and Export,勾选alipaySDK-20150602.jar,如下图。

203.png

将上图的支付宝sdk更换成银联控件支付的两个jar包即可

4.2 如果项目开发使用的Android Studio软件,导入步骤如下:

1.将银联SDK拷贝到项目libs文件夹下,如果没有libs文件夹,就新建一个。

2.如果sdk使用过程中,提示找不到文件。
进行如下操作,选中sdk文件,右击选择Reveal in Finder

除了导入jar包之外,还要导入资源包和依赖包,如下图:

五:修改AndroidManifest.xml配置

1.在商户应用工程的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" />

到这里,银联支付的前期配置已经完成,下面需要完成支付代码编写。

六:支付接口调用

  1. 在点击支付按钮的点击事件中,我提供的是从后端获取订单信息。
  2. 需要在新线程中调用支付接口。代码如下:
//    支付按钮public void onClick(View view) {//起一个线程Runnable payRunnable = new Runnable() {@Overridepublic void run() {String data = null;PayBean payBean = new PayBean();payBean.setOrderTime("");String json = new Gson().toJson(payBean);//json为获取后端结果时需要提供给后端订单信息,例如:时间、金额、订单属性等Log.i("charge request", json);try {//data为后端返回数据,其中包括订单字符串data = postJson(CHARGE_URL, json);} catch (IOException e) {e.printStackTrace();}// Json解析dataChargeBean charge = new Gson().fromJson(data, ChargeBean.class);String tn = (String)charge.getResult().getCredential();//在mHandler中处理微信调起支付和返回结果回调Message msg = new Message();msg.what = SDK_PAY_UPPAY;msg.obj = charge;mHandler.sendMessage(msg);}};// 必须异步调用Thread payThread = new Thread(payRunnable);payThread.start();}
  1. 在mHandler中处理调起支付
private Handler mHandler = new Handler() {public void handleMessage(Message msg) {if (msg.what == SDK_PAY_UPPAY){String tn = (String) msg.obj;Log.i("charge", tn);int ret = UPPayAssistEx.startPay (ThirdActivity.this, null, null, tn, "01");}}};
  1. 支付结果回调

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

控件返回的结果信息仅作为参考,商户订单是否成功支付应该以商户后台主动到全渠道查询的结果或者收到全渠道支付结果通知为准。
示例代码如下:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {/************************************************** 步骤3:处理银联手机支付控件返回的支付结果************************************************/if (data == null) {return;}String msg = "";/** 支付控件返回字符串:success、fail、cancel 分别代表支付成功,支付失败,支付取消*/String str = data.getExtras().getString("pay_result");if (str.equalsIgnoreCase("success")) {// 支付成功后,extra中如果存在result_data,取出校验// result_data结构见c)result_data参数说明if (data.hasExtra("result_data")) {msg = "支付成功!";} else if (str.equalsIgnoreCase("fail")) {msg = "支付失败!";} else if (str.equalsIgnoreCase("cancel")) {msg = "用户取消了支付";}AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("支付结果通知");builder.setMessage(msg);builder.setInverseBackgroundForced(true);builder.setNegativeButton("确定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();}});builder.create().show();}}

以下三种为常用结果判断

success为支付成功
fail为支付失败
cancel为取消支付

Android 银联控件支付开发流程相关推荐

  1. android支付宝、微信支付开发流程

    这一段时间项目需要加上微信支付和支付宝支付,经过一段时间摸索,总算能够正常进行支付使用了.想想在支付上遇到的坑,我觉得有必要进行一个记录,在后续的开发中避开支付中遇到的坑: 一.支付宝支付: ps:支 ...

  2. 【Android 高性能音频】Oboe 开发流程 ( Oboe 音频帧简介 | AudioStreamCallback 中的数据帧说明 )

    文章目录 一.音频帧概念 二.AudioStreamCallback 中的音频数据帧说明 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getting Started ② ...

  3. 【Android 高性能音频】Oboe 开发流程 ( Oboe 完整代码示例 )

    文章目录 一.GitHub 地址 二.Oboe C++ 代码 三.日志封装 四.Activity 代码 五.AndroidManifest.xml 配置文件 六.CMakeLists.txt 构建脚本 ...

  4. 【Android 高性能音频】Oboe 开发流程 ( 检查 Oboe 音频流属性 | 开始播放 | 停止播放 | 关闭 Oboe 音频流 | 重新配置 Oboe 音频流属性 )

    文章目录 一.检查 Oboe 音频流属性 二.开始播放 三.停止播放 四.关闭音频流 五.重新配置 Oboe 音频流属性 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : G ...

  5. 【Android 高性能音频】Oboe 开发流程 ( 创建并设置 AudioStreamCallback 对象 | 打开 Oboe 音频流 | 日志封装 logging_macros.h )

    文章目录 一.创建并设置 AudioStreamCallback 对象 二.打开 Oboe 音频流 三.日志封装 Oboe GitHub 主页 : GitHub/Oboe ① 简单使用 : Getti ...

  6. 【Android 高性能音频】Oboe 开发流程 ( 包含头 Oboe 头文件 | 创建音频流 | 设置音频流 | 音频流回调类 AudioStreamCallback )

    文章目录 一.包含头 Oboe 头文件 二.音频流构建器 AudioStreamBuilder 三.音频流回调 AudioStreamCallback Oboe GitHub 主页 : GitHub/ ...

  7. JSAPI微信支付开发流程和坑

    首先,我先简要说明一下微信支付开发的流程 众所周知,工欲善其事,必先利其器,微信官方推出了web微信开发工具,有windows.linux.版本的,根据自己的开发环境选择合适自己的,登陆公众平台--& ...

  8. Android App Bundles相关概念及开发流程详解

    本文会根据官网的介绍,结合自己的一些理解,来阐述Android App Bundles的相关概念和开发流程. 主要参考文章如下. https://developer.android.com/guide ...

  9. 微信支付之JSAPI支付开发流程

    JSAPI支付 前言 准备 开发 1.流程说明 2.下单(预支付) 3.前端调起支付 4.支付结果异步通知 5.退款申请 6.退款结果异步通知 结语 前言 最近项目涉及到微信支付的功能,在这里简单分享 ...

最新文章

  1. LeetCode简单题之数组形式的整数加法
  2. Cambridge career service
  3. NYOJ 847 S + T
  4. 如何解决python爬虫requests.get()遇到的418问题
  5. BZOJ-2298|区间dp|线段树
  6. 红歌合唱之团结就是力量
  7. React开发(249):react项目理解 ant design form加个扩展样式
  8. 【编程好习惯】复用代码以提高可维护性
  9. shell for while循环
  10. 泰坦尼克号数据分析!
  11. 传奇脚本称号(封号)设置的详解
  12. 第三代航空轴承钢产品 css-42l,航空轴承钢的发展及热处理技术(一)
  13. 雷神simplest_ffmpeg_player解析(二)
  14. 一本通1548【例 2】A Simple Problem with Integers
  15. order by排序出现问题
  16. java迭代器遍历json,批量替换内容
  17. 未来居民健康档案编码以身份证号识别
  18. 使用Linux训练LoRA模型
  19. c语言程序设计周记,C语言学习日记
  20. Linux将ip加入黑名单

热门文章

  1. 图像处理与计算机视觉的区别
  2. NV欢迎Intel进入GPU市场 黄仁勋如此评价
  3. Springboot+Netty实现基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-设备终端(南向设备)
  4. 行列式某一行的元素与另一行对应元素的代数余子式的乘积之和等于0
  5. 看个视频就可以日进斗金!Reaction网红,了解一下
  6. mysql测试题蔡铜_MySQL:测试题
  7. macos 虚拟镜像文件_如何在macOS中使用虚拟文件测试网络或硬盘速度
  8. (转)Native Extensions for Silverlight (NESL)?
  9. 牛客算法課 (算法入門班) 貪心與模擬(4)
  10. 按键手机Java游戏回顾,绿豆蛙勇闯冒险岛java 老式按键手机青蛙闯关游戏