python后端的支付宝小程序用户认证问题(alipay-sdk-python、pycrypto无法安装)

python后端的支付宝小程序用户认证问题(alipay-sdk-python、pycrypto无法安装)

写在前面

事先说明,本人不是大佬,我只是在不断探索的途中找到了解决这个问题的方法,之前在网上搜索的时候没有看到相关文章,所以就来简单讲一下。

正文

借着蚂蚁金服小程序大赛开通了支付宝小程序个人开发者,尝试将一个微信小程序的项目移植到支付宝上,支付宝对于用户唯一id的获取比微信要复杂很多,微信只需要提供Appid、密钥和用户的请求码,但是支付宝要求使用一套复杂的签名机制。python后端的支付宝小程序用户认证问题(alipay-sdk-python、pycrypto无法安装)_第1张图片
根据开发文档简单写一个返回user_id的函数(更多示例可以看阿里的开发文档换取授权访问令牌):

from alipay.aop.api.DefaultAlipayClient import DefaultAlipayClient
from alipay.aop.api.request.AlipaySystemOauthTokenRequest import AlipaySystemOauthTokenRequest 
from alipay.aop.api.AlipayClientConfig import AlipayClientConfig
from json import loads

//传入客户端发来的请求码
def Agetid(code_id):
	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 = *app私钥*
	alipay_client_config.alipay_public_key = *阿里公钥*
	AlipayClient = DefaultAlipayClient(alipay_client_config)
	request = AlipaySystemOauthTokenRequest()
	request.grant_type='authorization_code'
	request.code = code_id
	user_info_dict = AlipayClient.execute(request)
	print(loads(user_info_dict))

Agetid(code_id)

其中一些基本的参数必须得有,签名是最让人头疼的地方,好在蚂蚁金服已经提供了一套针对不同语言的SDK,由于后端服务器是用python写的,便安装 alipay-sdk-python
首先尝试pip install alipay-sdk-python
失败,原因是pycrypto安装失败,分析报错+查阅资料,和MSVC运行库有关系,下载MSVC运行库合集安装,重新尝试,还是失败,继续查阅资料……
折腾了半天也安不上去!
那么我们不妨换一个思路:强行将SDK源码怼进去!
先找到alipay-sdk-python和pycrypto两个包,并下载源码
alipay-sdk-python 3.2.53
pycrypto 2.6.1
其中alipay-sdk-python有whl包,但我们需要的是.tar.gz
下载好后用压缩软件解压。
python后端的支付宝小程序用户认证问题(alipay-sdk-python、pycrypto无法安装)_第2张图片
其中的alipay文件夹就是我们需要的源码,将它复制到项目目录。
python后端的支付宝小程序用户认证问题(alipay-sdk-python、pycrypto无法安装)_第3张图片
我们需要的将lib下的Crypto文件夹复制到项目目录
然后运行程序测试Agetid函数,发现还是有一个问题:

ImportError: cannot import name '_AES'

找到异常位置:Crypto\Cipher\AES.py

from Crypto.Cipher import _AES

搜索文件,并没有发现_AES这个包,索性把下划线去掉,保存运行,完美解决!!!
PS:我承认最后的操作是我懵的。

你可能感兴趣的:(小聪明,支付宝小程序,蚂蚁金服python,SDK)