支付宝小程序+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)
结束

你可能感兴趣的:(支付宝小程序+Django获取会员基础信息(获取用户唯一标识 user_id和access_token))