java后端获取支付宝会员的基本信息

java后端获取支付宝的基本信息

  • app绑定支付宝其实大部分都是由后端来完成的,绑定支付宝总共需要三步
  • 第一步
public static String querySign()   {
        String token=System.currentTimeMillis()+new Random().nextInt()+"";
         String   targetId=null;
        try {
            MessageDigest md=MessageDigest.getInstance("md5");
            byte[] md5=md.digest(token.getBytes());
            BASE64Encoder base64Encoder = new BASE64Encoder();
             targetId = base64Encoder.encode(md5);

            System.out.println(targetId);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        StringBuffer  asd=new StringBuffer();
        SortedMap<String,String > map = new TreeMap<String,String >();
        map.put("apiname","com.alipay.account.auth");
        map.put("method","alipay.open.auth.sdk.code.get");
        map.put("app_id", 	APP_ID);
        map.put("app_name","app名称");
        map.put("biz_type","openservice");
        map.put("pid","app的pid");
        map.put("product_id","APP_FAST_LOGIN");
        map.put("scope","kuaijie");
        map.put("target_id",targetId);
        map.put("auth_type","AUTHACCOUNT");
        map.put("sign_type","RSA");
        String signStr = AlipaySignature.getSignContent(map);

        String sign = null;
        try {
            sign = AlipaySignature.rsaSign(signStr,APP_PRIVATE_KEY, CHARSET);
            String  s=PayUtil.getSignEncodeUrl(map,true) + "&sign=" + URLEncoder.encode(sign,CHARSET);
            String s1 = map.toString();
            String replace = s1.replace(", ","&");
            return replace.substring(1,replace.length()-1)+s;
        } catch (AlipayApiException e) {
            e.printStackTrace();
            return "";
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            return "";
        }
    }

这一步执行成功后会返回

apiname=com.alipay.account.auth& app_id=*******& app_name=*****& auth_type=AUTHACCOUNT& biz_type=openservice& method=alipay.open.auth.sdk.code.get& pid=*******& product_id=APP_FAST_LOGIN& scope=kuaijie& sign_type=RSA& target_id=7UC8vDI78pXKaJLGKVTIJg==&sign=ZirsWxWPq9T6RvV65W9Vh1%2BEU1%2FywcSfz3HU4XlNb%2BLHY4LbhJ15%%2B1z0J%2F4yYBwxq4ehIodZdaxfwl8JXmA0hZlDNSERsMXWmDUUETE0gLAhFkKFJNO18928envJf%2B52vRaUNghvubxmILQ4UhIl2hLNnpKX8mxRZ3deAno1bCrs2E5Mfh8OC4CHSOUGtTWwPvlG0jDn9DrwY2kxpQ7VIrBKvKokyI7uTt5zBeZpWZA%3D%3D

app端(安卓,ios)都可以,拿这个数据与支付宝进行交互,来获取auth_code

  • 第二步,拿auth_code与支付宝交互,来换取auth_token。
    APP_PRIVATE_KEY 是支付宝公钥,上传应用私钥到支付宝平台支付宝自动生成
  public static JSONObject  findAuthToken(String auth_code) {
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
        AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
        request.setCode(auth_code);
        request.setGrantType("authorization_code");
        try {
            AlipaySystemOauthTokenResponse oauthTokenResponse = alipayClient.execute(request);
           return  findUserInfo(oauthTokenResponse.getAccessToken());
        } catch (AlipayApiException e) {
            //处理异常
            e.printStackTrace();
        }
        return null;
    }
  • 第三步,用auth_token交换用户的基本信息(不包括用户的手机号,用户账号)
  public static JSONObject   findUserInfo(String authToken){
        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
        AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();
        try {
            AlipayUserInfoShareResponse userinfoShareResponse = alipayClient.execute(request, "kuaijieB9eb8d912d2694957bf01d710b5bf5X69");
            String body = userinfoShareResponse.getBody();
            return JSONObject.parseObject(body);
        } catch (AlipayApiException e) {
            //处理异常
            e.printStackTrace();
            return null;
        }
    }

看了支付宝的官方文档也米看明白,最后在网上找到一篇帖子
地址 https://my.oschina.net/bddiudiu/blog/834607
希望帮助到大家。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
农产品电商平台的Java后端功能开发通常涉及多个模块,如用户管理、商品管理、订单管理、支付接口集成等。由于编写完整的代码过于庞大,且不符合本平台的规定,我将简要概述一些核心部分的代码结构和常用功能的实现方法。 1. **用户模块(User)**: - 用户注册/登录:验证用户输入的用户名/密码,使用Spring Security处理安全认证。 - 个人信息管理:获取、更新用户的基本信息和地址信息。 2. **商品模块(Product)**: - 商品展示:从数据库查询或API获取商品列表,包括图片、描述、价格等。 - 商品详情:展示单个商品的详细信息。 3. **订单模块(Order)**: - 订单创建:用户选择商品并提交订单,存储订单信息,关联商品和用户。 - 订单状态管理:如待支付、已支付、待发货、已完成等状态变化的处理。 4. **购物车(ShoppingCart)**: - 添加/删除商品到购物车:管理用户的临时购买选择。 - 结算功能:计算总价并生成订单。 5. **支付接口集成(Payment)**: - 调用第三方支付平台API,如支付宝、微信支付,处理支付请求和回调。 6. **库存管理(Inventory)**: - 订单处理时同步商品库存,防止超卖。 为了实现这些功能,你会用到的技术栈可能包括: - Java语言(JDK) - Spring Boot作为后端框架 - MyBatis 或 Hibernate 进行数据持久化 - Spring MVC 控制器处理HTTP请求 - Thymeleaf 或 Vue.js 前端模板 - MySQL 或其他数据库存储数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值