沙箱环境模拟“服务商代商户获取用户信息”代码示例

简介: 调用集成代码前,请先查看服务商代商户获取用户信息流程说明:[url]https://openclub.alipay.com/read.php?tid=12762&fid=68[/url]使用沙箱模拟服务商代商户获取用户信息逻辑流程如下:服务商appid:2016101800718925;商户...

调用集成代码前,请先查看服务商代商户获取用户信息流程说明:[url]https://openclub.alipay.com/read.php?tid=12762&fid=68[/url]

使用沙箱模拟服务商代商户获取用户信息逻辑流程如下:

服务商appid:2016101800718925;

商户appid:2016091500520089;pid:2088102175800172;

用户pid:2088102175794899;

1、第三方应用授权

(1)第三方应用授权链接

[url]https://openauth.alipaydev.com/oauth2/appToAppAuth.htm?app_id=2016101800718925&redirect_uri=https%3a%2f%2fwww.baidu.com%2f[/url]

注:沙箱环境测试拼接链接头部与正式环境不同:[url]https://openauth.alipay[/url]dev.com/oauth2/appToAppAuth.htm?app_id=APPID&redirect_uri=ENCODED_URL

(2)获取app_auth_code

[url]https://www.baidu.com/?app_id=2016101800718925&source=alipay_app_auth&app_auth_code=8e5e571d6ca74809ae23ba2669af6X17[/url]

(3)换取应用授权令牌

public static void main(String[] args) throws AlipayApiException {
		AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
		AlipayOpenAuthTokenAppRequest request = new AlipayOpenAuthTokenAppRequest();
		//授权成功后,使用app_auth_code换取app_auth_token
		AlipayOpenAuthTokenAppModel model = new AlipayOpenAuthTokenAppModel();
		//换取令牌,不改
		model.setGrantType("authorization_code");
		//app_auth_code参数
		model.setCode("b47d70d0b43d4a46ae23c438f60afX17");
		/*//刷新令牌
		model.setRefreshToken("a3dcea3a35a342858391dfeaa336cE75");*/
		request.setBizModel(model);
	    try {
	    	AlipayOpenAuthTokenAppResponse response = alipayClient.execute(request);
		System.out.println(response.getBody());
		} catch (AlipayApiException e) {
		    //处理异常
		    e.printStackTrace();
		}
}

响应参数:

{"alipay_open_auth_token_app_response":{"code":"10000","msg":"Success","app_auth_token":"201901BB8b1c906179484ce893077fd696f4bC17","app_refresh_token":"201901BB5547a7886d7f4ac68605fa493677eC17","auth_app_id":"2016091500520089","expires_in":31536000,"re_expires_in":32140800,"tokens":[{"app_auth_token":"201901BB8b1c906179484ce893077fd696f4bC17","app_refresh_token":"201901BB5547a7886d7f4ac68605fa493677eC17","auth_app_id":"2016091500520089","expires_in":31536000,"re_expires_in":32140800,"user_id":"2088102175800172"}],"user_id":"2088102175800172"},"sign":"KRBeKgLQo8SvL/oGiybhJzh5CZjmF9KeGXlQj/pHUTtVC8cjZA/Jm6sGn0K3LNpmZ38YJOocuvKHqkoeU2SAMLYkreRBjWP5cjqWNsVScQtBh1Kwe3ePSoN7XIkyxHg9G3tqdMlk/ZEffYNVvin94KH8HJ2pBQljanM8l/VjueAmX1EdPPMOHafvWdx4hE6rz4PUy4/s+6nQADOUzP0ctW51CTk2A/e3qIYlf3kL6w8J3K2ohPCOBhPDypUnm5CSEPHCrdFHeJVw3fLPSsAqtfIqjWBIWdDzUl2ogHBf16pEiUpUtiEoDb/p1X3fxQCRrJ87XUqk5YW9EOVltx5zgA=="}

2、用户信息授权

(1)用户信息授权链接

[url]https://openauth.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=2016091500520089&scope=auth_user[/url],auth_base&redirect_uri=https%3a%2f%2fwww.baidu.com%2f

注:沙箱环境测试拼接链接头部与正式环境不同:[url]https://openauth.alipay[/url]dev.com/oauth2/publicAppAuthorize.htm?app_id=APPID&scope=SCOPE&redirect_uri=ENCODED_URL

(2)获取auth_code

[url]https://www.baidu.com/?app_id=2016091500520089&source=alipay_wallet&scope=auth_base[/url],auth_user&auth_code=1f80c8d6c21b4a8a94345e07d823QB89

(3)换取授权访问令牌

public static void main(String[] args) throws AlipayApiException {
		AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
		AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
		/**
		 * 用户授权没有AlipaySystemOauthTokenModel,直接使用request
		 */
		//值为authorization_code时,代表用code换取;值为refresh_token时,代表用refresh_token换取
		request.setGrantType("authorization_code");
		//授权码,用户对应用授权后得到。即下面获取到的AccessToken
		//每次用户授权完成,回调地址中的auth_code将不一样,auth_code只能使用一次,一天未被使用自动过期。 
		request.setCode("1f80c8d6c21b4a8a94345e07d823QB89");
		//刷新令牌,上次换取访问令牌时得到
		//request.setRefreshToken("43e3bee07f354cc5a7780446412bSX75");
		try {
			String app_auth_token="201901BB8b1c906179484ce893077fd696f4bC17";
			//自调用
//		    AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
		  //第三方调用接口
		    AlipaySystemOauthTokenResponse response = alipayClient.execute(request,null,app_auth_token);
		    System.out.println(response.getBody());
		} catch (AlipayApiException e) {
		    //处理异常
		    e.printStackTrace();
		}
	}

响应参数:

{"alipay_system_oauth_token_response":{"access_token":"composeBd364827b102144cf992fb7ce6e327X89","alipay_user_id":"2088102175794899","expires_in":600,"re_expires_in":660,"refresh_token":"composeBdefde11796f24938bafebefcf7834D89","user_id":"2088102175794899"},"sign":"NtsgUCZg04C5DdRnBdFSyFgg8K5pcFSnGbGV67zpo6tAuDEUB6421lAm2mdG8UHdO1PlLoSdSZmXgNZgin3bkjFe4hyOQUroPLb64whTCas5BsKBODL2s0+8LlrGnF7VJNkOSaWrDIh15DFNSKLvtA3gtvo3gvZK5gbY/428HzEE8HpBC85CEZuAA+0RsVXJvk/lvcXtAfjEKs5c1s45aOq8UmcH+HjAjmcPptNHokxYF+iY++xRgaypz7PeHMJsJNI8PS0CvznYySXwvHi9z/Ooav79X5gjjftqpd/2aSeUljbXdlf66LhcBaAFj8eT1r/Zkz+xQ2jE5M8i95HniQ=="}

3、获取会员信息

获取会员信息接口

public static void main(String[] args) throws AlipayApiException {
		AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
		//调用接口获取用户信息
		AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();
		//需要用户授权后,将auth_code换取accessToken,注入
		String accessToken = "composeBd364827b102144cf992fb7ce6e327X89";
		try {
		    String app_auth_token="201901BB8b1c906179484ce893077fd696f4bC17";
			//第三方调用接口
		    AlipayUserInfoShareResponse response = alipayClient.execute(request, accessToken,app_auth_token);
		//自调用
//			AlipayUserInfoShareResponse response = alipayClient.execute(request, accessToken);
			System.out.println(response.getBody());
		} catch (AlipayApiException e) {
		    //处理异常
		    e.printStackTrace();
		}
}

响应参数:

{"alipay_user_info_share_response":{"code":"10000","msg":"Success","gender":"f","is_certified":"T","is_student_certified":"F","nick_name":"买家沙箱","user_id":"2088102175794899","user_status":"T","user_type":"2"},"sign":"GFOQ5SbhPPSkL1Dmf9snUJxTEeCxngsXOQubURBIDx5C9/sb7CnNmHdSXDru9NPDlvfSQPT+b+iUOVapARafpsdqP6XIdHqQfrLB2jE6YO2ql52J07/yGrUNAwjaaKd/ndBbpljhn9laQATD1sqrwwUGmttiGkyK6cPvW3lH/ndAvbDRkwnKdrLKZGSou3erf0thL6QzlS12XXryTnvEArCuteAsqqDFi81R/PVKyXdl15P9SdVQzhJski5yZ3A1VEO9Vv96bVjVlgUZaIALddjOX4rh100e/mxx7K8qOmjX12r72pFyPrVEAQChRTSx1OxiXureiCScscHKtZdOQg=="}

设置app_auth_token和accessToken的代码方式:

注:accessToken没有可以设置为null。

PHP:

$result = $aop->execute($request,$accessToken$app_auth_token); 

.net:

response=client.execute(request,accessToken,app_auth_token);


如果还是报错,请按如下方式进行提问:

正确提问方式:使用环境(沙箱还是正式环境)+接口名称(中文+英文)+ 请求参数 + 报错信息详情

目录
相关文章
|
小程序 开发者
关于UniApp启动到微信小程序工具提示找不到app.json
关于UniApp启动到微信小程序工具提示找不到app.json
2947 0
|
9月前
|
缓存 API Python
如何通过API获取拼多多商品详情数据?
注册开放平台账号,获取client_id与client_secret,调用鉴权接口换取access_token(有效期24小时)。通过GET请求查询商品详情,需传goods_id和access_token。响应包含商品名称、价格、销量及SKU库存等信息。注意处理code非0的错误,控制请求频率≤100次/分钟,建议指数退避重试。Python示例使用requests实现。
1034 0
|
6月前
|
人工智能 数据可视化 安全
企业如何应用BI系统(2026年1月最新)
截至2026年,全球BI市场达432亿美元,中国领跑亚太增长。瓴羊Quick BI以AI增强分析为核心,支持自然语言查询、自动洞察、根因分析与预测模拟,预置行业模板,5分钟搭建看板,湖仓一体架构保障数据可信,覆盖全员用数与企业级安全合规,助力企业从“看过去”迈向“预未来”的智能决策。(239字)
|
SQL 安全 测试技术
Flask表单处理的奥秘:如何让你的用户输入验证飞起来?
【8月更文挑战第31天】在Web开发中,使用Flask框架进行表单处理和用户输入验证至关重要。本文详细介绍了Flask表单处理的步骤,包括创建、渲染、处理及验证表单数据,并提供了示例代码展示如何利用`Flask-WTF`扩展实现安全的用户输入验证。通过遵循最佳实践,如使用Flask-WTF、编写测试和采取安全措施,开发者能更高效地完成表单处理任务,提升Web应用的稳定性和安全性。
288 0
|
消息中间件 编解码 Kafka
Go语言并发模型与模式:Worker Pool 模式
Worker Pool(工作池)模式是Go语言中管理高并发任务的有效方法。通过限制 Goroutine 数量,避免资源耗尽或系统崩溃。其核心包括任务通道、工作者 Goroutine、结果通道(可选)及同步机制。示例代码展示了如何分配与处理任务,同时支持带返回值的实现。该模式适用于网络服务、批量任务处理、消息消费等场景,具有限制并发、提高稳定性和结构清晰的优点。但需注意通道关闭时机、任务取消机制及错误处理等问题。Worker Pool 是构建高效任务处理系统的强大工具。
|
小程序 前端开发 Java
支付宝小程序 PHP 获取用户手机号 验签解密 RSA解密 AES解密
支付宝小程序 PHP 获取用户手机号 验签解密 RSA解密 AES解密
2042 0
|
索引 Python
%g是什么
`%g` 是 Python 字符串格式化中的一种格式说明符,用于表示浮点数或整数,能自动选择最合适的表示法。当数值为整数时,它显示整数;当数值较大或含小数时,它选择科学记数法或小数点记数法,并去掉无用的零。例如:
2426 1
|
小程序 搜索推荐 JavaScript
美食推荐|美食推荐小程序|基于微信小程序的美食推荐系统设计与实现(源码+数据库+文档)
美食推荐|美食推荐小程序|基于微信小程序的美食推荐系统设计与实现(源码+数据库+文档)
746 3
|
物联网 网络性能优化 Python
"掌握MQTT协议,开启物联网通信新篇章——揭秘轻量级消息传输背后的力量!"
【8月更文挑战第21天】MQTT是一种轻量级的消息传输协议,以其低功耗、低带宽的特点在物联网和移动应用领域广泛应用。基于发布/订阅模型,MQTT支持三种服务质量级别,非常适合受限网络环境。本文详细阐述了MQTT的工作原理及特点,并提供了使用Python `paho-mqtt`库实现的发布与订阅示例代码,帮助读者快速掌握MQTT的应用技巧。
586 0