银联支付安卓版服务评测

转载地址:http://www.devstore.cn/evaluation/testInfo/98-133.html

评测环境

3G/wifi网络下:

测试对象

银联手机手机支付

测试版本

银联手机支付2.1.3

测试系统

Android 4.1.2

测试手机

HTC ONE

手机网络

3G/wifi

测试方法

客户端集成银联手机支付资源并调用API进行支付测试

测试时长

1小时

测试难度

简单

测试环境

Window7+Eclipse+HTC ONE

测试效果

稳定,流畅,支付安全


基本参数:

集成难度

SDK集成简单,但版本升级时需注意资源替换位置

操作难度

简单

支持系统

Android、IOS

稳定性

安全性

集成过程

客户端集成

一 客户端集成

银联手机支付SDK以分为无卡交易版本和有卡交易版本。有卡交易支持银联的迷你IC卡,智能SD卡及VIPOS等产品,普通手机客户端支付集成无卡交易版本即可。

1.获取SDK资源及文档

银联目前还未开放SDK下载,需和银联商务索取。

集成无卡交易支付需导入资源主要包括以下三部分:

    1)UPPayAssistEx.jar,UPPayPluginEx.jar;

    2)data.bin;

    3)armeabi/libentryex.so

    armeabi-v7a/libentryex.so

    mips/libentryex.so

    x86/libentryex

2.导入资源

    1)将sdknocard/UPPayAssistEx.jar和sdknocard/jar/UPPayPluginEx.jar复制到工程目录libs下,将sdknocard/jar/ 下的armeabi,armeabi-v7a,mips和x86四个文件夹及文件夹下的.so文件复制到工程目录的libs下。集成完效果图如下:


2)data.bin为图片资源文件,必须放在工程的res/drawable目录下。

集成效果图:


3.修改Manifest

    1)在工程的AndroidManifest.xml增加Activity声明:

1 <activity
2             android:name="com.unionpay.uppay.PayActivityEx"
3             android:configChanges="orientation|keyboardHidden|screenSize"
4             android:excludeFromRecents="true"
5             android:screenOrientation="portrait"
6             android:windowSoftInputMode="adjustResize" >
7         </activity>
8         <activity android:name="com.unionpay.uppay.PayActivity" >

    2)添加权限声明:

01 <uses-permission 
02         android:name="android.permission.INTERNET"/>
03     <uses-permission 
04         android:name="android.permission.ACCESS_NETWORK_STATE"/>
05     <uses-permission 
06         android:name="android.permission.CHANGE_NETWORK_STATE"/>
07     <uses-permission 
08         android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
09     <uses-permission 
10         android:name="android.permission.READ_PHONE_STATE"/>
11     <uses-permission 
12         android:name="android.permission.ACCESS_WIFI_STATE"/>

至此,银联SDK资源导入完毕。


二 订单支付流程

在调用客户端支付接口之前,商户服务器需先向银联服务器获取交易流水号(TN),该值将作为调用客户端API参数之一。商户消费流程图:


获取TN号后就可调用SDK的API发起支付操作。

1.服务器获取交易流水号

商户服务器根据商户属性及订单属性向银联换取交易流水号(TN)

01 Map<String, String> req = new HashMap<String, String>();
02 req.put("version""2.1.3");// 版本号
03 req.put("charset""UTF-8");// 字符编码
04 req.put("transType""01");// 交易类型
05 req.put("merId""*******");// 商户代码
06 req.put("backEndUrl""**********");// 通知URL
07 req.put("frontEndUrl""*********");// 前台通知URL(可选)
08 req.put("orderDescription""订单描述");// 订单描述(可选)
09 req.put("orderTime"new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));// 交易开始日期时间yyyyMMddHHmmss
10 req.put("orderTimeout""");// 订单超时时间yyyyMMddHHmmss(可选)
11 req.put("orderNumber""*******");// 订单号(商户根据自己需要生成订单号)
12 req.put("orderAmount""**********");// 订单金额
13 req.put("orderCurrency""156");// 交易币种(可选)
14 req.put("reqReserved""");// 请求方保留域(可选,用于透传商户信息)
15 req.put("merReserved""");// 商户保留域(可选)
16 RequestParams params = new RequestParams(req);
17 //网络请求
18 //...
19 //网络请求
20 String tn = resp.get("tn");

2.客户端调用SDK支付API

1 UPPayAssistEx.startPayByJAR(this①, PayActivity.class②, null③, null④, tn⑤, mode⑥);

参数说明:

序号

说明

1

调用支付的Activity上下文

2

支付插件代表类,填入“PayActivity.class”即可

3

填null即可

4

填null即可

5

传入通过银联获取的交易流水号(TN)

6

连接环境,传入则连接银联生产环境,传入则连接银联测试环境

3.支付结果获取和处理

    1)客户端同步获取

客户端需在onActivityResult中监听银联支付结果。银联将支付结果包装到了Intent data中,且requestCode=10。

客户端支付结果回调信息:

1 requestCode=10,Bundle[{pay_result=success}]

客户端支付结果代码示例:

01 @Override
02 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
03 switch (requestCode) {
04 case 10:
05 Bundle b = data.getExtras();
06         String str = b.getString("pay_result");
07         if (str.equalsIgnoreCase("success")) {
08          Log.d("UPTest","onActivityResult,银联支付成功");
09         else if (str.equalsIgnoreCase("fail")) {
10          Log.d("UPTest","onActivityResult,银联支付失败");
11         else if (str.equalsIgnoreCase("cancel")) {
12          Log.d("UPTest","onActivityResult,银联支付取消");
13         }
14 break;
15   
16 default:
17 break;
18 }
19 }

    2)商户服务器异步获取

成功进行支付操作后,银联会通过post形式将商品支付信息通知到商户服务器。银联为支付通知设置了10秒超时时间,所以商户接到银联支付结果并确认无误后应立即答复银联返回码为200的通知,否则银联会认为通知失败。此外,超过10秒未答复银联也会认为是通知失败。银联会多次发送通知失败的支付结果,次数最多为5次。此外,由于网络等客观环境原因,商户可能会多次通知同一次支付结果,这时需商户在自己服务器进行逻辑判断并处理。

主要功能

常用银行卡支付:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值