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阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342