支付宝小程序开发+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配置开发管理模块
该功能模块页面,主要用来添加小程序应用功能。如下图所示;
在这里插入图片描述
注:根据小程序功能需求,点击添加功能按钮添加功能。如下图所示;
在这里插入图片描述
3.2配置成员管理模块
成员管理模块:主要是用来管理小程序开发、测试体验、运营三类人员的权限。
每个小程序都可以设置自己的开发者和体验者。每个小程序可添加30个开发者和50个体验者,开发者默认为体验者,不占用体验者名额。
开发者——添加成员后,请被邀请者打开支付宝客户端,进入“朋友”tab“消息中心”来确认。
体验者——添加成员后,请被邀请者打开支付宝客户端,进入“朋友”tab“消息中心”来确认。
运营者——添加成员后,请被邀请者打开支付宝APP,进入“朋友”tab“服务提醒”来确认,最后被邀请者通过支付宝搜索“小程序助手”查看运营数据。
在这里插入图片描述
注:添加成员后,请被邀请者打开支付宝客户端,进入朋友tab消息中心来确认。
3.3配置设置模块(应用设置模块中,主要配置开发设置页面内容)
3.3.1 设置应用公钥
3.3.1.1 生成RSA密钥
支付宝提供一键生成工具便于开发者生成一对RSA密钥,可通过下方链接下载密钥生成工具:
下载该工具后,解压打开文件夹,运行“RSA签名验签工具.bat”(WINDOWS)或“RSA签名验签工具.command”(MAC_OSX)。
界面示例:
在这里插入图片描述
详细步骤:
1.根据开发语言选择密钥格式。
2.选择密钥长度2048位。
3.点击 “生成密钥”,会自动生成商户应用公钥和应用私钥。
4.点击“打开密钥文件路径”,即可找到生成的公私钥。如图:
在这里插入图片描述
注: 生成的私钥需妥善保管,避免遗失,不要泄露。应用私钥需填写到代码中供签名时使用。应用公钥需提供给支付宝账号管理者上传到支付宝开放平台。
3.3.1.2 上传应用公钥并获取支付宝公钥
a登录开放平台-开发者中心,选择小程序,找到对应的小程序,点击查看,找到设置-接口加签方式;
在这里插入图片描述
b点击设置应用公钥,根据开发者的条件设置应用公钥或上传公钥证书,若未绑定手机,请根据引导完成手机绑定;
在这里插入图片描述
c完成验证
在这里插入图片描述
d把签名验签工具里公钥的内容复制到此处,点击保存完成密钥设置
在这里插入图片描述
e保存成功后,在同一页面查看或修改应用公钥或上传应用公钥证书
在这里插入图片描述
f保存支付宝公钥内容,在代码中验签使用
在这里插入图片描述
3.3.2 设置RSA密钥
进入小程序详情页>开发设置> 内容加密方式,首次设置可以看到设置按钮(若已设置则为查看按钮),经过核身校验后可以查看AES设置页面(该密钥由支付宝开放平台生成,开发者仅需要将密钥配置到你的系统中即可)。
在这里插入图片描述
注意:若已配置密钥,请谨慎重新重新生成密钥,否则若你的服务端密钥没有更新最新密钥会导致解密失败。
3.3.3添加服务器域名白名单
进入小程序详情页>开发设置>服务器域名白名单,点击添加按钮进入服务器域名添加页面,填写已经过SSL认证的域名,点击确定按钮即可。
在这里插入图片描述
填写域名信息:
在这里插入图片描述
4 java项目jar包引用
4.1获取服务端SDK
4.1.1 Maven项目jar包引用
地址:https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java
pom.xml配置:

com.alipay.sdk
alipay-sdk-java
3.7.110.ALL

4.1.2 其他项目jar包引用
集成支付宝接口需要引入的文件是:
alipay-sdk-java*.jar
commons-logging-1.1.1.jar
若进一步了解代码实现请引入文件:
alipay-sdk-java*-source.jar
commons-logging-1.1.1-sources.jar
4.2 SDK集成
SDK已经对加签验签逻辑做了封装,使用SDK可直接调用API。
确定接口对应的类:
例如接口名:alipay.offline.material.image.upload
在SDK中对应的类为:每个单词首字母大写,并去掉分隔符(“.”),末尾加上Request(或Response)
如上接口名对应的类为:
AlipayOfflineMaterialImageUploadRequest(请求类)
AlipayOfflineMaterialImageUploadResponse(响应类)
SDK包说明
alipay-sdk-java*.jar—————————支付宝SDK编译文件jar
alipay-sdk-java*-source.jar——————支付宝SDK源码文件jar
commons-logging-1.1.1.jar——————SDK依赖的日志jar
commons-logging-1.1.1-sources.jar———SDK依赖的日志源码jar

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;
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值