QuickPay-快速接入微信/支付宝/银联三种支付方式,帮助项目快速接入支付功能

项目开发中接入支付功能往往费时费力,不同的支付功能实现方式不一样也导致代码结构不统一,这款QuickPay将微信/支付宝/银联三种支付方式进行了统一封装,方便项目中快速接入支付功能,接口统一也便于功能维护和修改。

项目地址:https://github.com/ban54/QuickPay
接入方式:

  1. 在项目根目录的build.gradle中添加
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
     }
}
  1. 在project的build.gralde中增加依赖
dependencies {
    implementation 'com.github.ban54:QuickPay:v0.0.4'
}
  1. 微信支付对接
  • 在项目根package下建立的wxapi的子package, 并在这个package下新建一个类名为WXPayEntryActivity的类,继承自com.ban54.quickpay.wx.WXPayCallbackActivity,同时实现wxAppId的get()方法,返回接入app中微信开放平台注册的app id
  • 在AndroidManifest.xml中注册创建的WXPayEntryActivity类,并设置android:exported="true"
<activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" />
  • 调用微信支付接口,代码如下(WXPayParameter中的参数根据实际下单情况填充):
val payParameter = WXPayParameter()
payParameter.appId = "xxx"
payParameter.sign = "xxx"
payParameter.partnerId = "xxx"
payParameter.prepayId = "xxx"
payParameter.packageValue = "Sign=WXPay" // 固定值
payParameter.nonceStr = "xxx"
payParameter.timeStamp = "xxx"
PayHelper.pay(this, payParameter, mPayResultCallback)

mPayResultCallback的定义和使用请见“6. mPayResultCallback的定义和使用”

  1. 支付宝支付对接
    代码如下(AlipayParameter中的参数根据实际下单情况填充):
val payParameter = AlipayParameter("xxx")
PayHelper.pay(this, payParameter, mPayResultCallback)

mPayResultCallback的定义和使用请见“6. mPayResultCallback的定义和使用”

  1. 银联支付对接
    代码如下(UnionPayParameter中的参数根据实际下单情况填充):
val payParameter = UnionPayParameter()
payParameter.tn = "xxx"
PayHelper.pay(this, payParameter, mPayResultCallback)

mPayResultCallback的定义和使用请见“6. mPayResultCallback的定义和使用”

  1. mPayResultCallback的定义和使用
  • 作用:mPayResultCallback为PayResultCallback类实例,用于接收支付结果的回调(在主线程中执行)
  • 定义:代码如下
private val mPayResultCallback by lazy {
      object : PayResultCallback {
           override fun onSuccess(payParameter: PayParameter, payResult: PayResult) {
               // "支付成功"
           }

          override fun onFail(payParameter: PayParameter, payResult: PayResult) {
               // "支付失败: " + payResult.description
           }

          override fun onCancel(payParameter: PayParameter, payResult: PayResult) {
               // "支付取消"
           }

          override fun onWait(payParameter: PayParameter, payResult: PayResult) {
               // "支付等待"
           }
     }
}
  1. 其它
  • PayResult类:PayResult用于保存返回的支付结果,其中code代表支付结果状态,description代表支付结果描述,主要用于支付失败情况,subCode为错误细分码,日常使用可忽略
  • 微信支付调不起:排除接入问题和参数问题,微信支付很容易在这个场景卡住->“当前手机微信账号在另外一个手机上登录后“,这种只能手动去打开一下微信,属于微信自身问题。如果还不行,可以尝试在系统app设置中清除微信APP应用数据再试。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 互联网时代下的数字传播 摘要:从一个21世纪新时代大学生的角度,浅谈数字传播带来的社会影响以及大学生要具备的相关能...
    夏天的秘密花园阅读 183评论 0 0
  • 经历网络诈骗之后 不敢相信,网络诈骗竟然会发生在我身上,而且金额如此之大。没遇到过的人无法感同身受,真正遭遇后内心...
    发配于人海阅读 167评论 0 0
  • 今天还是有点开心的,都忍不住要告诉你,本来打算熬到全部成功的呢,可是又不想其他人比你先知道消息...... 然而你...
    自由和安阅读 476评论 3 1
  • 越是喜欢,越是熟悉,反而越不知道怎么相处了。我喜欢你喜欢到心猿意马,喜欢到无可救药,喜欢到影响了工作。我已无法正常...
    清溪浅浅流阅读 99评论 0 0
  • 几天前看刘润老师分享的区块链直播,挺有感触的。作为国内最棒的咨询师之一,刘润老师对于每一个行业都有其专业、敏锐、独...
    Hellc阅读 598评论 0 0