支付宝小程序登录 -tp

45 篇文章 0 订阅
13 篇文章 0 订阅

1.在小程序端获取 auth_code,目的是获取用户授权码

2.把第一步获取的授权码 auth_code 传到后台接口

3.后台拿到这个 auth_code 之后,需要调用支付宝的授权平台,从而获取用户的唯一 token 以及 支付宝的userid,都是唯一的,调用的接口为 [alipay.system.oauth.token]。获取到userid后,判断一下这个userid是否在我们自己的数据库中存在,如果存在,直接获取信息,并且直接返回用户对象到前台;如果不存在,则需要从支付宝授权平台再一次去获取支付宝用户的信息。

public function aliLogin(){
        $code = $this->request->param('code');
        if(empty($code)){
            return $this->error('缺少登录参数');
        }
        // 引用支付宝
        vendor('.alipayapp.aop.AopClient');
        vendor('.alipayapp.aop.request.AlipaySystemOauthTokenRequest');
        vendor('.alipayapp.aop.request.AlipayUserInfoShareRequest');
        $aop = new \AopClient();
        $data = Payment::read(12, 1, true); // 获取后台支付宝配置信息

        $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
        $aop->appId = $data['pay_config']['app_id'];
        $aop->rsaPrivateKey = $data['pay_config']['private_key'];
        $aop->alipayrsaPublicKey = $data['pay_config']['ali_public_key'];
        $aop->apiVersion = '1.0';
        $aop->signType = 'RSA2';
        $aop->postCharset='utf-8';
        $aop->format='json';
        $request = new \AlipaySystemOauthTokenRequest();
        $request->setGrantType("authorization_code");
        $request->setCode($code);
        //$request->setRefreshToken("201208134b203fe6c11548bcabd8da5bb087a83b");
        $result = $aop->execute($request);
        $result = (new \think\Collection($result))->toArray();
        // 拿到的支付宝user_id
        $ali_user_id = $result['alipay_system_oauth_token_response']->user_id ?? '';
        if (!$ali_user_id) {
            return $this->error('code无效');
        }
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值