android银联支付

来源:互联网 发布:netbean python 编辑:程序博客网 时间:2024/06/11 01:19

银联支付教程:

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包的方式;


0 0
原创粉丝点击