java 实现获取支付宝授权获取会员信息

46 篇文章 3 订阅
6 篇文章 0 订阅

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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iamlzjoco

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值