一個簡單輕便的移動支付整合庫FastPay

先放上地址GitHub,歡迎star,歡迎給我發issues
也歡迎star我另外的庫LDialog
LPhotoPickerjava

RxJava版本android

FastPay

**(LiveData版本)**一個集成微信、支付寶、銀聯支付的小巧庫,本庫採用LiveData響應數據,具備LiveData的全部優勢,例如生命週期的感知。
本庫不提供任何邏輯,主要是提供庫的集成,省去配置時間,以簡單、輕量爲主,不作過分封裝。
三個支付平臺庫相互獨立,可根據項目,單獨使用,避免臃腫git

獲取

先在 build.gradle 的 repositories 添加倉庫:github

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
複製代碼

在dependencies中添加:安全

dependencies {
    //(根據須要,選擇對應包導入)
    //支付寶
    implementation 'com.github.limuyang2.FastPay:alipaylibrary:0.1'
    //微信
    implementation 'com.github.limuyang2.FastPay:wechatpaylibrary:0.1'
    //銀聯
    implementation 'com.github.limuyang2.FastPay:unionpaylibrary:0.1'
}
複製代碼

使用

微信
服務器

wxtips.png

銀聯
微信

uniontips.png

  • 根據以上官方文檔所示,移動端屬於不安全端,數據容易被篡改,因此不能以客戶端返回結果做爲用戶支付的結果

(重要) 使用建議:onSuccessonFailed方法能夠不用重寫,全部的結果均在onComplete中去進行服務器查詢
如下示例爲kotlin。惟一區別在於java實例化Observer時,請在"xxObserver"前加上"Java",例如:WxPayObserver,java使用"JavaWxPayObserver"app

JavaDemoActivitymaven

微信使用

// …………後臺服務器返回的訂單數據,填入下方
val request = PayReq()
request.appId = "wx7e16cf49c52635e2"
request.partnerId = "1900000109"
request.prepayId = "1101000000140415649af9fc314aa427"
request.packageValue = "Sign=WXPay"
request.nonceStr = "1101000000140429eb40476f8896f4c9"
request.timeStamp = "1398746574"
request.sign = "7FFECB600D7157C5AA49810D2D8F28BC2811827B"

FastWxPay("wx7e16cf49c52635e2", this).pay(request, object : WxPayObserver {
    override fun onSuccess() {
        //成功,微信app返回的結果。
        //(能夠不重寫;若是重寫,建議僅做爲調試打印Log使用)
        //注意必定不能以客戶端返回做爲用戶支付的結果,應以服務器端的接收的支付通知或查詢API返回的結果爲準
    }

    override fun onFailed(message: String) {
        //失敗,微信app返回的結果。
        //(能夠不重寫;若是重寫,建議僅做爲調試打印Log使用)
        //注意必定不能以客戶端返回做爲用戶支付的結果,應以服務器端的接收的支付通知或查詢API返回的結果爲準
    }

    override fun onCancel() {
        //取消
    }

    override fun onComplete() {
       // onSuccess,onFailed 都會走到這裏
       // 不論成功與否,都在此對服務器進行查詢,一切數據,以服務器爲準
    }
})
複製代碼

支付寶使用

支付寶官方須要獲取android.permission.READ_PHONE_STATE權限,建議動態獲取給與ide

// …………後臺服務器返回的訂單數據,填入下方
val orderInfo = "app_id=2015052600090779&biz………………………………"
FastAliPay(this).pay(orderInfo, object : AliPayObserver {
    override fun onSuccess() {
        //(能夠不重寫;若是重寫,建議僅做爲調試打印Log使用)
    }

    override fun onFailed(message: String) {
        //(能夠不重寫;若是重寫,建議僅做爲調試打印Log使用)
    }

    override fun onCancel() {
    }

    override fun onComplete() {
        // onSuccess,onFailed 都會走到這裏
        // 不論成功與否,都在此對服務器進行查詢,一切數據,以服務器爲準
    }
})
複製代碼

銀聯支付

// …………後臺服務器返回的 銀聯tn 數據,填入下方
val tn = "869278591167656016600"
// UnionPayType.TEST 爲銀聯測試環境;UnionPayType.RELEASE 爲銀聯正式環境
FastUnionPay(this).pay(UnionPayType.TEST, tn, object : UnionPayObserver {
    override fun onSuccess() {
        Log.d("FastUnionPay", "onSuccess")
     }

    override fun onFailed(message: String) {
        Log.d("FastUnionPay", message)
    }

    override fun onCancel() {
        Log.d("FastUnionPay", "onCancel")
    }

    override fun onComplete() {
        // onSuccess,onFailed 都會走到這裏
        // 不論成功與否,都在此對服務器進行查詢,一切數據,以服務器爲準
    }
})
複製代碼
相關文章
相關標籤/搜索