微信小程序> 开通支付宝小程序收款功能

开通支付宝小程序收款功能

浏览量:3870 时间: 来源:xifengLK

支付宝小程序支付接口

相关文档

小程序支付开通官方文档

1.开通小程序收款权限

2.总体流程

问题:

1.在alipay.trade.create中需要传递给服务器用户的buyer_id即user_id

如何获取user_id:

1).在支付宝前段获得用户授权,得到authCode

2).调用支付宝接口传递授权码,得到用户其他信息(userid  access_token)

获取用户信息官方接口

    public String getUserId(String authcode) {        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliPayConfig.getAPP_ID(), aliPayConfig.getAPP_PRIVATE_KEY(), "json", "GBK", aliPayConfig.getALIPAY_PUBLIC_KEY(), "RSA2");        AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();        request.setGrantType("authorization_code");        request.setCode(authcode);        request.setRefreshToken("201208134b203fe6c11548bcabd8da5bb087a83b");        try {            AlipaySystemOauthTokenResponse response = alipayClient.execute(request);            if (response.isSuccess()) {                return response.getUserId();            } else {                logger.info("获取用户id失败");            }        } catch (AlipayApiException e) {            e.printStackTrace();        }        return null;    }

2.在调用alipay.trade.create时,需要传递给服务器支付宝公匙小程序的私匙

需要在小程序界面设置

3.回调url需要我们在调用alipay.trade.create时传递给服务器

4.java后端使用alipay.trade.create官方示例时会出现参数无效错误,使用model方法传递参数

    public String getTradeNO(String fee, String authcode,String phone) {        AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliPayConfig.getAPP_ID(), aliPayConfig.getAPP_PRIVATE_KEY(), "json", "UTF-8", aliPayConfig.getALIPAY_PUBLIC_KEY(), "RSA2");//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.create.        AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();//SDK已经封装掉了公共参数,这里只需要传入业务参数。        AlipayTradeCreateModel model = new AlipayTradeCreateModel();        model.setBuyerId(buyerId);//这里是刚刚获得的userid        model.setOutTradeNo(out_trade_no);//这个是我们自己创建的订单号,便于处理后面的回调函数        model.setSubject("geek small program recharge");        model.setTotalAmount(fee);//支付宝后端单位为元        request.setNotifyUrl(aliPayConfig.getNotifyUrl());//用户支付成功后,支付宝会给notifyurl发送请求        request.setBizModel(model);//        request.setBizContent("{" +//                ""out_trade_no":" + out_trade_no + ',' +//                ""total_amount":" + fee + ',' +//                ""subject":"极市,小程序充值"," +//                ""buyer_id":" + buyerId + ',' +//                "  }");不能使用这种方式支付,不然会出现参数无效错误        try {            //使用的是execute            AlipayTradeCreateResponse response = alipayClient.execute(request);            String trade_no = response.getTradeNo();//获取返回的tradeNO。            System.out.println(response.getBody());            return trade_no;        } catch (AlipayApiException e) {            e.printStackTrace();            System.out.println("获取订单号失败");            return "获取订单号失败";        }    }

5.回调函数验签失败,当支付宝发送给我们消息时如果有中文,当我们使用错误的编码模式时会出现中文乱码导致验签失败

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎