支付宝小程序开发java服务
支付宝小程序开发+java服务
1开发者入驻
支付宝小程序是一种全新的开放模式,它运行在支付宝客户端,是手机应用嵌入支付宝客户端的一种方法。支付宝小程序开放给开发者更多的 JS API 和 OpenAPI,也可以提供给用户多样化的便捷服务。支付宝小程序可以被便捷地获取和传播,从而为终端用户提供更优的用户体验。
支付宝小程序对企业账号及个人账号开放。创建小程序前需要完成注册和入驻成为小程序开发者。
1.1注册支付宝企业账户
注册流程:
注册地址:https://memberprod.alipay.com/account/reg/enterpriseIndex.htm
1.2入驻
1.2.1使用企业支付宝账号登录 支付宝开放平台。
1.2.2选择入驻身份
目前小程序支持三种身份:自研开发者、系统服务商 ISV、线下服务商(仅限企业用户)。根据身份可进行相应的业务,不同的身份提供了不同的功能权限,您可根据实际情况选择,详情参考身份说明。
自研开发者:自己来开发小程序,开发者直接为用户提供服务。
系统服务商 ISV:服务商为商家提供服务,生产小程序模板或代商家开发小程序,模板可发布到服务市场,商家在服务市场来订购模板。
线下服务商:无需开发能力即可在支付宝开放平台上进行业务推广,如:收钱码、红包码等。
注释:官方文档地址https://docs.alipay.com/mini/introduce/register#9f565d99
2创建小程序
在开发者入驻中,已完成了注册和入驻流程。通过以下步骤将创建小程序,并获取 APPID。
2.1创建小程序
2.1.1 支付宝程序首页
注意:
一个开发者账号下最多可以创建 10 个小程序。
未曾提交审核的小程序可以删除,删除的小程序不在计数范围。
进入小程序首页,点击立即接入,使用支付宝账号登录,进入我的小程序。
若账号从未创建过小程序,点击开始创建,填写小程序相关信息,完成创建流程。
若账号有已创建的小程序,点击创建来创建新的小程序。
2.2填写基本信息并提交
填写小程序名称(参见小程序应用名称规范),即可快速创建小程序;其他信息可在研发过程中或提审时补充完整,也可在创建时填写完整的小程序基本信息。
准确填写小程序的基本信息,基本信息需符合小程序审核规范 。
小程序信息修改规则如下:
上架前,小程序信息均可修改,不限次数。
上架后,小程序名及小程序英文名均不允许修改。
小程序简介、小程序描述、小程序类目这三个信息在新版本提审时可修改,但每个自然月仅可修改 5 次;其他信息在新版本提审时均可修改。
3小程序开发配置
在支付宝小程序应用列表页面点击查看按钮,进入小程序应用页面开始开发配置。
3.1配置开发管理模块
该功能模块页面,主要用来添加小程序应用功能。如下图所示;
注:根据小程序功能需求,点击添加功能按钮添加功能。如下图所示;
5 java项目应用实例
5.1配置支付宝服务环境常量
5.1.1 支付宝公钥
登录开放平台-开发者中心,选择小程序,找到对应的小程序,点击查看,找到开发设置-接口加签方式,点击查看支付宝公钥,将该处支付宝公钥复制粘贴。
/**支付宝公钥-从支付宝生活号详情页面获取*/
public static final String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1V5vI8zK0uvA8En9bcCn7sMTd2iNKWyIiDnD/A2Q2snx/iI3q06AGDRJZPOhJQeg1vmtSdSD6qj330WfYfpnMdHFGsOpfcTo+aP99hNu+Dms4oA2lLeO0lM9uMFjfS5iOdbAH1Jddsi8PQzP8FIODho4G4rKs6+d/tIYyJrYgFsi+wskoZNaqpXBcnFiQ+LRWwM11FebOpQxBv0sfMbhycLylQ4ZKeg+BrNVI/W8UPDHwHC1QYGFAA8WjWMBBK+7o7rI+JMO9PKDodxDpFLs5rleFh
5.1.2 服务窗APP_ID
登录开放平台-开发者中心选择小程序,找到对应的小程序,点击查看。如下图所示。
5.1.3 服务私钥和公钥
该私钥和公钥是在设置支付宝应用公钥时生成的那一对。
//注:该私钥为测试账号私钥开发者必须设置自己的私钥 , 否则会存在安全隐患
public static final String PRIVATE_KEY= "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC61ddV9IGZPFpJ51l08srLUD381SwiTsoEEFFtkiZ2WVoOKj0O29onDFntrYfYgepq8CXHMSMByBWh9AIrwWGDZsHlpDzxK82XNn/OITM/HOHV3+BXUrwEunN598uw8M1tM/GBYo9W7T7kVMpQ//FJe47X1GVZuN4gh51yhLiHMRqnk4FwAWNS+rbo7Ys533TMKoDI6wza25hwn3j38v3NnRovIzkkdVn0w5uBq1rz3cBMcMY0wB6/qT/LVHE2dRXMXqw0nSSe+Dh5YcgLW8eh5SDcL4dns9Y+t+F+TOkPquJSWGf917Fzwx81gz3lPyGjjkWxq96OuWTAgMBAAECggEANwtBQcWjWO36+8L5DAdrz7J4UMDNG95yjffwxYNFaaCxc3LmQjZrcw2kgO2bFCJSWeceeizzz1aPaQNmkFWM0RW5ElrsyXDKRT59MNF/M5zivAwVICTz18DGvKxQinSnUQD4qdHLwSRsXwDMCkkdYTTRxKyCn4hjiNnrfQ20/77q4XtHotfdJ9pH894tbwk9HWooGZWeZJqplmlFa49Xx2y/ZhLk4SH+Yza6BGbR/+zhRz2EkCAXewWfGdMs90Ij0xoFZqh9T6VE3uYPiJvr0T9faRL20v0x+ZXCu2D83Xjy/eQbiNiZ3Jc57nQQfsZiMQb2ZfhgNHSNmQ9CT6G2YQKBgQDfrgBN8+kk+U1kHMIGJ8HripEUt4e0lfu4qT5k6L/4w5cAjNGc/Ad3afQRlsFNH7zGpNBod6Skx1YrKmLJ65IdelrEG/dLZtQl9OHfovpHO/68gBL99c1XdrFUfCt0Su6PY40bdF3zmZ3hhcEene2N2BB0UP9CPmRcEeQPIsiAjwKBgQDV1PPDVzBf30ea1/fz2EWTWcr9YyUwJSVElYqbZMml247knVsrkHIiU8xyRow0B8y9WjYWLDT906momoyw3A4nFK6sNfN9/05jLn2zfxZK0TNWTLMoXW24w8lKilQMXOwMn65biw96Mce82SoemZpPFDx0kxWQ9ON1a5pLgBJEvQKBgDM5BZjUYm+1J6Plcgk20ZG/CbpUzR7tuddv6nnxUwUExW+6z8XDcXJHMT1V6K5gtjpHQ/Koc2vIulLoQfc7mxplCqQeQ2NhCPQoQBGWoPnvI0bHjZHa2EtPQwy14r2e60Kq6YWAAIPoid87Yh5AzEXPVPVOFyZ0Y0cyUaelr4TBAoGBAND7vn2UkgexHbddCc18+orHgFdi9a53L1Q3Xu7+cwGxcpdGnxsVoiaghbjN8CrN0LDjIOdMr0HAAxlwar5TY1WYphpS5DWpNsBCaMHsHCplCWp3rcVuglTIrMs4JGqsylqQGYUIhMjlLBQKnlqnvqM44NkCA1rXrBJPZs4RTkl1AoGAR783yRRkei1sYQ9BOE23kWP+NhVsTtCEQl8O0+7KY9d8VALqD4WDlckkoomXzGRuHgkxSZq92RC3edDMMIstqS0KB59KxNECMvVGBq91sbciB60E2wN1LumNjI082HVu8rai5wwkG1e712p2IZ8qEGGwSk+HwyVc6UqX8nJgydo=";
//注:该公钥为测试账号公钥开发者必须设置自己的公钥 ,否则会存在安全隐患
public static final String PUBLIC_KEY= "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAutXXVfSBmTxaSedZdPLKy1A9/NUsIk7KBBBRbZImdllaDio9DtvaJwxZ7a2H2IHqavAlxzEjAcgVofQCbB5aQ88SvNlzZ/ziEzPxzh1d/gV1K8BLpzeffLsPDNbTPxgWKPVu0+5FTKUP/xSXuO19RlWbjeIIedcoS4hzEap5OBcAFjUvq26O2LOd90zCqAyOsM2tuYcJ949/L9zZ0aLyM5JHVZ9MObgata893ATHDGNMAev6k/y1RxNnUVzF6sNJ0knvg4eWHIC1vHoeUg3C+HZ7PWPrfhfkzpD6riUlk8g0Y4CGbRn/dexc8MfNYM95T8ho45FsavejrlkwIDAQAB";
5.2实例化支付宝客户端
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
注:
AlipayClient 的实现类都是线程安全的,所以没有必要每次 API 请求都新建一个 AlipayClient 实现类;
创建 AlipayClient 实现类的实例时,指定 format=json,相比 xml 格式,可以减少数据传输量,提升 API 请求效率。
5.3调用支付宝API接口
5.3.1流程规则
1、实例化客户端
例AlipayClient alipayClient = new DefaultAlipayClient(“https://openapi.alipay.com/gateway.do”, APP_ID, APP_PRIVATE_KEY, “json”, CHARSET, ALIPAY_PUBLIC_KEY, “RSA2”);
2、实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:
alipay.open.public.template.message.industry.modify ;
例AlipayOpenPublicTemplateMessageIndustryModifyRequest request = new AlipayOpenPublicTemplateMessageIndustryModifyRequest();
3、//SDK已经封装掉了公共参数,这里只需要传入业务参数,此次只是参数展示,未进行字符串转义,实际情况下请转义;
例request.setBizContent(" {" +
" “primary_industry_name”:“IT科技/IT软件与服务”," +
" “primary_industry_code”:“10001/20102”," +
" “secondary_industry_code”:“10001/20102”," +
" “secondary_industry_name”:“IT科技/IT软件与服务”" +
" }");
4、//执行API请求
例AlipayOfflineMaterialImageUploadResponse response = alipayClient.execute(request);
5、//调用成功,则处理业务逻辑
例 if(response.isSuccess()){ //… }
5.4获取会员信息
public void loginCheck(String authCode,HttpServletRequest request,HttpServletResponse httpServletResponse) {
String alipayUserInfo = "";
// 1. 服务端获取access_token、user_id
AlipaySystemOauthTokenResponse response = null;
try {
response = getAccessToken(authCode);
if (response.isSuccess()) {
/**
* 获取到用户信息后保存到数据
* 1. 如果数据库不存在对用的 alipayUserId, 则注册
* 2. 如果存在,则获取数据库中的信息再返回
*/
String accessToken = response.getAccessToken();
String alipayUserId = response.getUserId();
// 获取会员信息
AlipayUserInfoShareResponse aliUserInfo = getAlipayUserInfo(accessToken);
}
} else {
System.out.println("获取access_token - 调用失败");
}
} catch (Exception e) {
System.out.println("获取用户信息失败:"+e);
}
}
// 获取access_token、user_id
private AlipaySystemOauthTokenResponse getAccessToken(String authCode) throws Exception {
AlipayClient alipayClient = AlipayAPIClientFactory.getAlipayClient();
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
//值为authorization_code时,代表用code换取;值为refresh_token时,代表用refresh_token换取
request.setGrantType(AlipayServiceEnvConstants.GRANT_TYPE);
request.setCode(authCode); // 4. 填入前端传入的授权码authCode
request.setRefreshToken("201208134b203fe6c11548bcabd8da5bb087a83b");
AlipaySystemOauthTokenResponse response = alipayClient.execute(request);
return response;
}
// 获取支付宝用户信息
private AlipayUserInfoShareResponse getAlipayUserInfo(String accessToken) throws Exception {
AlipayClient alipayClient = AlipayAPIClientFactory.getAlipayClient();
AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();
AlipayUserInfoShareResponse response = alipayClient.execute(request, accessToken);
if (response.isSuccess()) {
System.out.println("获取会员信息 - 调用成功");
return response;
}
return null;