Java中获取支付宝小程序openid

文章描述了如何在Java后端通过支付宝小程序接口获取用户的openid,包括处理code参数、创建AlipayClient对象、执行AlipaySystemOauthTokenRequest并获取OpenID的过程。
摘要由CSDN通过智能技术生成

 java 后端获取支付宝小程序openid

 @PostMapping("/getOpenidZFBSIX")
    @CrossOrigin
    @ResponseBody
    public Map<String,Object> getOpenidZFBSIX(@RequestBody byte[] req)
    {
        HashMap<String, Object> objectObjectMap = new HashMap<>();
        JSONObject json = JSONObject.parseObject(new String(req, Charset.forName("UTF-8")));
        System.out.println("请求参数"+json);

        String code = json.get("code").toString();

        String openId=null;
        //使用支付宝小程序的固定方法获取auth_code
        if(code==null||code.length()==0) {
            objectObjectMap.put("status","9995");
            objectObjectMap.put("resMsg","code不能为空");
            return objectObjectMap;
        }else {
            //String serverUrl, String appId, String privateKey, String format,String charset, String alipayPublicKey, String signType
            //实例化客户端 参数:正式环境URL,Appid,应用私钥 PKCS8格式,字符编码格式,字符格式,支付宝公钥,签名方式
            AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",wxspAppid,privateKey,"json","UTF-8",publicKey,"RSA2");
            AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
            // 值为authorization_code时,代表用code换取
            request.setGrantType("authorization_code");
            //授权码,用户对应用授权后得到的
            request.setCode(code);
            //这里使用execute方法
            AlipaySystemOauthTokenResponse response = null;
            try {
                response = alipayClient.execute(request);
            } catch (AlipayApiException e) {
                throw new RuntimeException(e);
            }
            //刷新令牌,上次换取访问令牌时得到。见出参的refresh_token字段
            request.setRefreshToken(response.getAccessToken());
            //返回成功时 就将唯一标识返回
            if(response.isSuccess()){
                System.out.println("调用成功"+response.getUserId());
                System.out.println("调用成功");
                //我这里只返回了一个字段给前端用
                openId=response.getOpenId();
            } else {
            }
        }

        System.out.println("+-----------"+openId.toString());

     

    }

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值