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

吐槽

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

準備

1.自行注冊支付寶小程序
2.注冊成功后在開發(fā)中心---小程序應(yīng)用---選擇小程序---開發(fā)管理--功能列表中添加‘獲取會員基礎(chǔ)信息’的功能。

在這里插入圖片描述

3.下載RSA簽名工具(用于生成應(yīng)用私鑰和應(yīng)用公鑰)
具體步驟看說明就行:
在這里插入圖片描述

4.下載RSA簽名工具成功,運行:RSA簽名驗簽工具.bat
(為了安全起見,作者體驗了一次厚涂的藝術(shù)。)
在這里插入圖片描述

生成應(yīng)用私鑰和應(yīng)用公鑰后,復(fù)制應(yīng)用公鑰,記得在‘開發(fā)中心---小程序應(yīng)用---選擇小程序-設(shè)置--開發(fā)設(shè)置--設(shè)置接口加密方式‘
設(shè)置接口加密方式

將復(fù)制的應(yīng)用公鑰填入

這里的支付寶公鑰和上面的應(yīng)用私鑰就是之后我們需要用到的一個東東

開始代碼

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

支付寶小程序部分

獲取會員基礎(chǔ)信息,需要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: '',// 填寫目標(biāo)服務(wù)器url
                        method:'GET',
                        dataType: 'json',
                        data:{
                            code:res.authCode
                        },
                        success: res => {
                        console.log('請求成功')
                        console.log(res)
            },
                        fail: res => {
              console.log('請求失敗')
          }
    });
            }
    },
Python后端(Django)
#導(dǎo)入必要的包
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'
    # 應(yīng)用私鑰
    alipay_client_config.app_private_key = '填入應(yīng)用私鑰'
    # 支付寶公鑰
    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)
結(jié)束
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容