美文网首页Android开发Android开发Android开发经验谈
QuickPay-快速接入微信/支付宝/银联三种支付方式,帮助项

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

作者: ban54 | 来源:发表于2018-12-12 16:25 被阅读26次

    项目开发中接入支付功能往往费时费力,不同的支付功能实现方式不一样也导致代码结构不统一,这款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应用数据再试。

    相关文章

      网友评论

        本文标题:QuickPay-快速接入微信/支付宝/银联三种支付方式,帮助项

        本文链接:https://www.haomeiwen.com/subject/umcphqtx.html