手把手教你 集成支付寶、微信支付功能 SDK

各位親們练慕,筆者在王者榮耀里面年輕了幾次(不知道為什么大家都叫我小學(xué)生惰匙,我好開心啊,年輕了10幾歲)之后贺待,跑來為大家分享兩篇sdk集成的文章哈徽曲,因?yàn)楦鱾€(gè)大公司的集成sdk的文檔。有的時(shí)候著實(shí)坑爹麸塞。也沒客服電話秃臣。反正是,看了之后就想這么大的公司哪工,為什么文檔這么坑爹奥此。或許大廠有大廠的考慮哈雁比。第一篇稚虎,集成 微信 、 支付寶 的支付功能偎捎。
對了蠢终,立下個(gè)flag序攘,以后所有的文章筆者的demo均上傳 github 。前幾天有一個(gè)小伙伴問我文章里的代碼 出現(xiàn) bug寻拂。但是程奠,筆者完全找不到 demo,無法進(jìn)行調(diào)試 祭钉,場面一度尷尬瞄沙。。慌核。

一距境、 集成支付寶 SDK

支付寶文檔路徑
支付寶的文檔很是詳細(xì),但是額垮卓,找到路徑還是蠻難的垫桂。或許是筆者比較瞎吧扒接。

1伪货、下載與集成準(zhǔn)備

下載路徑:支付寶支付架包下載路徑
下載完成之后將 下圖文件拷貝到自己的項(xiàng)目:

支付寶支付需要集成的架包

拷貝到項(xiàng)目以下路徑:
安放路徑

筆者將一些多余的文字刪除了。

在主項(xiàng)目的 build.gradle 中钾怔,添加下面的內(nèi)容碱呼,將 libs 目錄作為依賴倉庫:

allprojects {
    repositories {
        //引入 libs
        flatDir {
            dirs 'libs'
        }

        google()
        jcenter()

    }
}

在 App Module 的 build.gradle 中,添加下面的內(nèi)容宗侦,將支付寶 SDK 作為項(xiàng)目依賴:

dependencies {
    //引入支付寶 aar 文件
    implementation (name: 'alipaySdk-15.5.9', ext: 'aar')

}

在清單配置文件內(nèi)添加如下權(quán)限

android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.READ_PHONE_STATE
android.permission.WRITE_EXTERNAL_STORAGE

大概就是這樣的

<uses-permission  android:name="android.permission.INTERNET" />
<uses-permission  android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission  android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission  android:name="android.permission.READ_PHONE_STATE" />
<uses-permission  android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如果你已經(jīng)適配了 Android 6.0 以上設(shè)備 筆者希望你 申請如下動(dòng)態(tài)權(quán)限WRITE_EXTERNAL_STORAGEREAD_PHONE_STATE 否則別怪筆者沒有提醒你 會(huì)接收到意想不到的驚喜愚臀,比如說中個(gè) 500 萬 啥的。

2矾利、書寫功能

首先 強(qiáng)調(diào)一點(diǎn)姑裂,調(diào)用支付寶支付接口 屬于耗時(shí)操作,需要在工作線程進(jìn)行調(diào)用男旗。

1)舶斧、調(diào)起代碼
    //調(diào)用支付寶支付接口
    private void startZfb() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                //調(diào)用支付寶
                PayTask payTask = new PayTask(MainActivity.this);
                String result = payTask.pay(from, false);
                Message msg = new Message();
                msg.what = 0;
                msg.obj = result;
                mHandler.sendMessage(msg);
            }
        }).start();
    }

這里有一個(gè)字符串 form ,他服務(wù)器返給你的察皇,所以不需要處理知己傳給 支付寶的 sdk 就行了茴厉。就是這么簡單。

2)什荣、Handler 處理代碼


    private static class MyHandler extends Handler {
        private final WeakReference<MainActivity> mActivity;

        private MyHandler(MainActivity mActivity) {
            this.mActivity = new WeakReference<>(mActivity);
        }

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            MainActivity activity = mActivity.get();
            if (activity != null) {
                switch (msg.what) {
                    case 0:
                        String result = ((String) msg.obj).replace("{", "")
                                .replace("}", "").replace("resultStatus=", "")
                                .replace("memo=", "").replace("result=", "");
                        Log.d("MainActivity:", result);
                        String num = result.split(";")[0];
                        showPayDialog(num);
                        break;
                }
            }
        }
    }

    //展示吐司
    private static void showPayDialog(String num) {
        String result;
        switch (num) {
            case "9000":
                result = "訂單支付成功";
                break;
            case "8000":
                result = "支付結(jié)果未知矾缓,請聯(lián)系客服";
                break;
            case "4000":
                result = "訂單支付失敗";
                break;
            case "5000":
                result = "重復(fù)請求";
                break;
            case "6001":
                result = "訂單取消成功";
                break;
            case "6002":
                result = "網(wǎng)絡(luò)連接出錯(cuò)";
                break;

            case "6004":
                result = "支付結(jié)果未知,請聯(lián)系客服";
                break;
            default:
                result = "支付失敗稻爬,請聯(lián)系客服";
        }

        Toast.makeText(MyApplication.getContext(), result, Toast.LENGTH_LONG).show();
    }

這里用到了弱引用 的相關(guān)代碼 防止出現(xiàn)內(nèi)存泄漏的問題嗜闻。同樣由于使用了弱引用,需要進(jìn)行判空處理桅锄。否則 琉雳,嘿嘿 后果自負(fù)样眠。

調(diào)用成功的效果 ,就是這樣的:


調(diào)起支付寶的支付界面

好了 支付寶的集成就到這里了翠肘。

二吹缔、微信支付 的集成

微信支付的集成相對了 支付更加簡潔了。但是 開發(fā)文檔锯茄。。茶没。 筆者是個(gè)渣 不過多評論.肌幽。
官方鏈接:微信支付接入指南

1、導(dǎo)入 依賴

兩種方式:

 compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

或者

  compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

前者包含統(tǒng)計(jì)功能抓半。

2喂急、準(zhǔn)備工作

首先, 在你的項(xiàng)目的 包名的直系目錄建立一個(gè)文件夾 文件夾名稱為 “ wxapi”在 該文件夾下 創(chuàng)建一個(gè)Activity文件 文件名稱為 “WXPayEntryActivity ”笛求。 效果如下圖:


微信支付集成所需

3廊移、代碼工作

1)、將該 Activity 實(shí)現(xiàn) IWXAPIEventHandler 接口 并實(shí)現(xiàn)相關(guān)方法探入;
public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wxpay_entry);
    }

    @Override
    public void onReq(BaseReq baseReq) {

    }

    //處理支付回調(diào)
    @Override
    public void onResp(BaseResp baseResp) {

    }
}
4狡孔、激活支付界面

前期工作都準(zhǔn)備好了,下面就是如何激活支付界面了

1蜂嗽、激活微信占用 Activity 的 界面代碼代碼

    private void startWx() {
        iwxapi = WXAPIFactory.createWXAPI(this, null);
        iwxapi.registerApp("你的appId");
        new Thread(new Runnable() {
            @Override
            public void run() {
                PayReq request = new PayReq(); //調(diào)起微信APP的對象
                //下面是設(shè)置必要的參數(shù)苗膝,也就是前面說的參數(shù),這幾個(gè)參數(shù)從何而來請看上面說明
                request.appId = "你的appId";
                request.partnerId = "1234";
                request.prepayId = "1234";
                request.packageValue = "Sign=WXPay";
                request.nonceStr = "12324";
                request.timeStamp = "1234";
                request.sign = "1234567890987654";
                iwxapi.sendReq(request);//發(fā)送調(diào)起微信的請求
            }
        }).start();
    }
2、被激活的幾面代碼
public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {

    private IWXAPI iwxapi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wxpay_entry);

        iwxapi = WXAPIFactory.createWXAPI(this, null);
        iwxapi.registerApp("appId");
        iwxapi.handleIntent(getIntent(), this);
    }

    @Override
    public void onReq(BaseReq baseReq) {

    }

    //處理支付回調(diào)
    @Override
    public void onResp(BaseResp baseResp) {
        if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {


            if (baseResp.errCode == 0) {
                //ToastUtils.showToast("支付成功");
            } else if (baseResp.errCode == -1) {
                //  ToastUtils.showToast("支付失敗植旧,請聯(lián)系客服辱揭!");
            } else {
                //  ToastUtils.showToast("支付取消!");
            }
            finish();
        }
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        iwxapi.handleIntent(intent, this);
    }
}

這里面就不放 效果圖了病附,因?yàn)?问窃,筆者測試的App 沒有申請相關(guān)的 微信需要的配置。

這里強(qiáng)調(diào)幾點(diǎn)一定要注意 完沪,否則 微信 會(huì) 送你給 -1 大禮包 到懷疑人生域庇。

1)、服務(wù)器返回的參數(shù)一定要 一一對應(yīng)丽焊;
2)较剃、簽名一定要用正式版的簽名(筆者就卡這里了,因?yàn)楹灻呛蠖舜罄懈愕模?br> 3)技健、服務(wù)器那里二次 md5 生成一定要用點(diǎn)心写穴。

項(xiàng)目地址:ZfbAndWxDemo

歡迎關(guān)注.jpg

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雌贱,隨后出現(xiàn)的幾起案子啊送,更是在濱河造成了極大的恐慌偿短,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馋没,死亡現(xiàn)場離奇詭異昔逗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)篷朵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門勾怒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人声旺,你說我怎么就攤上這事笔链。” “怎么了腮猖?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵鉴扫,是天一觀的道長。 經(jīng)常有香客問我澈缺,道長坪创,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任姐赡,我火速辦了婚禮莱预,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘项滑。我一直安慰自己锁施,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布杖们。 她就那樣靜靜地躺著悉抵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪摘完。 梳的紋絲不亂的頭發(fā)上姥饰,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音孝治,去河邊找鬼列粪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谈飒,可吹牛的內(nèi)容都是我干的岂座。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼杭措,長吁一口氣:“原來是場噩夢啊……” “哼费什!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起手素,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鸳址,失蹤者是張志新(化名)和其女友劉穎瘩蚪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體稿黍,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疹瘦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了巡球。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片言沐。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖酣栈,靈堂內(nèi)的尸體忽然破棺而出呢灶,到底是詐尸還是另有隱情,我是刑警寧澤钉嘹,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站鲸阻,受9級特大地震影響跋涣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸟悴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一陈辱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧细诸,春花似錦沛贪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至猩系,卻和暖如春媚送,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寇甸。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工塘偎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拿霉。 一個(gè)月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓吟秩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绽淘。 傳聞我的和親對象是個(gè)殘疾皇子涵防,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 實(shí)現(xiàn)支付寶支付的準(zhǔn)備工作: 1.向支付寶簽約,成為支付寶的商戶 簽約完成后沪铭,支付寶會(huì)提供一些必要的數(shù)據(jù)給我們 商戶...
    Anson楊春安閱讀 8,206評論 0 6
  • 準(zhǔn)備工作: 需要公司的營業(yè)執(zhí)照武学,稅務(wù)信息祭往,等老板的身份證信息等,我記得火窒,用這些材料硼补,去支付寶注冊一個(gè)商家賬戶(審核...
    Hevin_Chen閱讀 6,806評論 0 9
  • 庫在何方已骇? CommonPayLib 庫出何因? 現(xiàn)在市場上的各APP基本上都會(huì)集成微信票编、支付寶的支付了褪储,好象不集...
    feer921閱讀 3,032評論 3 21
  • 自己總結(jié)的微信支付寶支付流程和注意點(diǎn): 準(zhǔn)備工作: 需要公司的營業(yè)執(zhí)照,稅務(wù)信息慧域,等老板的身份證信息等鲤竹,我記得,用...
    Www劉閱讀 18,565評論 2 50
  • 銀聯(lián)支付吱肌,支付寶支付,微信支付的三大總結(jié)仰禽,之前也有寫過兩篇氮墨。 微信支付,支付寶支付吐葵,銀聯(lián)支付——三大支付總結(jié): h...
    LucasAdam閱讀 4,940評論 2 23