300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > android 支付宝第三方应用授权 支付宝开发平台—第三方应用授权

android 支付宝第三方应用授权 支付宝开发平台—第三方应用授权

时间:2020-05-14 04:46:28

相关推荐

android 支付宝第三方应用授权 支付宝开发平台—第三方应用授权

支付宝开发平台——第三方应用授权

制作支付宝AR应用时遇到第三方应用授权,特在此记录下来供有需要的朋友们参考!如有不足,欢迎补充!!!

1、打开支付宝开发平台,注册成为开发者,点击开发者中心,在我的应用中创建一个应用;点击功能信息,添加我们需要的功能:

因为我们的应用没有上线,APPID是无效的,这里阿里给了我们一个解决方案,就是通过沙箱模式进行接口调试,下面我们来配一下我们的沙箱模式:

APPID : 沙箱应用APPID( *正式环境下的APPID :你开发应用的APPID )

支付宝网关:* 沙箱下的网关:/gateway.do

( *正式环境下的网关 : /gateway.do)

RSA2(SHA256)密钥(推荐) : (配置过RAS2就可以不用配置RAS1了) 生成RSA密钥方法可参照支付宝文档 :https://doc./docs/doc.htm?treeId=291&articleId=105971&docType=1

应用网关:用于接收支付宝异步通知,如口碑开店中的开发者门店被动通知;实际使用时配置;

授权回调地址:授权url中的redirect_uri必须与此值相同

AES密钥:目前不再使用

(应用网关和授权回调地址,这里因为是本地调试)

做好这些准备工作我们就可以开始进行我们的具体功能实现了,首先我打开支付宝开发平台开发文档,点击基础能力->第三方应用授权,阅读一遍内容,我回到文档的第三步:

注意这里的app_id要填写沙箱应用的ID,不然是无法完成调用支付登录页面的。

url 拼接: /oauth2/appToAppAuth.htm?app_id=沙箱应用APPID&redirect_uri=http://127.0.0.1:8080/aliar_tools/aliar/aliartest.action

下面java后端业务处理:(struts2 框架)

import org.apache.struts2.ServletActionContext;

import com.alipay.api.AlipayApiException;

import com.alipay.api.AlipayClient;

import com.alipay.api.DefaultAlipayClient;

import com.alipay.api.request.AlipayOpenAuthTokenAppRequest;

import com.alipay.api.response.AlipayOpenAuthTokenAppResponse;

import com.opensymphony.xwork2.ActionSupport;

public class AliArTestAction extends ActionSupport{

private static final long serialVersionUID = 1L;

/*APPID*/

private static final String APP_ID = "20***50023260";

/*应用私钥 —— 本地生成的私钥*/

private static final String APP_PRIVATE_KEY = "应用私钥2048";

/*支付宝公钥 —— 应用公钥对应的支付宝公钥*/

private static final String ALIPAY_PUBLIC_KEY = "支付宝公钥";

/*访问应用授权URL时会自动生成 app_auth_code

* url 拼接: /oauth2/appToAppAuth.htm?app_id=081500253260&redirect_uri=http://127.0.0.1:8080/aliar_tools/aliar/aliartest.action

*/

private String app_auth_code;

public String getApp_auth_code() {

return app_auth_code;

}

public void setApp_auth_code(String app_auth_code) {

this.app_auth_code = app_auth_code;

}

public String aliartest(){

String str = "";

System.out.println("app_auth_code = "+app_auth_code);

/*

* 正式环境下的网关 : /gateway.do

* 沙箱下的网关:/gateway.do

*/

// AlipayClient alipayClient = new DefaultAlipayClient("/gateway.do",APP_ID,APP_PRIVATE_KEY,"json","GBK",ALIPAY_PUBLIC_KEY,"RSA2");

AlipayClient alipayClient = new DefaultAlipayClient("/gateway.do",APP_ID,APP_PRIVATE_KEY,"json","GBK",ALIPAY_PUBLIC_KEY,"RSA2");

AlipayOpenAuthTokenAppRequest request = new AlipayOpenAuthTokenAppRequest();

/*

* grant_type : 授权类型 ; 如果使用app_auth_code换取token,则为authorization_code,如果使用refresh_token换取新的token,则为refresh_token

* code : 授权码 ; 与refresh_token二选一,用户对应用授权后得到,即第一步中开发者获取到的app_auth_code值

* refresh_token : 刷新令牌 ; 与code二选一,可为空,刷新令牌时使用

*/

request.setBizContent("{" +

"\"grant_type\":\"authorization_code\"," +

"\"code\":\""+ app_auth_code +"\"" +

// "\"refresh_token\":\""+ refresh_token +"\"" +

"}");

AlipayOpenAuthTokenAppResponse response;

try {

response = alipayClient.execute(request);

if(response.isSuccess()){

System.out.println("调用成功");

} else {

System.out.println("调用失败");

}

str = response.getBody();

System.out.println(response.getBody());

} catch (AlipayApiException e) {

// TODO Auto-generated catch block

e.printStackTrace();

str = "{\"resultCode\":-1,\"resultDesc\":\"aliartest异常\",\"res\":[]}";

}

ServletActionContext.getRequest().setAttribute("userXml",str);

return SUCCESS;

}

}

===============

授权后页面响应:

{

"alipay_open_auth_token_app_response":{

"code":"10000",

"msg":"Success",

"app_auth_token":"44f3904de393dafaf8ae3b4X8",

"app_refresh_token":"201b9c16be43bfd4b6d86d82752F58",

"auth_app_id":"20****50023260",

"expires_in":31536000,

"re_expires_in":32140800,

"user_id":"217112581"

},

"sign":"oMt87ixU/6BmMokewP1ytRiShfk5K3356mp+F6TRbaNZi403FIMSNnf42Ae9/IQWAmDED6VD4KNN8rCs3y0ANQ/OUr4XGVA9R+HaVbX99rlh3ysEOxTyLQwgg8Ek06ZrBoe7LsQ5pVCytcsoQ4MZcP9GkoQ=="

}

注意:代码中使用的公钥 为: 支付宝公钥,不是本地生成的公钥

jdk下载地址:https://doc./docs/doc.htm?spm=a219a.7629140.0.0.bj1TCE&treeId=54&articleId=103419&docType=1

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。