银联支付教程:

1. 概述;

银联手机支付控件(以下简称支付控件),主要为合作商户的手机客户端或手机Web网站提供安全、便捷的支付服务。目前支付控件支持Android和iOS两个平台,用户通过在支付控件中输入银行卡卡号、手机号、密码(借记卡和预付卡)或者CVN2、有效期(信用卡)、验证码等要素完成支付。
网上有更加完整的文档教程,地址:http://202.101.25.178:8080/sim/docs/ (主要看 3.控件使用指南)
android手机银联支付接入方式有两种,第一种是apk方式,另外一种是jar包方式,下面会作出讲解。
测试账号:
为方便商户进行接入的测试,银联支付为程序员提供了测试用的卡号和密码,
卡号:6226 4401 2345 6785 密码:111101(此类信息仅供测试,不会发生正式交易)



2. 支付流程介绍;

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


流程图说明:
(1)用户在客户端中点击购买商品,客户端发起订单生成请求到商户后台;
(2)商户后台收到订单生成请求后,按照《UPMP商户接入接口规范》组织并推送订单信息至银联后台;
(3)银联后台接收订单信息并检查通过后,生成对应交易流水号(即TN),并回复交易流水号至商户后台(应答要素:交易流水号等);
(4)商户后台接收到交易流水号,将交易流水号返回给客户端;
(5)客户端通过交易流水号(TN)调用支付控件;
(6)用户在支付控件中输入相关支付信息后,由支付控件向银联后台发起支付请求;
(7)支付成功后,银联后台将支付结果通知给商户后台;
(8)银联将支付结果通知支付控件;
(9)支付控件显示支付结果并将支付结果返回给客户端;

目前各个平台支持的设备情况如下:
Android平台SDK主要适用于Android 2.1及以上版本的终端设备;
iOS版本支付控件适用iOS 5.1及以上版本终端设备。


3. 客户端接入;

① SDK包的说明;

SDK分为以下两个版本:
a,支持纯无卡交易版本,该版本主要位于upmp_android/sdknocard目录下:
apk目录下包括了通过apk方式接入的UPPayPluginEx.apk;
jar目录下包括了静态库集成方式所需要的jar包、so文件(支持arm,armv7,x86和mips平台)和资源文件。

b,支持纯无卡交易和有卡交易的版本,有卡交易支持银联的迷你IC卡产品、智能SD卡产品、VIPOS产品等,该版本主要位于upmp_android/sdkPro目录下:
apk目录下包括了通过apk方式接入的UPPayPluginExPro.apk
jar目录下包括了静态库集成方式所需要的jar包、so文件(支持arm,armv7,x86和mips平台)和资源文件。
注意:
data.bin文件为图片资源文件,必须存放在工程的res/drawable目录下;
UPPayPluginEx.jar为jar包形式的控件,必须存放在工程的libs目录下;
libentryex.so为动态库文件,请根据需要存放于工程的libs/xxx/目录下,其中xxx为armeabi,armeabi-v7a,mips,x86之一。

②接口说明

upmp_android/UPPayAssistEx.jar包中定义了启动支付控件的接口,接口定义如下:
public static int startPay(Activity activity, String spId,String sysProvider, String orderInfo, String mode)
参数说明:
activity ——用于启动支付控件的活动对象
spId ——保留使用,这里输入null
sysProvider ——保留使用,这里输入null
orderInfo ——订单信息为交易流水号,即TN。
mode —— 银联后台环境标识,“00”将在银联正式环境发起交易,“01”将在银联测试环境发起交易
返回值:
UPPayAssistEx.PLUGIN_VALID —— 该终端已经安装控件,并启动控件
UPPayAssistEx.PLUGIN_NOT_FOUND —— 手机终端尚未安装支付控件,需要先安装支付控件

其它辅助接口:
public static boolean installUPPayPlugin(Context context)
参数说明:
context ——安装控件的上下文
返回值: true ——安装正常,false ——安装失败

③添加SDK包

android 手机银联支付接入有两种方式,1是apk方式,即调用银联已经写好的apk(该apk也存在我们的项目中);2是jar包的方式;

apk方式:


拷贝upmp_android\sdknocard\UPPayAssistEx.jar(或upmp_android\sdkPro\UPPayAssistEx.jar)到工程的libs\目录下,选中jar包点击右键,选择buildPath;
同时也可将upmp_android\sdknocard\apk\UPPayPluginEx.apk (或upmp_android\sdkPro\apk\UPPayPluginExPro.apk)复制到客户端工程的assets目录下

jar包方式:


拷贝upmp_android\sdknocard\UPPayAssistEx.jar;unionPay\sdknocard\jar\UPPayPluginEx.jar(或upmp_android\sdkPro\UPPayAssistEx.jar;upmp_android\sdkPro\UPPayPluginEx.jar)到工程的libs\目录下,选中jar包点击右键,选择buildPath;
拷贝upmp_android\sdknocard\data.bin存放在工程的res/drawable目录下,该文件为图片资源文件;

拷贝upmp_android\sdknocard\libentryex.so根据需要存放于工程的libs/xxx/目录下,其中xxx为armeabi,armeabi-v7a,mips,x86之一,该文件为动态库文件。

权限设置:

在manifest.xml中进行权限设置,具体如下:

<span style="white-space:pre"></span><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.ACCESS_WIFI_STATE"/>    <uses-permission android:name="android.permission.READ_PHONE_STATE" />



④调用支付控件

a) 在调用支付控件的代码文件中引入UPPayAssistEx类如:
import com.unionpay.UPPayAssistEx;
b) 接着可以通过以下方式调用支付控件:
// “00” – 银联正式环境// “01” – 银联测试环境,该环境中不发生真实交易String serverMode = “01”;int ret = UPPayAssistEx.startPay ( activity, null, null, tn, serverMode);if( ret == UPPayAssist.PLUGIN_NOT_FOUND ){<span style="white-space:pre"></span>//安装Asset中提供的UPPayPlugin.apk<span style="white-space:pre"></span>// 此处可根据实际情况,添加相应的处理逻辑<span style="white-space:pre"></span>UPPayAssistEx.installUPPayPlugin(activity);}


支付完成后,获取支付控件支付结果,并添加相应处理逻辑,只需实现调用Activity中的onActivityResult()方法即可,实例代码如下:
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) ){showResultDialog(" 支付成功! ");}else if( str.equalsIgnoreCase(R_FAIL) ){showResultDialog(" 支付失败! ");}else if( str.equalsIgnoreCase(R_CANCEL) ){showResultDialog(" 你已取消了本次订单的支付! ");}}


4. 注意事项

android 手机银联支付接入有两种方式,1是apk方式,即调用银联已经写好的apk(该apk也存在我们的项目中);2是jar包的方式;


更多相关文章

  1. apk自我保护的一种实现方式——运行时自篡改dalvik指令
  2. Android(安卓)在代码中控制View的填充方式和宽度、高度
  3. Android中如何使控件保持固定宽高比
  4. android基础之创建和解析xml
  5. Android(安卓)XML解析学习——Sax方式
  6. android:打开系统联系人界面并获取数据
  7. Android(安卓)LinearLayout详解
  8. TextView 点击事件无效的完美解决
  9. androd 事件分发机制的初步理解

随机推荐

  1. Android(安卓)Studio 报错小记
  2. Android(安卓)实现 选择文件对话框
  3. android SQLite
  4. 设置Android程序的默认安装位置
  5. android 获取 imei号码
  6. 2011.10.11——— android GestureDetect
  7. TabActivity的使用遇到的问题
  8. Android(安卓)手机震动 设置震动时间
  9. Android中获得上下文的静态方法
  10. 2011.09.13——— android Bitmap.Config