——不要假装很努力,结果不会陪你演戏
前言
一、简介
二、用户使用支付流程
三、微信支付
——1.集成准备
——2.Android集成
四、支付宝支付
——1.集成准备
——2.Android集成
五、内容推荐
前言
——新的一年开始了,愿好事接二连三,心情四季如春,生活五颜六色、七彩缤纷,偶尔“八”点小财,烦恼抛到九霄云外,请接受我十心十意的祝福:元旦快乐。
——那么如何发点小财呢? 不妨试试在自己的APP中接入支付功能,就像淘宝那样出售自己的商品。坐等钱到账。想想就开始流口水,不过还是不要白日做梦了。先学会如何集成支付功能,再来考虑下一步。最近又接了支付功能,顺便就写下这篇。当然详细文档官方文档写的很详细,这里就大概讲下流程。不会太详细。。。
一、简介
——接完之后发现,支付功能代码接入变简单了。主要还是第三方服务提供的功能越发完善,而且文档也描述的很详细。但是还是有很麻烦的地方,就是前期的准备工作。在这里提醒那些想做支付功能的同胞,先去微信/支付宝 开放平台 注册项目并开通支付功能。若这些工作都完成了,后续工作就相当简单了。
二、用户使用支付流程
——在开始集成前,有必要先了解下。用户是如何使用支付功能的。有利于对集成的理解
- 步骤1:用户进入商户APP(例淘宝),选择商品下单、确认购买,进入支付环节。
- 步骤2:用户点击后发起支付操作,进入到微信/支付宝界面,调起支付,出现确认支付界面。
- 步骤3:用户确认收款方和金额,点击立即支付后出现输入密码界面。
- 步骤4:输入正确密码后,支付完成,用户端出现支付详情页面。
- 步骤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.返回码
五、内容推荐
- 《CSDN》《简书》
- 《Android Jetpack架构组件之Room入门及源码分析》
- 《Android Jetpack架构组件之LiveData》
- 《Android Jetpack架构组件之Lifecycle源码分析》
- 《Android Jetpack架构组件之Lifecycle入门》
若您发现文章中存在错误或不足的地方,希望您能指出!