支付宝API接口alipay.user.info.share可以通过用户授权获取用户基本信息,也可以通过申请开通特殊字段权限来获取用户姓名、手机号、身份证号码等信息(Python版本)
1、获取用户auth_code字段,此字段可以通过小程序、移动端、终端设备来获取。
2、使用auth_code换取access_token。
Python代码 依赖库: alipay-sdk-python
from alipay.aop.api.request.AlipaySystemOauthTokenRequest import AlipaySystemOauthTokenRequest
from alipay.aop.api.response.AlipaySystemOauthTokenResponse import AlipaySystemOauthTokenResponse
alipay_client_config = AlipayClientConfig(sandbox_debug=False)
alipay_client_config.app_id = app_id # 应用appID
alipay_client_config.app_private_key = app_private_key # 私钥
alipay_client_config.alipay_public_key = alipay_public_key # 公钥
client = DefaultAlipayClient(alipay_client_config, logger)
request = AlipaySystemOauthTokenRequest()
request.grant_type = 'authorization_code'
request.code = auth_code
# 执行请求,执行过程中如果发生异常,会抛出,请打印异常栈
response_content = None
try:
response_content = client.execute(request)
except Exception as e:
import traceback
print(traceback.format_exc())
if not response_content:
print("failed execute")
else:
# 解析响应结果
response = AlipaySystemOauthTokenResponse()
response.parse_response_content(response_content)
# 响应成功的业务处理
if response.is_success():
# 如果业务成功,可以通过response属性获取需要的值
print(response.alipay_user_id)
return response.access_token
else:
# 如果业务失败,可以从错误码中可以得知错误情况,具体错误码信息可以查看接口文档
print(response.code + "," + response.msg + "," + response.sub_code + "," + response.sub_msg)
return ''
3、使用access_token调用alipay.user.info.share接口来获取用户信息。
Python代码 依赖库: alipay-sdk-python
from alipay.aop.api.request.AlipayUserInfoShareRequest import AlipayUserInfoShareRequest
from alipay.aop.api.response.AlipayUserInfoShareResponse import AlipayUserInfoShareResponse
alipay_client_config = AlipayClientConfig(sandbox_debug=False)
alipay_client_config.app_id = app_id # 应用appID
alipay_client_config.app_private_key = app_private_key # 私钥
alipay_client_config.alipay_public_key = alipay_public_key # 公钥
client = DefaultAlipayClient(alipay_client_config, logger)
request = AlipayUserInfoShareRequest()
udf_params = dict()
udf_params[P_AUTH_TOKEN] = access_token # 用户授权token
udf_params[P_APP_AUTH_TOKEN] = app_auth_token # 第三方应用授权token(授权之后替代调用API,不使用授权模式此参数不传)
request.udf_params = udf_params
# 执行请求,执行过程中如果发生异常,会抛出,请打印异常栈
response_content = None
try:
response_content = client.execute(request)
except Exception as e:
import traceback
print(traceback.format_exc())
if not response_content:
print("failed execute")
else:
# 解析响应结果
response = AlipayUserInfoShareResponse()
response.parse_response_content(response_content)
# 响应成功的业务处理
if response.is_success():
# 如果业务成功,可以通过response属性获取需要的值
result = dict()
result['avatar'] = response.avatar
result['city'] = response.city
result['gender'] = response.gender
result['nick_name'] = response.nick_name
result['province'] = response.province
result['user_id'] = response.user_id
return result
else:
# 如果业务失败,可以从错误码中可以得知错误情况,具体错误码信息可以查看接口文档
print(response.code + "," + response.msg + "," + response.sub_code + "," + response.sub_msg)
return ''
如果小程序需要获取用信息,建议使用小程序端API接口获取, 此方法可以获取, 过程比较繁琐,需要服务端配合开发,如果需要获取特殊字段,只能使用此方法。
版权声明:本文为fengdebeiyingzi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。