——不要假裝很努力,結果不會陪你演戲
前言
一、簡介
二、用戶使用支付流程
三、微信支付
——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入門》
若您發現文章中存在錯誤或不足的地方,希望您能指出!