Android微信支付

前段時間寫過一篇關于安卓第三方登錄之微信登錄的文章,后面有朋友留言,希望出一篇關于微信支付的文章,有朋友發現微信支付的坑很多,而且微信官方文檔讀完了,也沒太理解,吐槽微信文檔的朋友不少,于是就有了今天這篇文章。

首先,給出官方文檔的地址(需要的朋友,自行閱讀下載)
1、微信官方的Android集成文檔
2、微信官方APP端開發步驟
3、微信官方資源下載

接入流程

1.申請APP_ID
每個應用/游戲要調用微信的接口都需要有一個微信標志,這個唯一標志通常成為APP_ID, 進入管理中心,創建移動應用,每個開發者具有10個應用的創建機會,好在創建的應用可以隨時刪除。已上線的應用就不建議刪除。申請appid需要填寫應用信息:應用名稱,包名,簽名(根據微信的簽名工具生成的),icon(2828 & 108108),app下載地址等信息,即可分配到一個appid。
備注:測試支付時,務必使用申請時填寫的keystore文件簽名,包名也需要核對清楚,必然無法調起支付,返回-1錯誤碼。

2.申請支付能力
在管理中心,查看需要集成支付能力的app,找到“微信支付”一欄,點擊右側“申請開通”,填寫一些企業信息后等待審核,審核時間為一周左右,審核通過后,會得到一個企業商戶號及密碼,對公銀行卡中將收到幾分錢,進入商戶平臺,輸入收到的金錢金額以驗證。驗證通過后即可開始集成支付調用。在這之前,調用支付接口是無法完成支付的。

開通微信支付.png
資源下載.png

3、添加gradle依賴或者jar包
在build.gradle文件中,添加如下依賴即可:

dependencies {
   compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}
//或者
dependencies {
   compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
//其中,前者包含統計功能

或者:微信支付依賴包 >>> libammsdk.jar,這個需要下載微信支付的demo,把libs下的這個jar包拷貝到你的項目即可。

4、創建微信支付回調的類WXPayEntryActivity
注意:這個類的包名和目錄結構,必須是你的項目的一級包名 >>wxapi >>WXPayEntryActivity

WXPayEntryActivity.png

這個頁面是在你調起微信支付完成或者取消或者失敗后,再回到你的App時會調用的一個頁面。

//微信支付的回調
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
    
    private static final String TAG = "WXPayEntryActivity";
    
    private IWXAPI api;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pay_result);
        
         //調用API前,需要先向微信注冊您的APPID
        api = WXAPIFactory.createWXAPI(this, Constants.APP_ID);
        api.handleIntent(getIntent(), this);
    }
}

這個類中你可以加入支付成功或者失敗后的布局,如果你不需要展示什么布局,而是要跳轉頁面,把setContentView刪除即可

回調結果的處理

 @Override
    public void onResp(BaseResp resp) {
        int errCode = resp.errCode;
        Log.i(TAG, "errCode:---->" + errCode);
        String result = "";
        switch (errCode) {
            case 0:
                Log.i(TAG, "onResp:支付成功");
                result = "支付成功";
                tvTitle.setText("支付成功");
                break;
            case -1:
                //可能的原因:簽名錯誤、未注冊APPID、項目設置APPID不正確、注冊的APPID與設置的不匹配、其他異常等。
                Log.i(TAG, "onResp:支付失敗");
                result = "支付失敗,請重試";
                finish();
                break;
            case -2:
                //用戶取消支付
                Log.i(TAG, "onResp:用戶取消支付");
                result = "您取消了支付";
                finish();
                break;
        }
        ToastUtils.showToast(this, result);
    }

當然,你也可以參考微信官方APP開發步驟

下面是回調的結果碼

微信支付的結果碼.png

怎么還沒有講怎么調起微信客戶端進行支付???有讀者不開心了,別急,因為無論是微信支付還是支付寶支付,調用支付都不是很復雜的,這就給大家到來。

5、調用微信支付

private void wxPay(WxPayBean wxPayBean){       
        //WxPayBean是我自己項目的服務器返回的微信支付簽名的數據,這個需要你和你們公司后臺對接
        WxPayBean.ResultBean result = wxPayBean.getResult();
        //調用API前,需要先向微信注冊您的APPID
        IWXAPI wxAPI = WXAPIFactory.createWXAPI(this, MainConstant.Cart.APP_ID);
        wxAPI.registerApp(result.getAppid()); // 將該app注冊到微信
        PayReq req = new PayReq();
        req.appId = result.getAppid(); //微信開放平臺審核通過的應用APPID
        req.partnerId = result.getPartnerid(); //商戶號
        req.prepayId = result.getPrepayid(); //微信返回的支付交易會話ID
        req.packageValue = "Sign=WXPay"; //固定值Sign=WXPay
        req.nonceStr = result.getNoncestr(); //隨機字符串
        req.timeStamp = result.getTimestamp(); //時間戳
        req.sign = result.getSign(); //簽名
        //調起微信支付
        wxAPI.sendReq(req);
}

下面是請求調用微信支付所需要的參數列表
注意:這些都是后臺傳的,尤其這個簽名字符串,最好是后臺生成,如果你們服務器大哥不管,你最好找他喝點小酒,嘮嘮嗑

請求參數列表.png

下面是APP發起支付請求的一個流程

發起支付請求.png

下面是微信開放平臺,你的應用簽名,這個東西,很多人容易弄錯,這個一旦錯了,就調不起微信支付的界面了,詳情請移步我的另一篇博客
安卓第三方登錄之微信登錄

777.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,808評論 25 708
  • 由于公司運營需要,Android客戶端要增加微信支付。在看了幾遍官方文檔之后,加上之前有集成微信分享的經驗,所以很...
    Kerry202閱讀 1,458評論 2 8
  • 現在的支付潮流莫過于微信跟支付寶了,最近我們項目涉及到會員需求,就用到微信支付跟支付寶支付,說實話接入之前會覺得這...
    Luke_單車閱讀 15,926評論 15 52
  • 前段時間開發一款產品,需要接入支付,老板對微信支付情有獨鐘。剛好自己沒有實際做過微信支付這塊,也就可以借這次機會實...
    david_zhw閱讀 978評論 4 12
  • 一只住在荷蘭的青蛙,撐著一把油紙傘,獨自走在有著一座風車的小路,路邊有一位在哭的小女孩,青蛙上前去問問小女孩什么哭...
    月半伴月閱讀 362評論 0 0