16-支付功能實現

一酌媒、支付SDK簡介

要在APP中使用支付功能的話,必須要集成一些常用的第三方SDK迄靠。常用的支付SDK有:

支付寶秒咨、微信支付、百度錢包掌挚、網銀(易寶)等等雨席。

其中第三方支付聚合SDK有,它們就像shareSDK一樣把一些常用的支付渠道集成好了:
ping++吠式、Bmob

由于ping++更加專業(yè)因此我們使用它陡厘。

關于如何集成ping++這里只簡略說明,具體參考ping++官方文檔特占。
1糙置、新建一個module,添加相關的jar包以及動態(tài)so庫是目,assest資源谤饭,res,java源代碼等所有東西進去,俗話說就是有什么copy什么揉抵。

需要注意的是:
作為library的module的清單文件不用寫Application節(jié)點也行亡容,清單文件對于library來說然并卵。

清單文件中需要配置的東西一定要在主項目當中配置冤今。

在Android Studio2.0中闺兢,新建JIN文件夾默認生成jni文件夾,但是我們需要的是jniLibs文件夾戏罢,很簡單列敲,就是在主項目的build.gradle文件中:在配置的android節(jié)點下加入下面的內容就ok,點擊sync以后會自動出現jniLibs文件夾帖汞。

sourceSets {
        main {
            jniLibs.srcDirs = ['libs']            //把jniLibs文件夾定義為libs文件夾
        }
    }

最后把jar包戴而、so庫全部扔到libs文件夾(Project視圖才有l(wèi)ibs文件夾)

Android文件夾的創(chuàng)建方法如下:


2、配置主項目的清單文件翩蘸,包括權限所意,activity,meta-data(APPKey)等等催首。

3扶踊、以上是常用的集成步驟,后續(xù)步驟按照官方文檔來郎任。

至于如何去測試我們的支付功能呢秧耗?
我們不用真正去支付,ping++SDK提供我們開發(fā)者測試模式舶治,通過測試模式就可以進行測試分井。正在應用到實際當中的時候只需要把我們申請的APPKey替換為公司的APPKey并且進行審核驗證,就可以實現真正的支付功能了霉猛。支付相關的APPKey只有公司(具有一定資產)才能申請尺锚,申請比較嚴格,這里就不說了惜浅。

二瘫辩、支付流程

如下圖所示:

步驟可以總結為:

1、APP訪問自己的服務器API坛悉,提交訂單伐厌。這里需要注意的是用戶需要購買的商品信息是通過JSON字符串來進行提交的,因為JSON字符串可以傳遞一個長度不確定的List對象裸影。

2挣轨、服務器返回支付憑證Charge給APP。(這里需要了解的是空民,服務器端也需要進行支付的相關開發(fā))支付憑證Charge是一個有一定格式的JSON字符串刃唐,

3羞迷、APP在拿到支付憑證之后,利用支付SDK的相關API發(fā)起支付請求画饥。如下所示衔瓮,代碼在官方文檔中有說明:

/**
 * 發(fā)起ping++SDK進行支付
 *
 * @param createOrderRespMsg
 */
private void pay(CreateOrderRespMsg createOrderRespMsg) {
    Intent intent = new Intent();
    String packageName = getPackageName();
    ComponentName componentName = new ComponentName(packageName, packageName + ".wxapi.WXPayEntryActivity");
    intent.setComponent(componentName);
    intent.putExtra(PaymentActivity.EXTRA_CHARGE, JSONUtil.toJSON(createOrderRespMsg.getData().getCharge()));
    startActivityForResult(intent, Constants.REQUEST_CODE_PAYMENT);
}

4、支付SDK把支付的結果(包括成功抖甘,失敗热鞍,相關支付APP沒有安裝,用戶取消了支付)返回給APP衔彻,代碼如下:

/**
 * 支付結果通知
 *
 * @param requestCode
 * @param resultCode
 * @param data
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    //支付頁面返回處理
    if (requestCode == Constants.REQUEST_CODE_PAYMENT) {
        if (resultCode == Activity.RESULT_OK) {
            String result = data.getExtras().getString("pay_result");
            if (result.equals("success")) {
                changeOrderStatus(Constants.PAY_SUCCESS);//修改訂單狀態(tài)
            } else if (result.equals("fail")) {
                changeOrderStatus(Constants.PAY_FAILED);
            } else if (result.equals("cancel")) {
                changeOrderStatus(Constants.PAY_CANCEL);
            } else if (result.equals("invalid")) {
                changeOrderStatus(Constants.PAY_INVALID);
            }
        }
    }
}

5薇宠、APP根據支付SDK返回的結果去向自己的服務器請求,相應地修改訂單狀態(tài)(例如修改為已付款)艰额。

6犯戏、最后由服務器端返回給客戶端修改是否成功等信息杭措,提示用戶操作是否成功等径密。

7盟广、清空購物車中已經購買的商品。

如果覺得我的文字對你有所幫助的話祖搓,歡迎關注我的公眾號:

公眾號:Android開發(fā)進階

我的群歡迎大家進來探討各種技術與非技術的話題狱意,有興趣的朋友們加我私人微信huannan88,我拉你進群交(♂)流(♀)拯欧。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末详囤,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子镐作,更是在濱河造成了極大的恐慌藏姐,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滑肉,死亡現場離奇詭異包各,居然都是意外死亡,警方通過查閱死者的電腦和手機靶庙,發(fā)現死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來娃属,“玉大人六荒,你說我怎么就攤上這事》耍” “怎么了掏击?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長秩铆。 經常有香客問我砚亭,道長灯变,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任捅膘,我火速辦了婚禮添祸,結果婚禮上,老公的妹妹穿的比我還像新娘寻仗。我一直安慰自己刃泌,他們只是感情好,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布署尤。 她就那樣靜靜地躺著耙替,像睡著了一般。 火紅的嫁衣襯著肌膚如雪曹体。 梳的紋絲不亂的頭發(fā)上俗扇,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天,我揣著相機與錄音箕别,去河邊找鬼铜幽。 笑死,一個胖子當著我的面吹牛究孕,可吹牛的內容都是我干的啥酱。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼厨诸,長吁一口氣:“原來是場噩夢啊……” “哼镶殷!你這毒婦竟也來了?” 一聲冷哼從身側響起微酬,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤绘趋,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后颗管,有當地人在樹林里發(fā)現了一具尸體陷遮,經...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年垦江,在試婚紗的時候發(fā)現自己被綠了帽馋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡比吭,死狀恐怖绽族,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情衩藤,我是刑警寧澤吧慢,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站赏表,受9級特大地震影響检诗,放射性物質發(fā)生泄漏匈仗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一逢慌、第九天 我趴在偏房一處隱蔽的房頂上張望悠轩。 院中可真熱鬧,春花似錦涕癣、人聲如沸哗蜈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽距潘。三九已至,卻和暖如春只搁,著一層夾襖步出監(jiān)牢的瞬間音比,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工氢惋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留洞翩,地道東北人。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓焰望,卻偏偏與公主長得像骚亿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子熊赖,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,336評論 25 707
  • 支付 1.支付寶和銀聯的支付流程 常用的支付方式有: 1来屠、支付寶支付 https://openhome.alipa...
    丶逐漸閱讀 1,674評論 3 11
  • 吃貨界流傳著這樣一段話:“不開心的時候传趾,一起默念咒語:生煎包迎膜、小餛飩、小籠包浆兰、鍋貼磕仅、咖喱牛肉面、春卷簸呈、粽子宽涌、餃子、...
    桌飯閱讀 972評論 1 4
  • 日子忙碌的時候蝶棋, 記得給心情放個假。 身體累得趴下的時候忽妒, 記得給健康喘口氣玩裙。 就這樣兼贸, 你學會了調節(jié)自己的生活。...
    小劇在成長閱讀 164評論 0 6
  • 棱鏡多面吃溅,幻境迷惘溶诞。夢境里翻過故事,拼起章節(jié)的圖畫决侈。一覺醒來螺垢,以為會見到你,像我拼起來的那樣赖歌。
    香芋蘸白糖閱讀 148評論 0 0