Android app支付-银联支付
来源:互联网 发布:用聚类分析矩阵matlab 编辑:程序博客网 时间:2024/04/29 07:34
前段时间集成了银联、微信和支付宝,感觉银联和微信的集成过程都是比较容易的,只有支付宝在和后台进行加签的过程中容易出错,导致支付失败。自己总结了集成的过程,希望可以分享和记录下来。
一.银联的demo和jar包下载流程就不细讲了,可以到官网进行下载。
二.支付流程:
1.银联支付流程图:
三.支付流程文字讲解:
1.在客户端提交用户选择的产品信息,如:价格、产品名称等信息到我们的服务端。
2.我们的服务端会从银联服务端返回一个流水号(21位纯数字)给客户端。
3.客户端通过这个流水号(即是tn)调用起银联的支付界面。
4.然后我们在银联的支付控件填写银行卡等信息,支付控件会把这些信息发送到银联服务端。
5.最终银联服务端把支付结果返回我支付控件,支付控件会调用当前Activity的onActivityResult()方法。
四.开发步骤:(在AndroidStudio中开发)
一.导入jar包、.so文件、bin文件和在AndroidManifest配置一些信息。
1.添加资源文件
在我们中银联官网下载的文件中找到libentryexpro.so和ibuptsmaddon.so文件,并拷贝到
工程的libs/xxx/目录下,其中xxx为 armeabi-v7a、armeabi、arm64-v8a、x86、x86_64中之一;拷贝UPPayAssistEx.jar和UPPayPluginExPro.jar到libs目录下;在工程中新建一个assets目录,把data.bin复制到该目录下。
2.在AndroidManifest文件下配置。
<application><!--工程其它配置此处省略…--><uses-library android:name="org.simalliance.openmobileapi" android:required="false"/><activityandroid:name="com.unionpay.uppay.PayActivity"android:label="@string/app_name"android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden"android:excludeFromRecents="true"android:windowSoftInputMode="adjustResize"/> <activity android:name="com.unionpay.UPPayWapActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:windowSoftInputMode="adjustResize"/></application> <textarea readonly="readonly" name="code" class="java"> 配置一些权限:<uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.NFC" /><uses-feature android:name="android.hardware.nfc.hce"/><uses-permissionandroid:name="android.permission.RECORD_AUDIO"/><uses-permissionandroid:name="android.permission.MODIFY_AUDIO_SETTINGS"/><uses-permissionandroid:name="org.simalliance.openmobileapi.SMARTCARD" /></textarea>二.前期工作都做好了,是时候开始写代码了。
1.第一步是向后台发送请求,把金额和订单信息传给后台。
2.我使用的是retrofit和Rxjava网络请求,这是我请求后台成功后调用的方法。
// “00” – 银联正式环境
// “01” – 银联测试环境,该环境中不发生真实交易
@Override public void getBankPayCodeSuccess(String model) { int ret = UPPayAssistEx.startPay(PayMentActivity.this, null, null, model, "00"); if (ret == PLUGIN_NEED_UPGRADE || ret == PLUGIN_NOT_INSTALLED) { // 需要重新安装控件 NormalAlertDialog dialog = new NormalAlertDialog.Builder(PayMentActivity.this) .setBoolTitle(true) .setContentText("完成购买需要安装银联支付控件,是否安装?") .setLeftText("取消") .setRightText("确认") .setHeight(0.23f) .setWidth(0.75f) .setOnclickListener(new DialogInterface.OnLeftAndRightClickListener<NormalAlertDialog>() { @Override public void clickLeftButton(NormalAlertDialog dialog, View view) { dialog.dismiss(); } @Override public void clickRightButton(NormalAlertDialog dialog, View view) { UPPayAssistEx.installUPPayPlugin(PayMentActivity.this); dialog.dismiss(); } }).setTouchOutside(true) .build(); dialog.show(); } }model就是我们的服务端返回的流水号,然后我们通过银联jar的
UPPayAssistEx.startPay(PayMentActivity.this, null, null, model, "00")方法去调起银联支付控件。
3.重写onActivityResult(intrequestCode,intresultCode, Intent data)方法,在该方法中判断支付的结果。
if( data == null ){return;}String str = data.getExtras().getString("pay_result");if( str.equalsIgnoreCase(R_SUCCESS) ){ // 支付成功后,extra中如果存在result_data,取出校验// result_data结构见c)result_data参数说明 if(data.hasExtra("result_data")) {String sign = data.getExtras().getString("result_data"); } else {// 未收到签名信息// 建议通过商户后台查询支付结果}}else if( str.equalsIgnoreCase(R_FAIL) ){showResultDialog(" 支付失败! ");}else if( str.equalsIgnoreCase(R_CANCEL) ){showResultDialog(" 你已取消了本次订单的支付! ");
到这一步,银联支付基本完成了,在官方的demo中,会有一个验签证书的过程,我们在开发时你不需要,直接删掉
好,不然会支付失败。
原创博客,转载请注明:
http://blog.csdn.net/lgl5785592
- Android app支付-银联支付
- Android支付-银联支付
- Android app支付-支付宝
- Android 支付宝支付、微信支付、银联支付 整合第三方支付接入方法
- Android App + 支付宝
- android银联支付
- Android-银联支付
- android银联支付
- android银联支付
- android银联支付
- Android-银联支付
- Android-银联支付
- android 银联支付
- android APP集成支付宝支付
- Android版-支付宝APP支付
- Android app支付-微信支付
- Android第三方支付——支付宝APP支付
- app支付--支付宝支付
- JavaScript media queries
- [Unity3D]再次点击以退出程序
- 20170214.高斯牛顿法
- 对抗启发式代码仿真检测技术分析
- Java面试题(一)
- Android app支付-银联支付
- 最大公约数(GCD)和最小公倍数(LCM)模板
- 源码管理器VSS2005使用
- Google Chrome地址栏删除搜索记录-windows-Mac --sanai整理
- 一次 DNS 缓存引发的惨案
- HTTP严格安全传输(HTTP Strict Transport Security, HSTS)chromuim实现源码分析(一)
- strcmp函数
- UltraComboEditor和UltraCombo的介绍
- Windows 7 中文版命令行如何修改字符编码为UTF-8?