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