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

本文详述了在Android应用中集成微信和支付宝支付功能的步骤,包括前期准备工作、用户支付流程、微信支付与支付宝支付的集成过程。通过官方文档和实例解析,帮助开发者快速理解并实现支付功能。
摘要由CSDN通过智能技术生成

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

前言

一、简介

二、用户使用支付流程

三、微信支付

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.返回码

五、内容推荐

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值