支付宝小程序搞定了,想再搞一个第三方应用模版开发模式业务接入
小程序第三方接入文档:https://docs.alipay.com/isv/10436/kcs4o3
获取用户信息流程如下:
可以看到菜单「成员管理」
开发成员:添加成开发成员,使用IDE工具开发到同学可以真机预览。
模版ID:IDE上传模版时APPID填写改值,alipay.open.mini.version.upload也会用到该值
服务端接口调试特别注意:
小程序模版在IDE调试的时候,所需要用到的服务端接口例如:用户授权、订单接口等。需要使用第三方应用的appid和app_auth_token
第一步:进入第三方应用中的「授权管理」-> 「发起授权」
第二步:复制授权链接,在浏览器访问(此时还是第三方应用的账号)
第三步:选择对应小程序模版,确认授权。(无需管回调页面)
第四步:在第三方应用中授权管理->找到app_auth_token
在开发调试期间一定要按照这个流程走,要是不是第三方应用的账号,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,这文档是真难找,之前翻遍了文档也没找到,而且一定要按照这个流程来,谢谢