根据公司项目的需要,项目中集成银联支付,集成的步骤如下:

1. 集成银联支付的sdk到项目中

下载银联支付官方提供的demo和sdk,如图片中所示,将UPPayAssistEx.jar和UPPayPluginExPro.jar两个jar包放入libs文件夹下,将data.bin文件放到assets文件夹下,将手机cpu支持文件放到jniLibs文件夹下。

2. 将官方提供的代码文件,放入到自己的代码中。

3. 在AndroidManifest.xml文件中引入相应的activity

4.  对支付按钮做相应的监听

ib_payment_yinlian.setOnClickListener { toYinLianPay() }

5. 查询商户服务器后台,获取支付需要的信息

private fun toYinLianPay() {val orderCode = intent.getStringExtra(ExtraHelper.ORDER_CODE) ?: return ToastUtils.showShort(R.string.error_get_order_code_failed)val paymentAmount = intent.getStringExtra(ExtraHelper.ORDER_PAYMENT_AMOUNT)val d = NetApi.getAliPay(orderCode, YINLIAN_PAY, paymentAmount).compose(RxHelper.applyLoading(DialogHelper.loading(this))).subscribe({ res ->handleYinLianData(res.data!!)}, { it ->ToastUtils.showShort("${it.message}")})disposables.add(d)}

6. 根据从商户服务器获取到的订单信息和银联支付tn的值,向银联服务器发出支付请求

处理支付所需信息的代码

private fun handleYinLianData(data: AliPayModel) {mPayRecordId = data.payRecordIdval tn = data.payUrlLog.e("ddd","tn" + tn)Log.e("ddd","mPayRecordId" + mPayRecordId)val yinLianPayRunnable = Runnable {val msg = Message()msg.what = SDK_PAY_UPPAY.toInt()msg.obj = tnhandler.sendMessage(msg)}val yinLianPayThread = Thread(yinLianPayRunnable)yinLianPayThread.start()
}

发出支付请求的代码:

private val handler = @SuppressLint("HandlerLeak")
object : Handler() {override fun handleMessage(msg: Message) {if (msg.what == SDK_PAY_UPPAY.toInt()){val tn = msg.objLog.i("charge", tn.toString())UPPayAssistEx.startPay (this@PaymentActivity, null, null, tn.toString(), "01")}}
}

7. 支付之后,根据支付成功或者失败的结果,将信息同步给商户服务器

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {/*** 步骤3:处理银联手机支付控件返回的支付结果*/if (data == null) {return}Log.e("sdsf","requestCode"+ requestCode)Log.e("sdsf","resultCode"+ resultCode)Log.e("sdsf","data"+ data)Log.e("sdsf","data.getExtras().getString(\"result_data\")"+ data.getExtras().getString("result_data"))var msg = ""/** 支付控件返回字符串:success、fail、cancel 分别代表支付成功,支付失败,支付取消*/val str = data.extras!!.getString("pay_result")if (str!!.equals("success", ignoreCase = true)) {// 支付成功后,extra中如果存在result_data,取出校验// result_data结构见c)result_data参数说明when {data.hasExtra("result_data") -> msg = "支付成功!"str.equals("fail", ignoreCase = true) -> msg = "支付失败!"str.equals("cancel", ignoreCase = true) -> msg = "用户取消了支付"}val builder = AlertDialog.Builder(this)builder.setTitle("支付结果通知")builder.setMessage(msg)builder.setInverseBackgroundForced(true)builder.setNegativeButton("确定") { dialog, which ->//                dialog.dismiss()val intent = Intent(this@PaymentActivity,MineOrdersListActivity::class.java)intent.putExtra(INTENT_ID,when{data.hasExtra("result_data") -> INTENT_TO_ORDER_PAIDstr.equals("fail", ignoreCase = true) -> INTENT_TO_ORDER_NO_PAIDelse ->INTENT_TO_ORDER_NO_PAID})startActivity(intent)}builder.create().show()}val orderCode = intent.getStringExtra(ExtraHelper.ORDER_CODE) ?: return ToastUtils.showShort(R.string.error_get_order_code_failed)
//        callBack(requestCode.toString(),resultCode,str,orderCode,"app","alipay")if (data.hasExtra("result_data")) {// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。Toast.makeText(this@PaymentActivity, "支付成功", Toast.LENGTH_SHORT).show()Log.e("dsfs","dsfdfssfdsfsdfsdf"+ mPayRecordId)val d = NetApi.synchPayLog(str,mPayRecordId.toString(),orderCode, data.getExtras().getString("result_data"), "app", "upacp").compose(RxHelper.applyLoading(DialogHelper.loading(this@PaymentActivity))).subscribe({}, { it ->ToastUtils.showShort("${it.message}")})disposables.add(d)intent(INTENT_TO_ORDER_PAID)} else {// 该笔订单真实的支付结果,需要依赖服务端的异步通知。Toast.makeText(this@PaymentActivity, "支付失败", Toast.LENGTH_SHORT).show()val d = NetApi.synchPayLog(str,mPayRecordId.toString(),orderCode, data.getExtras().getString("result_data"), "app", "upacp").compose(RxHelper.applyLoading(DialogHelper.loading(this@PaymentActivity))).subscribe({}, { it ->ToastUtils.showShort("${it.message}")})disposables.add(d)intent(INTENT_TO_ORDER_NO_PAID)}}

代码中 disposables方法的作用是向商户服务器请求token值所需的,如果你的商户服务器不设置请求需要的token,可以将这个方法删除掉。

完成了上述的步骤后,银联支付的功能就初步实现了。

android项目银联支付相关推荐

  1. Android集成银联支付

    银联支付是继支付宝于微信支付之后的第三大支付方式,如果你已经看过前两篇博文,学会支付宝和微信的支付集成方法,接下来,银联支付就很简单了. 支付宝支付流程博文 http://blog.csdn.net/ ...

  2. Android集成银联支付最新版3.8.5(银联真NM坑)

    Android集成银联支付(银联真N&M坑) 1.这是银联Android 开发包的下载地址开发包下载地址 2.下载完里面的内容是这样的 3.其实调起来银联支付(云闪付),就一句代码,其他的都是 ...

  3. android之银联支付,android端银联支付

    简单记录一下如何继承银联支付 下载银联支付的demo 1:拷贝sdk目录下的UPPayAssistEx.jar到libs目录下 2.data.bin至工程的res/drawable目录下 3:根据需要 ...

  4. android的银联支付,android 银联支付Demo

    [实例简介]/* * *使用Upomp_Pay_Demo关联说明 */ 1.需将PluginLink.java和com_unionpay_upomp_lthj_lib.jar放入到Upomp_Pay_ ...

  5. Android 接入银联支付

    1.打开银联开放平台 https://open.unionpay.com/ 注册账户 2.点击"技术集成"01选择手机控件支付开发包(安卓版) 3.根据 中国银联手机支付控件接入指 ...

  6. android安卓银联支付

    转: 内容见以下链接 http://www.360doc.com/content/14/0909/17/9200790_408206083.shtml

  7. 银联支付 android版本,Android Studio 银联支付

    SKD解压之后是这样的 然后按照控件使用指南中4.3项开始集成 注意 1.libentryexpro.so和libuptsmaddon.so先不要拷贝到工程的libs/xxx/目录下 2.UPPayA ...

  8. android移动支付——银联支付

    前言 这里开篇讲解一系列的Android相关的移动支付.移动支付也称为手机支付,用户使用移动的设备,完成对所购买商品或者服务的支付功能.包括远程支付(网上支付.短信支付),近场支付(刷卡.滴卡.pos ...

  9. Android开发之——银联支付初探

    前言 现在网上支付用的比较多的是微信支付,支付宝支付和银联支付.关于微信和支付宝支付前面已经讲过了,本文主要介绍关于银联支付集成的过程和步骤. 银联支付 资源查找 集成文档 点击上面的集成文档,打开如 ...

  10. android 实现银联程序,Android银联支付之AIDL的基本使用

    近期忙着银联支付接口的对接,银联支付的接口采用的 AIDL 进行通讯.那么我就和大家一起分享 AIDL 是如何使用的? AIDL 的全称为 Android Interface Definition L ...

最新文章

  1. 7-6 混合类型数据格式化输入 (C语言)
  2. 目标检测旋转增强源码
  3. CF785D Anton and School - 2
  4. iOS之CATiledLayer的属性简介和使用
  5. 博弈论(一):Nim游戏
  6. java 常用算法_Java基础之常用算法
  7. 那些年 我们都在...
  8. 私有服务器虚拟化软件市场排名,三大服务器虚拟化软件比拼 谁是最佳?
  9. 免费体验电信3G无线上网服务(全程展示)
  10. ​黑白照片怎么上色?黑白照片变彩色方法分享
  11. L1-norm (L1范数) L2-norm(L2范数)
  12. 一种具备过载检测和打嗝式保护功能的MBUS主机电路
  13. python爬取淘宝数据魔方_《淘宝数据魔方技术架构解析》阅读笔记
  14. 山野村夫的总提纲!……还是羞于见人啦=////=
  15. 教你怎么在Pycharm上安装Manim(Pycharm+Manim)
  16. 621. Task Scheduler
  17. Keil5新建GD32裸机程序工程模板
  18. LAMMPS学习系列(1)
  19. 精通Perl(第2版)
  20. JRTHW跳闸合闸监视继电器

热门文章

  1. linux字体不识别不了怎么办,Docker容器不识别宋体等字体怎么办
  2. html是什么意思 它是一种什么样的语言,HTML 是什么?
  3. 什么是无线WIFI空口
  4. js 删除obj对象的属性
  5. Lvgl7 基础对象(lv_obj)
  6. 用Squid和DNSPod打造自己的CDN详细教程
  7. STM32F4 ETH-Lwip以太网通信
  8. WordPress系列教程(二)----WordPress基本使用和常用设置
  9. 解决Android studio 导入工程慢的方法
  10. 【电力电子技术】整流电路