第一篇中將一些坑說明,那么這篇開始正式進入接入步驟。具體的參數說明,我不會列出,畢竟微信官方文檔都有,我想大家都看的懂,而且這接口也有可能微信會變動,所以不列出來,也是不想引起大家的誤解,接入步驟只起一個拋磚引玉的作用。
接入步驟
獲取OpenId和授權。首先聊一下OpenId,這個東西相當於一個用戶id,只是,它並不是用戶的微信號,也不是用戶在微信后台的標識(至少不全是)。openid是當用戶,經過授權后,相對於某個公眾號的用戶標識。換句話說,同樣的用戶,對於不同的公眾號,其openid是不一樣的。
當然,微信也可以使同一用戶,在不同公眾號下產生相同的openid,這個我們暫時不討論
其次,access_token,這是一個相當於授權憑證的東西,好比,你只有拿着這個憑證去找微信的人(API)辦事,沒有這個憑證,根本沒人鳥你(很有官僚脾氣啊)。
(一)申請公眾號支付
這個步驟就不多廢話了,首先當然要申請公眾號,認證,然后申請開通支付,開通登錄獲取獲取用戶授權等
-
在下圖示例中,配置域名
圖2中,需在網頁授權域名處填寫回調網頁地址所在的域名,微信的解釋是“用戶在網頁授權頁同意授權給公眾號后,微信會將授權數據傳給一個回調頁面,回調頁面需在此域名下”。也就是說,我們提供給微信的URL(下面第二步中的URL),必須在這個域名下,否則是不能成功的。 -
設置js安全回調域
同樣,上圖中的JS接口安全域名中要填寫我們的域名地址,微信的解釋為“設置JS接口安全域名后,公眾號開發者可在該域名下調用微信開放的JS接口”。也就是說,我們調用微信API的頁面,必須位於此處填寫的JS接口安全域名中的域名下 -
獲取公眾號id(也是后面要用的appid),公眾號密鑰(后面所說的appscret)
- 配置支付授權目錄,微信的說明是“所有使用公眾號支付方式發起支付請求的鏈接地址,都必須在支付授權目錄之下”。意思和2中類似,意思是微信向我們推送支付結果的,由我們提供的回調頁面地址必須在此處填寫的域名下。
(二)獲取OpenId
-
首先獲取code,微信給出了前述第二個地址
只需將上述連接中的AppID填公眾號id,URL填我們自己的網頁地址,該地址是讓微信將結果以http方式返回給我們的地址,必須要在第一步配置的域名下,比如,如果我們的域名是www.domain.com,那么我們的網頁地址必須在這個域名的目錄下,一級,二級目錄都可以
這里使用什么方式來訪問該連接視具體項目,但重要的是獲得這個http請求的返回,如果成功請求,code會作為參數,添加在我們提供的url后,返回給我們。比如我們的url是www.domain.com/default,那么如果我們請求成功,微信會在該地址后加上參數,www.domain.com/default?code=Code,回調我們的接口,我們的接口所要做的就是獲取並處理這個code
需要提的一點,scope這個參數在微信文檔中說明,如果只是獲得基本的授權,使用snsapi_base,如果要獲取用戶信息,要使用snsapi_userinfo
-
使用code來獲得access_token和openId
同樣APPID填公眾號ID,SECRET填公眾號的密鑰,具體可以在我們的公眾號賬號中查看獲得,而code就是先前我們獲得的code。同樣,這里是使用POST的方式來獲取http請求的返回值。其中包含openid,和access_token
我們的業務邏輯,必須妥善保存和處理openid,和access_token,因為后續的接口(不一定是支付接口)可能會用到。
到這一步為止,我們已經通過了oauth2.0的授權,我們拿到了一個指代用戶標識的openid,並且拿到了一個access_token,有了這個token,就相當於我們被微信后台認可,有權限調用微信相關接口。
注意,此處的access_token是對應於每一個不同的用戶的。微信中稱之為網頁授權類型access_token,需要用戶授權之后才能拿到。
具體請看我的第一篇文章
親歷H5移動端游戲微信支付接入及那些坑(一)——支付方式與坑
另附上微信關系access_token的文檔地址