1.配置支付宝所需参数
2.实现类
Java根据获取到的参数,拼接起来返回给安卓,让安卓调用支付宝授权获取会员信息:
@ApiOperation(value = "拼接支付宝授权页面所需参数", httpMethod = "POST", produces = "application/json;charset=UTF-8") @ApiImplicitParam(value = "*用户token", name = "token",defaultValue ="", dataType = "String",paramType="header") @PostMapping(value = "/transfer/connectAlipayParams") public Result connectAlipayParams(HttpServletRequest request, HttpServletResponse response) { Map<String,Object> map = new HashMap<String ,Object>(); try { String redirect = alipayService.buildAuthInfoMap(); map.put("datas",redirect); return Result.ok(map); }catch (Exception e){ e.printStackTrace(); return Result.error(901,"拼接支付宝授权页面所需参数失败!"); } } |
3.用到的工具方法
@Value("${app.alipay.appid}") private String appid; @Value("${app.alipay.pid}") private String pid; @Value("${app.alipay.rsapri}") private String rsapri; public String buildAuthInfoMap() throws AlipayApiException, UnsupportedEncodingException { Map<String, String> keyValues = new HashMap<String, String>(); // 商户签约拿到的app_id,如:2013081700024223 keyValues.put("app_id", appid); // 商户签约拿到的pid,如:2088102123816631 keyValues.put("pid", pid); // 服务接口名称, 固定值 keyValues.put("apiname", "com.alipay.account.auth"); // 服务接口名称, 固定值 keyValues.put("methodname", "alipay.open.auth.sdk.code.get"); // 商户类型标识, 固定值 keyValues.put("app_name", "mc"); // 业务类型, 固定值 keyValues.put("biz_type", "openservice"); // 产品码, 固定值 keyValues.put("product_id", "APP_FAST_LOGIN"); // 授权范围, 固定值 keyValues.put("scope", "kuaijie"); // 商户唯一标识,如:kkkkk091125 keyValues.put("target_id", "kkkkk091125"); // 授权类型, 固定值 keyValues.put("auth_type", "AUTHACCOUNT"); // 签名类型 keyValues.put("sign_type", "RSA2"); StringBuilder sbInfo = new StringBuilder(); for (String key : keyValues.keySet()) { sbInfo.append(key).append("=").append(keyValues.get(key)).append("&"); } sbInfo = sbInfo.deleteCharAt(sbInfo.length() - 1); keyValues.put("sign", AlipaySignature.rsa256Sign(sbInfo.toString(), rsapri, "UTF-8")); StringBuilder fInfo = new StringBuilder(); for (String key : keyValues.keySet()) { fInfo.append(key).append("=").append(URLEncoder.encode(keyValues.get(key), "UTF-8")).append("&"); } fInfo = fInfo.deleteCharAt(fInfo.length() - 1); return fInfo.toString(); } |
在该功能中用的依赖如下:
<dependency> <groupId>com.alipay.sdk</groupId> <artifactId>alipay-sdk-java</artifactId> <version>4.9.5.ALL</version> </dependency> |