日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 支付模块封装,Android集成支付----支付宝支付总结与封装

發布時間:2025/3/12 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 支付模块封装,Android集成支付----支付宝支付总结与封装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

類似于Android集成支付----微信支付總結與封裝(可以查看本人另外一篇文章),本文對支付寶支付進行一個總結與封裝。相比于微信支付,支付寶支付沒有那么多坑。

集成支付寶支付SDK

這里只是簡要介紹,重點解說有坑的地方,具體參考官方文檔,官方文檔百度一下就有了。

1.導入SDK

支付寶支付導入SDK只需要導入一個jar包,相信這個對于懂Android開發的同學不成問題。

2.修改Manifest、混淆等

這些內容照著官方文檔復制粘貼即可

支付寶整體來說還是很人性化的,并沒有很多坑。不像微信支付文檔里有一些歧義。

支付寶支付開發步驟

相信大家通過官方文檔可以很輕松的集成支付寶支付SDK,下面我們就直接進入正題。

1.OrderInfo的獲取(簽名過程)

orderInfo的獲取,用官方的話來說是簽名過程。支付寶官方明確建議,這個過程要放在服務端來做,只需要返回給客戶端一個orderInfo字符串即可。

V}VE}{S6K5ME9PQ`{($ZMG7.png

如果是放在服務端,那么我們就不用過多關心,只作為一個從服務端請求的字符串即可。

然而在實際開發中,OrderInfo也有可能放在客戶端來做,比如我們的服務端就是這樣的,讓先請求一個接口,返回給我這么點信息,然后讓我自己組裝OrderInfo,也就是自己簽名,日了狗了。

Paste_Image.png

具體的簽名過程可以參考官方文檔、官方demo,當然還可以看我自己封裝的代碼。github在下面。

2.調起支付寶APP

這個地方非常簡單,直接復制官方文檔提供的代碼即可:

Runnable payRunnable = new Runnable() {//要在子線程

@Override

public void run() {

PayTask alipay = new PayTask(RechargeActivity.this);

Map result = alipay.payV2

(orderInfo, true);//這里的orderInfo就是上面說的orderInfo

Message msg = new Message();

msg.what = SDK_PAY_FLAG;

msg.obj = result;

mHandler.sendMessage(msg);

}

};

Thread payThread = new Thread(payRunnable);

payThread.start();

3.支付結果的處理

這里也同樣簡單,只需要在mHandler中處理即可

private Handler mHandler = new Handler() {

public void handleMessage(Message msg) {

AliPayResult payResult = new AliPayResult((Map) msg.obj);

switch (payResult.getResultStatus()) {

case "9000":

GMToastUtil.showToast("支付成功");

break;

case "8000":

GMToastUtil.showToast("正在處理中");

break;

case "4000":

GMToastUtil.showToast("訂單支付失敗");

break;

case "5000":

GMToastUtil.showToast("重復請求");

break;

case "6001":

GMToastUtil.showToast("已取消支付");

break;

case "6002":

GMToastUtil.showToast("網絡連接出錯");

break;

case "6004":

GMToastUtil.showToast("正在處理中");

break;

default:

GMToastUtil.showToast("支付失敗");

break;

}

}

};

簽名問題

這里有一個問題還是有必要說一下的。

支付寶支付簽名有兩種,如下圖RSA2與RSA,這里支付寶官方推薦RSA2,但也不排除有人會用RSA。比如我們的服務端開發人員,非要用RSA,很不理解。

Paste_Image.png

支付寶提供了簽名工具,自己操作生成一個公鑰和一個私鑰,這里的公鑰全名是”應用公鑰“如上圖。私鑰自己留著在獲取orderInfo(簽名過程)處使用。公鑰上傳到上圖位置,要用RSA2就上傳到RSA2位置,反之你懂的。

公鑰上傳后,支付寶開放平臺會自動生成一個支付寶公鑰,注意區分”應用公鑰“和”支付寶公鑰“。這里的支付寶公鑰是給服務端用的,服務端在異步回調時驗簽。

支付寶支付的封裝

支付寶同樣不涉及很多業務邏輯,完全可以封裝成工具類以便下次使用。封裝后的使用非常簡單,如下代碼,詳細代碼可以看我的github,地址在文末。

//簽名在客戶端

findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

//假設已經從服務端獲取必要數據

MyALipayUtils.ALiPayBuilder builder = new MyALipayUtils.ALiPayBuilder();

builder.setAppid("123")

.setRsa("456")//根據情況設置Rsa2與Rsa

.setMoney("0.01")//單位時分

.setTitle("支付測試")

.setOrderTradeId("487456")//從服務端獲取

.setNotifyUrl("fdsfasdf")//從服務端獲取

.build()

.toALiPay(MainActivity.this);

}

});

//簽名在服務端

findViewById(R.id.btn2).setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

//假設已從服務端獲取orderInfo

String orderInfo = "";

MyALipayUtils.ALiPayBuilder builder = new MyALipayUtils.ALiPayBuilder();

builder.build().toALiPay(MainActivity.this, orderInfo);

}

});

補充

直接運行demo,點擊簽名在客戶端,會出現以下錯誤。碰到這個錯誤不要驚慌。

image.png

只需要將setRsa("私鑰")這里的私鑰換成正確的私鑰就OK了。也就是下圖這里

image.png

私鑰分兩種,兩種有什么區別?私鑰怎么獲取?私鑰生后怎么配置?等這些問題都可以在官方文檔中找到。

總結

以上是生活随笔為你收集整理的android 支付模块封装,Android集成支付----支付宝支付总结与封装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。