支付宝小程序+Django获取会员基础信息(获取用户唯一标识 user_id和access_token)

吐槽

相对于起步早的微信小程序来说,网上有关支付宝小程序的相关案例要少许多(一问度娘,皆是微信小程序),更别说用python来实现支付宝小程序后端的案例了,可以说是大海捞针。所以,打算在此记录下个人开发支付宝小程序遇到的一些问题,如有失误之处,还请体谅。

准备

1.自行注册支付宝小程序
2.注册成功后在开发中心—小程序应用—选择小程序—开发管理–功能列表中添加‘获取会员基础信息’的功能。
在这里插入图片描述
3.下载RSA签名工具(用于生成应用私钥和应用公钥)
具体步骤看说明就行:
支付宝小程序+Django获取会员基础信息(获取用户唯一标识 user_id和access_token)_第1张图片
4.下载RSA签名工具成功,运行:RSA签名验签工具.bat
(为了安全起见,作者体验了一次厚涂的艺术。)
支付宝小程序+Django获取会员基础信息(获取用户唯一标识 user_id和access_token)_第2张图片
生成应用私钥和应用公钥后,复制应用公钥,记得在‘开发中心—小程序应用—选择小程序-设置–开发设置–设置接口加密方式‘
支付宝小程序+Django获取会员基础信息(获取用户唯一标识 user_id和access_token)_第3张图片
支付宝小程序+Django获取会员基础信息(获取用户唯一标识 user_id和access_token)_第4张图片
支付宝小程序+Django获取会员基础信息(获取用户唯一标识 user_id和access_token)_第5张图片

开始代码

记得在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)
结束

你可能感兴趣的:(python,Django,支付宝小程序)