第三方支付之微信支付

前言

上一篇寫了支付寶支付,這一篇說下微信支付岗照,廢話不多說直接開門見山

接入流程

1.申請開發(fā)者資質(zhì)

地址:https://open.weixin.qq.com/

使用公司管理者/高層帳號登錄微信開放平臺,進(jìn)入“賬號中心”,進(jìn)行開發(fā)者資質(zhì)認(rèn)證,需要填寫公司資料秕铛,包括但不限于,公司注冊號缩挑,公司營業(yè)執(zhí)照但两,公司對外辦公電話,公司對公銀行卡信息(卡號供置,發(fā)卡行)谨湘。審核時間為一周左右。

2.申請APP_ID/APP_KEY

每個應(yīng)用/游戲要調(diào)用微信的接口都需要有一個微信標(biāo)志芥丧,這個唯一標(biāo)志通常成為APP_ID或者APP_KEY紧阔,各開放平臺差異不大
進(jìn)入管理中心,創(chuàng)建移動應(yīng)用续担,每個開發(fā)者具有10個應(yīng)用的創(chuàng)建機(jī)會擅耽。
備注:測試支付時,務(wù)必使用申請時填寫的keystore文件簽名物遇,包名也需要核對清楚乖仇,必然無法調(diào)起支付憾儒,返回-1錯誤碼。

3.申請支付能力

在管理中心乃沙,查看需要集成支付能力的app起趾,找到“微信支付”一欄,點(diǎn)擊右側(cè)“申請開通”警儒,填寫一些企業(yè)信息后等待審核训裆,審核時間為一周左右,審核通過后蜀铲,會得到一個企業(yè)商戶號及密碼边琉,對公銀行卡中將收到幾分錢,進(jìn)入商戶平臺记劝,輸入收到的金錢金額以驗(yàn)證艺骂。驗(yàn)證通過后即可開始集成支付調(diào)用。在這之前隆夯,調(diào)用支付接口是無法完成支付的。

4.代碼集成微信支付

APP支付時序圖

這一個是微信官網(wǎng)提供的App支付時序圖别伏,商戶系統(tǒng)和微信支付系統(tǒng)主要交互說明:
步驟1:用戶在商戶APP中選擇商品巷查,提交訂單谷婆,選擇微信支付。
步驟2:商戶后臺收到用戶支付單,調(diào)用微信支付統(tǒng)一下單接口昧甘。參見【統(tǒng)一下單API】。
步驟3:統(tǒng)一下單接口返回正常的prepay_id冗疮,再按簽名規(guī)范重新生成簽名后矾兜,將數(shù)據(jù)傳輸給APP。參與簽名的字段名為appId巩检,partnerId厚骗,prepayId,nonceStr兢哭,timeStamp领舰,package。注意:package的值格式為Sign=WXPay
步驟4:商戶APP調(diào)起微信支付迟螺。api參見本章節(jié)【app端開發(fā)步驟說明】
步驟5:商戶后臺接收支付通知冲秽。api參見【支付結(jié)果通知API】
步驟6:商戶后臺查詢支付結(jié)果。矩父,api參見【查詢訂單API】

說這么復(fù)雜锉桑,其實(shí)整個流程,App做的就是從后臺取到的微信支付需要的參數(shù)窍株,然后調(diào)起微信民轴,微信返回支付結(jié)果攻柠,然后微信服務(wù)器異步回調(diào)給我們自己后臺服務(wù)器。
1:Eclipse添加jar包,Android studio添加依賴庫
2:修改清單文件(添加權(quán)限杉武、注冊activity)辙诞,其中微信的回調(diào)結(jié)果是通過他們定義好的在wxapi包下的一個叫WXPayEntryActivity返回的,不能改整個名字不然看不到回調(diào)結(jié)果轻抱。

 <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<activity
  android:name=".wxapi.WXPayEntryActivity"
   android:exported="true"
   android:launchMode="singleTop"/>

3:首先根據(jù)后臺返回參數(shù)飞涂,調(diào)起微信

IWXAPI mWxApi = WXAPIFactory.createWXAPI(mContext, WX_APPID, true);
PayReq req = new PayReq();
mWxApi.registerApp(WX_APPID);

        /**
         * 請求app服務(wù)器得到的回調(diào)結(jié)果
         */
        @Override
        public void onSuccess(JSONObject jsonObject) {
            if (mWxApi != null) {
                PayReq req = new PayReq();

                req.appId = WX_APPID;// 微信開放平臺審核通過的應(yīng)用APPID
                try {
                    req.partnerId = jsonObject.getString("partnerid");// 微信支付分配的商戶號
                    req.prepayId = jsonObject.getString("prepayid");// 預(yù)支付訂單號,app服務(wù)器調(diào)用“統(tǒng)一下單”接口獲取
                    req.nonceStr = jsonObject.getString("noncestr");// 隨機(jī)字符串祈搜,不長于32位较店,服務(wù)器小哥會給咱生成
                    req.timeStamp = jsonObject.getString("timestamp");// 時間戳
                    req.packageValue = jsonObject.getString("package");// 固定值Sign=WXPay,可以直接寫死容燕,服務(wù)器返回的也是這個固定值
                    req.sign = jsonObject.getString("sign");// 簽名梁呈,后臺根據(jù)據(jù):https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3指導(dǎo)得到這個
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                mWxApi.sendReq(req);
                Log.d("發(fā)起微信支付申請");
            }
        }

4:查看支付結(jié)果

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
private IWXAPI api;
private static final String APP_ID = "your app id";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pay_result);
    api = WXAPIFactory.createWXAPI(this, APP_ID);
    api.handleIntent(getIntent(), this);
}

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

@Override
public void onReq(BaseReq req) {
}

/**
 * 得到支付結(jié)果回調(diào)
 */
@Override
public void onResp(BaseResp resp) {
    Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);// 支付結(jié)果碼
}

}

errCode值

最后提醒大家注意坑點(diǎn):
1:測試微信支付需要給微信開放平臺的簽名改成你的未簽名,因?yàn)楹灻蟮腶pk你看不到debug日志蘸秘,但是上線時要改成正式打包的apk簽名官卡。
2:當(dāng)支付時,微信尚未登錄醋虏,得不到任何回調(diào)寻咒,如果調(diào)起支付時有彈窗進(jìn)度框,并且你想在得到響應(yīng)碼后讓它消失是行不通的,需要在跳出的onStop中處理進(jìn)度條颈嚼,不然未登錄并且用戶取消了支付時進(jìn)度條無法消失毛秘。
3:當(dāng)支付時,WXPayEntryActivity會以透明的形式啟動,所以你可能需要在支付完成得到支付響應(yīng)碼后手動finish該activity,不然你自己寫的支付頁面的activity需要返回兩次才能退出,因?yàn)榈谝淮伟聪耣ack鍵實(shí)際是finish掉WXPayEntryActivity.第二次才是你自己的activity.

這就是微信支付集成的所有流程,最后附一個官方demo

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阻课,一起剝皮案震驚了整個濱河市叫挟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌限煞,老刑警劉巖抹恳,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異署驻,居然都是意外死亡适秩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門硕舆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秽荞,“玉大人,你說我怎么就攤上這事抚官⊙锇希” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵凌节,是天一觀的道長钦听。 經(jīng)常有香客問我洒试,道長,這世上最難降的妖魔是什么朴上? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任垒棋,我火速辦了婚禮,結(jié)果婚禮上痪宰,老公的妹妹穿的比我還像新娘叼架。我一直安慰自己,他們只是感情好衣撬,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布乖订。 她就那樣靜靜地躺著,像睡著了一般具练。 火紅的嫁衣襯著肌膚如雪乍构。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天扛点,我揣著相機(jī)與錄音哥遮,去河邊找鬼。 笑死陵究,一個胖子當(dāng)著我的面吹牛昔善,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播畔乙,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼翩概!你這毒婦竟也來了牲距?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤钥庇,失蹤者是張志新(化名)和其女友劉穎牍鞠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體评姨,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡难述,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吐句。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片胁后。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嗦枢,靈堂內(nèi)的尸體忽然破棺而出攀芯,到底是詐尸還是另有隱情,我是刑警寧澤文虏,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布侣诺,位于F島的核電站殖演,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏年鸳。R本人自食惡果不足惜趴久,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搔确。 院中可真熱鬧彼棍,春花似錦、人聲如沸妥箕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畦幢。三九已至坎吻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宇葱,已是汗流浹背瘦真。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留黍瞧,地道東北人诸尽。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像印颤,于是被迫代替她去往敵國和親您机。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

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

  • 今日推薦 經(jīng)常閱讀博客是個好習(xí)慣推薦鴻洋CSDN的博客 微信支付相關(guān)文章 詳細(xì)介紹Android開發(fā)集成微信支付(...
    MrQ_Android閱讀 6,165評論 9 52
  • 自己總結(jié)的微信支付寶支付流程和注意點(diǎn): 準(zhǔn)備工作: 需要公司的營業(yè)執(zhí)照年局,稅務(wù)信息际看,等老板的身份證信息等,我記得矢否,用...
    Www劉閱讀 18,555評論 2 50
  • 準(zhǔn)備工作: 需要公司的營業(yè)執(zhí)照仲闽,稅務(wù)信息,等老板的身份證信息等僵朗,我記得赖欣,用這些材料,去支付寶注冊一個商家賬戶(審核...
    Hevin_Chen閱讀 6,797評論 0 9
  • 前幾天發(fā)了一篇《記帳+兩表,家底門兒清》的短文粪薛,有朋友留言:“你這么記帳云矫,麻不麻煩?多累啊让禀!” 當(dāng)時所用APP的經(jīng)...
    李慶建閱讀 436評論 0 0
  • 2017年9月7日 星期四 天氣:大霧 潘紫涵媽媽親子日記 今天早晨起床后挑社,從窗外遠(yuǎn)遠(yuǎn)望去,到處是一片白色...
    潘紫涵媽媽閱讀 210評論 0 1