关于Android集成Nets支付

最近做了一个跨境物流方面的项目,涉及到了很多国内不常使用的库,如Here地图,还有就是今天要总结的Nets支付了。国外的支付有很多,至于为什么选择用Nets支付,用客户的说法就是用的人多。嗯…可以的。好了,废话不多说,先接需求。
首先打开网址登录账号准备查看文档NetsPay
好吧,不出意外的英文,先撸上翻译再说
简单看完一遍后大概明白了什么意思,和普通的集成三方库的姿势差不多,都是注册账号创建应用然后获取apikey什么的,再按照文档的集成步骤执行。虽然有的地方翻译的很生硬,但是不影响总体集成流程。我们按照文档一顿操作之后终于算是集成好了吧。对了,nets支付是集成arr文件的形式。先来运行下看看有没有报错吧。果然,和我自己项目的okhttp3冲突了(意思就是gradle懵逼了,不知道用哪个了)。这种情况以前也总遇到过,以前的解决方法就是去集成的sdk的源码中把冲突的依赖删除。但是这次不行,由于是引入arr方式集成的所以不能去修改源码。首先想到了怎么去删除aar文件中的okhttp依赖。于是很长时间过去了…一顿操作下来还是没有成功…没办法,开始百度,搜了一堆,有解决的方案,反正大概都是一种方法,在build.gradle中写上一句代码,意思就是删除相同的依赖(可以理解为当自身项目中的依赖和三方库的依赖重复时只用一个),感觉完美解决,再运行,这次直接崩溃了。赶紧查看日志,定位到了自己项目中封装的Retrofit网络请求的代码片,有个自定义拦截器空指针。are you kidding me?先不慌,咱们先分析一下,于是半个小时过去了…应该是我在gradle添加的那行代码默认了用nets库中的依赖,然后开始想解决方案,于是又很长时间过去了…不出意外地没有好的解决方法,一咬牙干脆把自己项目中的Retrofit的拦截器那给注释掉吧(由于项目时间很紧,没有办法)。然后再运行,嗯,果然可以了。但是这种解决方法也太…(项目空档期再回头仔细研究一下吧,前任小伙伴遗留的历史问题…)。
ok,现在可以开始撸代码了,nets支付官网给出了demo,先下载下来看看。不难:

PaymentRequestManager manager = PaymentRequestManager.getSharedInstance();try {manager.sendPaymentRequest(key, hmac, txnReq, new PaymentCallback() {@SuppressLint("LongLogTag")@Overridepublic void onResult(PaymentResponse paymentResponse) {// To implement callback functionsif (paymentResponse instanceof DebitCreditPaymentResponse) {final DebitCreditPaymentResponse debitCreditPaymentResponse = (DebitCreditPaymentResponse) paymentResponse;String txnRes = debitCreditPaymentResponse.txnResp;String hmac = debitCreditPaymentResponse.hmac;String keyId = debitCreditPaymentResponse.keyId;Log.d("DebitCreditPaymentResponse", "txnRes: " + txnRes);Log.d("DebitCreditPaymentResponse", "hmac: " + hmac);Log.d("DebitCreditPaymentResponse", "keyId: " + keyId);// Next 4 lines show a simplified verification.// Basically checking if the hmac returned tallies with a hmac generated by our secret key
//                                    String hmacVerification = HMAC_Gen.generateSignature(txnRes, sKey);
//                                    Log.d("DebitCreditPaymentResponse", "hmacVerification: " + hmacVerification);
//                                    if (hmacVerification.equals(hmac)){
//                                        Log.d("DebitCreditPaymentResponse", "Verification Successful");
//                                    }try {JSONObject txnJSON = new JSONObject(txnRes);JSONObject msg = txnJSON.getJSONObject("msg");String stageRespCode = msg.getString("stageRespCode");Toast.makeText(TransportPaymentActivity.this, "Payment Success\nstageRespCode: " + stageRespCode, Toast.LENGTH_LONG).show();Log.d("DebitCreditPaymentResponse", "stageRespCode: " + stageRespCode);} catch (JSONException e) {e.printStackTrace();}// NETSPay payment will result in this callback.} else if (paymentResponse instanceof NonDebitCreditPaymentResponse) {final NonDebitCreditPaymentResponse nonDebitCreditPaymentResponse = (NonDebitCreditPaymentResponse) paymentResponse;String txn_Status = nonDebitCreditPaymentResponse.status;Log.d("nonDebitCreditPaymentResponse", "txn_Status: " + txn_Status);Toast.makeText(TransportPaymentActivity.this, "nonDebitCreditPaymentResponse Payment Success", Toast.LENGTH_LONG).show();}}@Overridepublic void onFailure(NETSError netsError) {String txn_ResponseCode = netsError.responeCode;String txn_ActionCode = netsError.actionCode;Log.d("netsError", "txn_ResponseCode: " + txn_ResponseCode);Log.d("netsError", "txn_ActionCode: " + txn_ActionCode);}}, context);} catch (InvalidPaymentRequestException e) {e.printStackTrace();Log.e("InvalidPaymentException", e.getMessage());} catch (Exception e) {e.printStackTrace();Log.e("Exception", e.getMessage());

能看出来需要几个参数 key,hmac,txnReq,这些都是在后台配置好了的,直接请求后台接口成功之后再获得以上三个参数然后传给nets就可以了。这里倒是没遇见什么问题。到这也就大功告成了,先喝一口我82年的矿泉水压压惊。嗯额,先吐出来一下,有个问题补充一下,上面的代码中有个地方需要传个context,吐槽一下,nets支付必须传AppCompatActivity,也就是说Activity必须继承自AppCompatActivity,但是我的项目中BaseActivity是继承的FragmentActivity,这怎么一步一个坑呢。没办法这个Activity单独适配吧…
这下终于可以了…

就在我要发表文章的时候,突然接到了不用Nets支付的通知,换用Stripe。我。。。干的漂亮(一口老血)

Android学习之路上努力奔跑的小白,欢迎各路大神指点,我要去撸gradle了,再见

Android集成Nets支付相关推荐

  1. Android集成微信支付

    Android集成微信支付 项目中集成第三方支付的功能,基本是我们app中经常用到的功能.今天先给大家讲一下微信支付的集成过程,重点只说一下代码部分.首先,你要到微信开发者平台注册账号,并创建你的应用 ...

  2. Android 集成微信支付和支付宝支付工具类

    Android 集成微信支付和支付宝支付工具类 1.前言 去年年底接了一个商城app 外包项目,里面尼涉及到 微信和支付宝支付,这里我整理出几个工具类,下面就和大家分享一下,废话不多说,下面我一步一步 ...

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

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

  4. Android集成微信支付之-天坑

    项目集成微信支付,折腾了三天左右,坑太多,做个简单记录 开通和主要原理不再讲了,参考微信支付官网 截个官网的业务流程图,下面好说明 1 支付结果回调(图中的17步) 支付结果回调,微信官方的说法是: ...

  5. android微信迁移数据,【CSDN博客迁移】Android集成微信支付之-天坑

    项目集成微信支付,折腾了三天左右,坑太多,做个简单记录 开通和主要原理不再讲了,参考微信支付官网 截个官网的业务流程图,下面好说明 微信支付业务流程.png 1 支付结果回调(图中的17步) 支付结果 ...

  6. Android集成银联支付

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

  7. Android 集成微信支付和支付宝

    最近比较闲,公司项目更换后台,于是自己来研究微信支付和支付宝支付,把自己学习的过程写下来,以备以后查看. 注:要集成微信支付和支付宝功能,必须要有以下几个配置信息,而这写信息需要公司去微信支付和支付宝 ...

  8. android如何实现支付宝,(Android集成支付宝支付)react-native实现支付宝支付

    网上关于RN的支付宝支付组件大部分都是IOS的,Android要实现支付宝支付只剩下走原生这一步了. 整体思路: 1.在蚂蚁金服开放平台申请应用 2.在android原生集成支付宝 3.封装andro ...

  9. Android 集成支付宝支付,支付宝支付2.0

    成功起调支付宝支付 下载支付sdk复制到libs文件夹下并add  as library:https://docs.open.alipay.com/54/104509 1.首先申请支付宝 企业账户  ...

最新文章

  1. 记录一下g++的编译选项
  2. Windows程序设计学习笔记(1):一个简单的windows程序
  3. LeetCode实战:排序链表
  4. SpringBoot服务整合(整合邮件服务、定时调度、Actuator监控)
  5. java的关于流程结构做的几个案例
  6. 《创造奇迹的编程语言也有黑历史!原来他还有这副面孔?!》
  7. Python BeautifulSoup和Requests爬虫爬取中关村手机资料
  8. 蓝鸽英语学习平台_蓝鸽集团携手英特尔,共筑智慧校园新生态——蓝鸽amp;英特尔智慧校园建设高峰论坛顺利举办...
  9. Web开发中的弹出对话框控件介绍
  10. 微信小程序微商城(一):https框架搭建并实现导航功能
  11. ERP系统的操作方法是什么?
  12. 97年大学计算机考试是 级,1997年4月等级考试一级笔试试卷、答案
  13. 在线制作SprinBoot的banner
  14. 怎么在中国使用chatgpt
  15. python3读取excel汉字_从excel文件python3读取汉字
  16. 这才是2019年最新资料!
  17. 如何搭建自己的微信公众号?
  18. ITN网络课程笔记(四)
  19. 微信公众号笔记(二)
  20. 以上证指数为例学习pandas数据分析

热门文章

  1. 计算机实际机器与虚拟机器的概念,第1章 计算机系统结构的基本概念.ppt
  2. 科技百咖 | 错位竞争 华胜信泰如何下活国产基础软件这盘棋?
  3. 拓保软件喜获【年度最佳数字化服务商】大奖!专业能力获业界认可
  4. 雷电模拟器怎么让有一些用另外一条网络_农村家庭电视接收天线的雷电防护措施...
  5. c++实现高斯牛顿法(Gauss-Newton method)原理
  6. 机器人送丝软管型号和代码_国产焊接机器人的送丝系统可以三种不同的方式送丝...
  7. 使用LSTM网络做预报(Forecast)
  8. 漏洞复现-Phpmyadmin setup.php反序列化漏洞(WooYun-2016-199433)
  9. 攻防世界 工控安全取证
  10. ESP32 3个串口使用