支付寶小程序+Django獲取會員基礎信息(獲取用戶唯一標識 user_id和access_token)

吐槽

相對於起步早的微信小程序來說,網上有關支付寶小程序的相關案例要少許多(一問度娘,皆是微信小程序),更別說用python來實現支付寶小程序後端的案例了,可以說是大海撈針。所以,打算在此記錄下個人開發支付寶小程序遇到的一些問題,如有失誤之處,還請體諒。

準備

1.自行註冊支付寶小程序
2.註冊成功後在開發中心—小程序應用—選擇小程序—開發管理–功能列表中添加‘獲取會員基礎信息’的功能。
在這裏插入圖片描述
3.下載RSA簽名工具(用於生成應用私鑰和應用公鑰)
具體步驟看說明就行:
在這裏插入圖片描述
4.下載RSA簽名工具成功,運行:RSA簽名驗籤工具.bat
(爲了安全起見,作者體驗了一次厚塗的藝術。)
在這裏插入圖片描述
生成應用私鑰和應用公鑰後,複製應用公鑰,記得在‘開發中心—小程序應用—選擇小程序-設置–開發設置–設置接口加密方式‘
設置接口加密方式
將複製的應用公鑰填入
這裏的支付寶公鑰和上面的應用私鑰就是之後我們需要用到的一個東東

開始代碼

記得在Django或者python中安裝alipay SDK,方式:pip install alipay-sdk-python

支付寶小程序部分

獲取會員基礎信息,需要authCode這個東東。

onLoad(options) {
// my.getAuthCode可以在不通過後端的方式獲取用戶頭像和用戶名。但無法獲取到user_id

	my.getAuthCode({
    scopes: 'auth_user',
    success: (res) => {
			my.getAuthUserInfo({
         		 	scopes: ['auth_user'],
					success: (res) => {
						this.setData({
						//用戶名
							name:res.nickName,
						// 頭像鏈接
							src1:res.avatar
						})
								},
				 fail:() =>{
								reject({});
						}
									 });
			// 請求後臺,獲取user_id
			if(res.authCode){
					my.httpRequest({
						url: '',// 填寫目標服務器url
						method:'GET',
						dataType: 'json',
						data:{
							code:res.authCode
						},
						success: res => {
              			console.log('請求成功')
              			console.log(res)
            },
						fail: res => {
              console.log('請求失敗')
          }
    });
			}
	},
Python後端(Django)
#導入必要的包
from django.http import JsonResponse,HttpResponse
from alipay.aop.api.DefaultAlipayClient import DefaultAlipayClient
from alipay.aop.api.request.AlipaySystemOauthTokenRequest import AlipaySystemOauthTokenRequest
from alipay.aop.api.AlipayClientConfig import AlipayClientConfig
import json
def get_user(request):
	#小程序端傳來的res.authCode
	code1 = request.GET['code']
	alipay_client_config = AlipayClientConfig()
	alipay_client_config.server_url = 'https://openapi.alipay.com/gateway.do'
	alipay_client_config.app_id = '小程序的APPID'
	# 應用私鑰
	alipay_client_config.app_private_key = '填入應用私鑰'
	# 支付寶公鑰
	alipay_client_config.alipay_public_key = '填入支付寶公鑰'
	AlipayClient = DefaultAlipayClient(alipay_client_config)
	request11 = AlipaySystemOauthTokenRequest()
	request11.grant_type = 'authorization_code'
	request11.code = code1
	user_info_dict = AlipayClient.execute(request11)
	result = json.loads(user_info_dict)
	#也可以獲取到access_token
	access_token = result['access_token']
	user_id = result['user_id']
	print(user_id)
	#將整個result返回給小程序端,也可以拆開返回
	return JsonResponse(result)
結束
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章