支付宝小程序第三方应用服务端获取用户信息

支付宝小程序搞定了,想再搞一个第三方应用模版开发模式业务接入

小程序第三方接入文档:https://docs.alipay.com/isv/10436/kcs4o3

获取用户信息流程如下:

支付宝小程序第三方应用服务端获取用户信息_第1张图片

支付宝小程序第三方应用服务端获取用户信息_第2张图片

1. 创建第三方应用

支付宝小程序第三方应用服务端获取用户信息_第3张图片

2. 第三方应用开发配置

支付宝小程序第三方应用服务端获取用户信息_第4张图片

3. 创建小程序模版(前置条件:第三方应用审核通过)

支付宝小程序第三方应用服务端获取用户信息_第5张图片

4. 配置小程序模版IDE开发配置

可以看到菜单「成员管理」

开发成员:添加成开发成员,使用IDE工具开发到同学可以真机预览。
模版ID:IDE上传模版时APPID填写改值,alipay.open.mini.version.upload也会用到该值

服务端接口调试特别注意:

小程序模版在IDE调试的时候,所需要用到的服务端接口例如:用户授权、订单接口等。需要使用第三方应用的appid和app_auth_token

模版小程序app_auth_token获取方式

第一步:进入第三方应用中的「授权管理」-> 「发起授权」

支付宝小程序第三方应用服务端获取用户信息_第6张图片

第二步:复制授权链接,在浏览器访问(此时还是第三方应用的账号)

支付宝小程序第三方应用服务端获取用户信息_第7张图片

第三步:选择对应小程序模版,确认授权。(无需管回调页面)

支付宝小程序第三方应用服务端获取用户信息_第8张图片

第四步:在第三方应用中授权管理->找到app_auth_token

支付宝小程序第三方应用服务端获取用户信息_第9张图片

在开发调试期间一定要按照这个流程走,要是不是第三方应用的账号,IDE调试的时候你是不可能获取到用户信息的。

之前调试的时候就是没有找到这个流程,然后用alipay.open.auth.token.app获取的app_auth_token,怎么调试都获取不到,一直报{"error_response":{"code":"40002","msg":"Invalid Arguments","sub_code":"isv.invalid-app-id","sub_msg":"无效的AppID参数"}

在钉钉小程序官方群里面技术也就让我看文档https://docs.alipay.com/mini/isv/intro,说实话更本看不出个所以然好吗

接下来就是我们的代码部分:

我用的是thinkPHP5,代码就随便写的,写的不好不要介意

/**
     * 换取授权访问令牌
     * @param  [type] $authCode [授权码]
     * @return [type]           [description]
     */
    public function getAccessToken($authCode)
    {
        import('alipay.AopSdk', "", ".php");//下载地址https://docs.open.alipay.com/54/103419(PHP)
        $aop = new \AopClient ();
        $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
        //第三方配置信息
        $aop->appId = config('alipay_appid');//第三方应用的appid
        $aop->rsaPrivateKey = config('alipay_rsaPrivateKey');//第三方应用的
        $aop->alipayrsaPublicKey= config('alipay_alipayrsaPublicKey');//第三方应用的

        $aop->apiVersion = '1.0';
        $aop->signType = 'RSA2';
        $aop->postCharset='UTF-8';
        $aop->format='json';

        //api地址https://docs.open.alipay.com/api_9/alipay.system.oauth.token/
        $request = new \AlipaySystemOauthTokenRequest ();
        $request->setGrantType("authorization_code");
        $request->setCode($authCode);
        $request->setRefreshToken("");
        $authToken = null;
        $appInfoAuthtoken = "201811BB573597828f0a458dbd7e955b05994B10";//授权app_auth_token
        $result = $aop->execute ( $request, $authToken, $appInfoAuthtoken);
        $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
        $resultCode = isset($result->$responseNode->code)?$result->$responseNode->code:10000;//json异常的时候才会出现code,下同,不做过多解释
        if(!empty($resultCode)&&$resultCode == 10000){

            $result = $result->alipay_system_oauth_token_response;

            return $result->access_token;
            //echo "成功";
        } else {
            //echo "失败";
        }
       
    }

/**
     * 获取用户信息
     */
    public function getUserInfo($access_token)
    {
        $aop = new \AopClient ();
        $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';

        $aop->appId = config('alipay_appid');
        $aop->rsaPrivateKey = config('alipay_rsaPrivateKey');
        $aop->alipayrsaPublicKey= config('alipay_alipayrsaPublicKey');

        $aop->apiVersion = '1.0';
        $aop->signType = 'RSA2';
        $aop->postCharset='UTF-8';
        $aop->format='json';

         //api地址https://docs.open.alipay.com/api_9/alipay.system.oauth.token/
        $request = new \AlipayUserInfoShareRequest ();
        $appInfoAuthtoken = "201811BB573597828f0a457dbd7e955b05994B10";//授权app_auth_token
        $result = $aop->execute ( $request, $access_token, $appInfoAuthtoken); 
        return $result->alipay_user_info_share_response;
    }

来源:接入流程https://docs.open.alipay.com/20171218110821153225,这文档是真难找,之前翻遍了文档也没找到,而且一定要按照这个流程来,谢谢

 

 

你可能感兴趣的:(PHP)