摘要:支付寶服務(wù)窗開發(fā)主要需要已申請支付寶服務(wù)窗的賬號外網(wǎng)可以訪問的。
。。。。。
這兩天做了一下支付寶服務(wù)窗,記一下吧,做一個積累,防止以后再次需要開發(fā)時忘記。
項目的要求是可以使用支付寶的服務(wù)窗就可以了,相關(guān)交互也很簡單,只需要獲取到使用用戶的支付寶的唯一標(biāo)識符(以前是openId,不過openId將會在2016年9月廢棄,現(xiàn)在使用userId。如果還是使用的openId,也就是遺留的項目,支付寶提供了相關(guān)的接口,可以使用openId換取userId
已申請支付寶服務(wù)窗的賬號
外網(wǎng)可以訪問的url。本機上可以使用端口映射,主要開發(fā)時使用(直接使用ip+端口映射不知道可不可以,沒有試過)。
3.openssl軟件,這個其實在支付寶提供的包里已經(jīng)提供了(支付寶的手機網(wǎng)站支付的demo中有
激活開發(fā)者模式(必須驗簽和回復(fù)相關(guān)消息,偷懶的話可以不驗簽,直接將相關(guān)的消息響應(yīng)給支付寶就好了,猜的,沒試過,應(yīng)該)。
這里相關(guān)的文檔還是蠻詳細的。生成公鑰和私鑰就不多說了,已近夠詳細了,簡單的說下它提供的demo吧(放到結(jié)尾說,排版好看點)。
設(shè)置服務(wù)窗的菜單及相關(guān)的功能。其實這如果不需要支付寶提供的userId,那樣上面寫的和下面寫的所有東西都可以忽略,只要在管理中心的幾個菜單上點點就好了。
同樣相關(guān)的文檔支付寶也已經(jīng)提供。(文檔)。我使用的是只要獲取用戶的userId,不需要其他的用戶信息,所以只要scope=auth_base就好了。這里的代碼支付寶的demo中已經(jīng)提供了,只要稍微改一下就可以使用:
try { String authCode = this.getReqParam("auth_code"); String userId = null; AlipaySystemOauthTokenRequest req = new AlipaySystemOauthTokenRequest(); req.setGrantType("authorization_code"); req.setCode(authCode); AlipayClient alipayClient = AlipayUtil.getAlipayClient(); AlipaySystemOauthTokenResponse res = alipayClient.execute(req); XMap map = new XMap(); if (null != res && res.isSuccess()) { userId = res.getAlipayUserId(); map.put("appid", userId); System.out.println(userId); } else { System.out.println("authCode換取userId失敗"); } this.outPut(map); } catch (AlipayApiException e) { e.printStackTrace(); }
如果獲取用戶的信息,支付寶的demo也有,直接刪刪改改就可以了。
這里需要注意一下的是需要導(dǎo)入支付寶的相關(guān)jar包,當(dāng)然如果只是這里使用的話可以不使用支付寶的jar包,換成使用HttpClient來實現(xiàn),但是相比較而言麻煩一下,直接使用支付寶的直接傳幾個參數(shù)而已,何樂而不為呢。如果還要使用其他信息,就要修改相關(guān)的scope,文檔里直接找就是了。
支付寶的demo只要知道服務(wù)窗的基本功能就可以:
純文本類型 MsgType:text
事件類型 MsgType:event
激活驗證開發(fā)者模式 (service:alipay.service.check)(EventType:verifygw)
其他消息通知 (service:alipay.mobile.public.message.notify)
服務(wù)窗關(guān)注事件 (EventType:follow)
服務(wù)窗取消關(guān)注事件 (EventType:unfollow)
服務(wù)窗進入事件 (EventType:enter)
自定義場景進入事件
普通進入服務(wù)窗事件
根據(jù)actionParam進行轉(zhuǎn)發(fā)(服務(wù)窗點擊事件)(EventType:click)
authentication 申請開發(fā)者會員綁定事件: actionParam支付寶服務(wù)窗固定值(ActionParam:authentication )
delete 刪除開發(fā)者會員綁定事件:actionParam支付寶服務(wù)窗固定值(ActionParam:delete)
xxx 開發(fā)者自定義 (ActionParam:xxx)
更多
更多
對照這看demo很容易就知道了。
從servlet開始:這方面主要在GatewayServlet里面。
驗簽沒什么,直接調(diào)相關(guān)方法就好了,注意req的編碼和本項目的編碼。
宏觀上來說demo主要是接收相關(guān)的req,然后取得該req的參數(shù),進入(Dispatcher)獲取業(yè)務(wù)的分發(fā)器,然后在分發(fā)器中獲取業(yè)務(wù)的執(zhí)行器。簡單點說,就是從上面的純文本類型開始驗證,逐漸細化到最里面的一層,將該層的功能返回對應(yīng)的執(zhí)行器(執(zhí)行器也就是ActionExecutor接口,不同的功能就是該接口的不同的實現(xiàn),以后添加功能直接添加該接口的實現(xiàn)就好了)。
開發(fā)的時候可以直接使用相關(guān)的代碼,然后在里面刪減對應(yīng)的功能就好了。不過話說如果像我現(xiàn)在的項目只要驗證,所以只要一個激活驗證開發(fā)者模式的驗證就好了,兩層驗證返回就好了,當(dāng)然要求更低的可以直接返回相關(guān)的res就好,都可以不驗證??梢允强梢?,但是如果以后加功能的話。。。
在LoginAuthServlet里面也就是取得用戶的userId和用戶的詳細信息等相關(guān)內(nèi)容。
其他的一些類都是一些例子,對于我這樣的新手+菜鳥來說簡直是福音。
怎么說呢,一開始看見那么多類,都不想去看這個demo,后來沒辦法才去看的。清晰,第一感覺就是這個,不想自己寫的代碼,業(yè)務(wù)一復(fù)雜時自己都不想去看,不過由于源碼讀的少的原因,自從看完設(shè)計模式的書后,雖然大概也知道現(xiàn)在的比較出名的開源框架大概用了哪些,但是都是別人說的,從來沒有自己去體會過。或者說知道使用了相關(guān)的模式之后,再去讀源碼的時候自動去找相關(guān)的模式的使用情況,雖然知道他們很好,但是由于自己沒有去寫,從來不知道這玩意兒多好。但是看了這個demo后真心很。。。震撼,應(yīng)該是,比比自己的代碼,就是去堆邏輯,固然有很多地方是用不上模式的,更多的原因是不熟。雖然知道這玩意用多了也不好,但是用了之后可以取舍,而這和不會用完全是兩回事,慢慢積累吧,會有一天脫離菜鳥的行列的。任重而道遠啊。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65588.html
摘要:背景第一天練習(xí)支付寶小程序的時候?qū)懞昧艘粋€簡單的頁面后續(xù)是新增重置按鈕連接后端接口然后加入圖標(biāo)網(wǎng)上看了很多小程序加圖標(biāo)例子說實話沒有單獨能成功的我也不記得結(jié)合了多少個才成功了還是自己寫了篇文章記錄下引入流程可能有點啰嗦但是比較詳細連接后端接 背景:第一天練習(xí)支付寶小程序的時候?qū)懞昧艘粋€簡單的頁面.后續(xù)是新增重置按鈕,連接后端接口.然后加入icon圖標(biāo).網(wǎng)上看了很多小程序加icon圖標(biāo)例...
摘要:我們知道,開發(fā)微信支付需要申請服務(wù)號并且需要一系列的資料才可以開通。怪麻煩的,現(xiàn)在我們可以用第三方開放的免簽約微信支付接口,支付寶接口和錢包接口,實現(xiàn)實時到帳的微信支付開發(fā)。 我們知道,開發(fā)微信支付需要申請服務(wù)號并且需要一系列的資料才可以開通。怪麻煩的,現(xiàn)在我們可以用第三方開放的免簽約微信支付接口,支付寶接口和QQ錢包接口,實現(xiàn)實時到帳的微信支付開發(fā)。 我們只需要在第三方的微信支付免簽...
閱讀 2557·2023-04-26 00:57
閱讀 926·2021-11-25 09:43
閱讀 2234·2021-11-11 16:55
閱讀 2254·2019-08-30 15:53
閱讀 3608·2019-08-30 15:52
閱讀 1478·2019-08-30 14:10
閱讀 3394·2019-08-30 13:22
閱讀 1223·2019-08-29 11:18