Android 微信-支付寶 支付功能實踐記錄

——不要假裝很努力,結果不會陪你演戲

前言
一、簡介
二、用戶使用支付流程
三、微信支付
——1.集成準備
——2.Android集成
四、支付寶支付
——1.集成準備
——2.Android集成
五、內容推薦


前言

——新的一年開始了,愿好事接二連三,心情四季如春,生活五顏六色、七彩繽紛,偶爾“八”點小財,煩惱拋到九霄云外,請接受我十心十意的祝福:元旦快樂。

——那么如何發點小財呢? 不妨試試在自己的APP中接入支付功能,就像淘寶那樣出售自己的商品。坐等錢到賬。想想就開始流口水,不過還是不要白日做夢了。先學會如何集成支付功能,再來考慮下一步。最近又接了支付功能,順便就寫下這篇。當然詳細文檔官方文檔寫的很詳細,這里就大概講下流程。不會太詳細。。。

一、簡介

——接完之后發現,支付功能代碼接入變簡單了。主要還是第三方服務提供的功能越發完善,而且文檔也描述的很詳細。但是還是有很麻煩的地方,就是前期的準備工作。在這里提醒那些想做支付功能的同胞,先去微信/支付寶 開放平臺 注冊項目并開通支付功能。若這些工作都完成了,后續工作就相當簡單了。

二、用戶使用支付流程

——在開始集成前,有必要先了解下。用戶是如何使用支付功能的。有利于對集成的理解

  1. 步驟1:用戶進入商戶APP(例淘寶),選擇商品下單、確認購買,進入支付環節。
  2. 步驟2:用戶點擊后發起支付操作,進入到微信/支付寶界面,調起支付,出現確認支付界面。
  3. 步驟3:用戶確認收款方和金額,點擊立即支付后出現輸入密碼界面。
  4. 步驟4:輸入正確密碼后,支付完成,用戶端出現支付詳情頁面。
  5. 步驟5:回跳到商戶APP中,商戶APP根據支付結果個性化展示訂單處理結果。

——微信/支付寶的使用流程都是差不多的。

三、微信支付

1.集成準備

簡介:在微信開放平臺創建項目獲取AppId并開通支付功能

(1)登錄微信開放平臺注冊應用:https://open.weixin.qq.com/

(2)App端開發步驟:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5#


(3)業務流程圖:

對微信支付整體流程有了大概了解之后,我們就可以更輕松的對接支付。

2.Android集成

資源下載頁

(1)添加依賴

dependencies {
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}

(2)調用接口

//微信支付
//1\. 將該app注冊到微信
val createWXAPI = WXAPIFactory.createWXAPI(this, null)
createWXAPI.registerApp("appid")
//2\. 調用微信支付
btn_pay.setOnClickListener {
    it.setEnabled(false)
    //檢查是否安裝了微信
    if (createWXAPI.isWXAppInstalled){
        Toast.makeText(this, "未安裝微信", Toast.LENGTH_SHORT).show()
        return@setOnClickListener
    }
    //檢查微信版本是否支持支付
    if (createWXAPI.getWXAppSupportAPI() < Build.PAY_SUPPORTED_SDK_INT){
       Toast.makeText(this, "請升級微信版本", Toast.LENGTH_SHORT).show()
    }
    val request = PayReq().apply {
        appId = "appId "
        partnerId = "partnerId "
        prepayId = "prepayId "
        packageValue = "packageValue "
        nonceStr = "nonceStr "
        timeStamp = "timeStamp "
        sign = "sign "
    }
    createWXAPI.sendReq(request)
    it.setEnabled(true)
}

(3)支付回調

1.在 包名 下新建 wxapi 文件并加入 WXPayEntryActivity.class 微信回調類
2.清單中添加:

<activity
    android:name=".wxapi.WXPayEntryActivity"
    android:exported="true"
    android:launchMode="singleTop"/>

3.WXPayEntryActivity

class WXPayEntryActivity :  AppCompatActivity(), IWXAPIEventHandler {
    companion object{
        val TAG:String = "WXPayEntryActivity"
    }
    private var api : IWXAPI?=null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(com.blcs.paysdk.R.layout.pay_result)
        api = WXAPIFactory.createWXAPI(this, WxPayUtils.APP_ID)
        api?.handleIntent(intent, this)
    }
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        setIntent(intent)
        api?.handleIntent(intent, this)
    }
    override fun onReq(p0: BaseReq?) {
        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
    }

    override fun onResp(resp: BaseResp?) {
        if (resp?.getType() === ConstantsAPI.COMMAND_PAY_BY_WX) {
            when (resp.errCode) {
                0 -> {//支付成功 }
                -1-> {//錯誤,可能的原因:簽名錯誤、未注冊APPID、項目設置APPID不正確、注冊的APPID與設置的不匹配、其他異常等 }
                -2-> {//用戶取消,無需處理。發生場景:用戶不支付了,點擊取消,返回APP。 }
            }
            finish()//這里需要關閉該頁面
        }
    }
}

集成比以前更簡單了,文檔描述也非常詳細。更新很快,建議大家去看文檔。因為該篇也會過時,所以就簡單梳理一下。

四、支付寶支付

1.集成準備

(1)登錄支付寶開放平臺注冊應用:https://open.alipay.com/platform/home.htm

(2)開發文檔:https://docs.open.alipay.com/204

(3)支付流程圖:

(4)業務流程圖

2.Android集成

(1)資源下載頁

(2)添加依賴包

1.下載SDK后將alipaySdk-15.5.7-20181023110917.aar 包放在您的應用工程的 libs

2.主項目的 build.gradle 中,將 libs 目錄作為依賴倉庫

allprojects {
    repositories {
        // 添加下面的內容
        flatDir {
            dirs 'libs'
        }
        // ... jcenter() 等其他倉庫
    }
}

3.在App Module 的 build.gradle 中,將支付寶 SDK 作為項目依賴

dependencies {
    // 添加下面的內容
    compile (name: 'alipaySdk-15.5.7-20181023110917', ext: 'aar')

    // ... 其他依賴項
}

4.調用接口(orderInfo 是訂單信息,由后臺提供。)

public fun zfbPay(orderInfo: String) {
    Observable.create<Map<String, String>> {
        val alipay = PayTask(this)
        val result = alipay.payV2(orderInfo, true)
        it.onNext(result)
    }.compose(RxUtils.applySchedulers()).subscribe {
        //支付結果獲取和處理
        val payResult = PayResult(it)
        val resultInfo = payResult.result// 同步返回需要驗證的信息
        val resultStatus = payResult.resultStatus
        // 判斷resultStatus 為9000則代表支付成功
        if (TextUtils.equals(resultStatus, "9000")) {
            toast("支付成功")
            Log.e(" resultInfo ", "" + payResult)
        } else {
            Log.e(" resultInfo ", "" + payResult)
            toast("支付失敗" + payResult.memo)
        }
    }
}

5.返回碼

五、內容推薦

若您發現文章中存在錯誤或不足的地方,希望您能指出!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,732評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,214評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,781評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,588評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,315評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,699評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,698評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,882評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,441評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,189評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,388評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,933評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,613評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,023評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,310評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,112評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,334評論 2 377