Android银联控件支付开发流程
来源:互联网 发布:冯大辉 范凯 知乎 编辑:程序博客网 时间:2024/05/17 07:28
需要内容:
data.bin 、各型号的libentryexpro.so和libuptsmaddon.so
UPPayAssistEx.jar 、UPPayPluginExStd.jar(建议全部使用标准版)
编译版本建议19以上
开发步骤:
1、将所需bin文件,jar包,so文件拷入项目中,并AddLibrary
2、在清单文件中添加权限和银联支付插件权限
<uses-permissionandroid: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"/>
3、清单文件中注册银联支付activity(直接复制)
<activity
android:name="com.unionpay.uppay.PayActivity"
android:configChanges="orientation|keyboardHidden"
android:excludeFromRecents="true"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize"/>
4、选择商品下单,将订单信息传给服务器,服务器返回交易流水号tn
5、调用支付控件开始支付:
serverMode 00表示正式环境,01表示测试环境
String serverMode ="01";
String tn="";//从服务器获取的流水号
UPPayAssistEx.startPayByJAR(MainActivity.this,
PayActivity.class,"","",tn,serverMode);
6、在Activity的onActivityResult中获取支付结果
收到控件返回结果后,建议无视结果中的内容和签名信息,直接到自己的后台查状态,如果后台此时未收到全渠道的后台通知,则主动发起查询接口到全渠道查状态。这样可既保证APP中展示的订单状态和后台记录一致,也可及时更新后台记录的订单状态。
如仍希望使用控件返回的信息,验签时建议送到后台去验签;如果需要在APP中验签,则需要自行实现验签公钥更新的机制,否则银联更新密钥后会验签失败。
示例代码如下:
@Override
protected void onActivityResult(intrequestCode, intresultCode,Intent data) {
Log.e(TAG,"onActivityResult: ");
if (data ==null) {
Log.e(TAG,"onActivityResult: 是空");
return;
}
String str = data.getExtras().getString("pay_result");
if (str.equalsIgnoreCase("success")) {
Log.e(TAG,"onActivityResult: 支付成功!");
}else if (str.equalsIgnoreCase("fail")) {
Log.e(TAG,"onActivityResult: 支付失败!");
}else if (str.equalsIgnoreCase("cancel")) {
Log.e(TAG,"onActivityResult: 支付取消!");
}
}
result_data参数说明:
参数说明:
sign —— 签名后做Base64的数据
data —— 用于签名的原始数据
data中原始数据结构:
pay_result —— 支付结果success,fail,cancel
tn —— 订单号
result_data示例如下:
{ "sign" : "Xo/pgkzSJSlRTX2e+CjW/k1IjIV1newqfb7p1sDIpK/yPQv9p1jQAdAdKwhBwtyjO3tkFC6I2aLcTaxLHlYQx6/xw9QE0eumkVqAhypk/VyoDWZXxWske+EcduwEkBTxyIgA0ZsbKlpS1JxsciOc6bT+f36jTLa05ZAKZTVErg9sAG3wMjae1TyKd2511Rvvi+tuihYgOmwuMnKzrqksEyqc69wloqi34qx0YqFolMeqQ1UfoglUhZy6s2s4ChKcxHjAFjp/rU/7iHudjAIGtO7+ySahArmw6ltuIxFWYEvpn5xI3Ceur1d11NBphK62it7kBZ1laxUFI98DzalVFQ==", "data" : "pay_result=success&tn=899394085660622736701&cert_id=68759585097"}
支付流程图:
- Android银联控件支付开发流程
- 银联支付开发流程
- Android支付宝支付开发流程
- Android 支付宝支付开发流程
- Android支付sdk开发流程
- iOS 银联支付开发流程
- Android-银联支付开发
- Android-银联支付开发
- Android-银联支付开发
- Android-银联支付开发
- Android-银联支付开发
- Android-银联支付开发
- 银联支付流程
- 银联支付流程
- android微信支付开发流程
- Android微信支付开发流程
- Android 微信支付开发流程
- android支付宝、微信支付开发流程
- 37 《这才是心理学》 -豆瓣评分9.0
- 【大话数据结构】字符串及模式匹配
- Android 获取File类视频文件的总时长
- 锁优化的建议
- bzoj2654 二分答案+最小生成树
- Android银联控件支付开发流程
- linux下mysql的卸载、安装全过程
- 微信小程序结构简介
- Git学习笔记
- Activity的onNewIntent方法执行时间
- 1. Two Sum 使用unsorted_map或者vector的sort函数
- python正则表达式初探
- java调用有道翻译接口
- sql中left join后用on还是where