美文网首页
Android 微信-支付宝 支付功能实践记录

Android 微信-支付宝 支付功能实践记录

作者: 斌林诚上 | 来源:发表于2020-01-01 22:01 被阅读0次

    ——不要假装很努力,结果不会陪你演戏

    前言
    一、简介
    二、用户使用支付流程
    三、微信支付
    ——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.返回码

    五、内容推荐

    若您发现文章中存在错误或不足的地方,希望您能指出!

    相关文章

      网友评论

          本文标题:Android 微信-支付宝 支付功能实践记录

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