首先确保签约单笔转账到支付宝账号
转账到支付宝账号是APP这边一个提现的功能。支付宝提供了可以转账到支付宝账号的功能,可选择收款方账户类型。可取值:
1、ALIPAY_USERID:支付宝账号对应的支付宝唯一用户号。以2088开头的16位纯数字组成。2、ALIPAY_LOGONID:支付宝登录号,支持邮箱和手机号格式。
a、转到支付宝唯一用户号,获取1ALIPAY_USERID的方式需要,支付宝授权才能拿到,下面会有代码实现
b、转账到支付宝登录号,APP可以选择让用户自己填邮箱和手机号
我是用的a方式,b方式具体参照payee_type参数介绍,单笔转账到支付宝账号
代码如下 :
支付宝授权:
/**
* 组装支付宝授权登录信息
*/
@GetMapping("aliInfoStr")
public ResultModel getAliInfoStr(HttpServletRequest request, HttpServletResponse response){
ResultModel resultModel= new ResultModel();
String targetId = String.valueOf(UUID.next());
String signstr="";
String signs = "apiname=" + AliPayConfig.AUTH_API_NAME +
"&method=" + AliPayConfig.AUTH_API_METHOD +
"&app_id=" + AliPayConfig.APP_ID_USER +
"&app_name=" + AliPayConfig.AUTH_APP_NAME +
"&biz_type=" + AliPayConfig.AUTH_BIZ_TYPE +
"&pid=" + AliPayConfig.AUTH_PID +
"&product_id=" + AliPayConfig.AUTH_PRODUCT_ID +
"&scope=" + AliPayConfig.AUTH_SCOPE +
"&target_id=" + targetId +
"&auth_type=" + AliPayConfig.AUTH_TYPE +
"&sign_type=" + AliPayConfig.SIGN_TYPE ;
try {
signstr = AlipaySignature.rsaSign(signs,AliPayConfig.PRIVATE_KEY,AliPayConfig.CHARSET,AliPayConfig.SIGN_TYPE);
signstr=signs+"&sign="+signstr;
resultModel.setStatus(0);
resultModel.setMessage("支付宝授权串组装成功");
resultModel.setResultObject(signstr);
} catch (AlipayApiException e) {
e.printStackTrace();
}
return resultModel;
}
组装返给APP,支付宝调能成功调起授权,把auth_code给服务端去获取用户信息
/**
* 获取acesstoken 获取用户信息
*/
@PostMapping("getAccessToken")
public ResultModel getAccessToken(@RequestBody OrderDto dto, HttpServletRequest request,
HttpServletResponse response) throws AlipayApiException {
ResultModel resultModel = new ResultModel();
AlipayClient alipayClient = new DefaultAlipayClient(AliPayConfig.URL, AliPayConfig.APP_ID_USER, AliPayConfig.PRIVATE_KEY, AliPayConfig.FORMAT, AliPayConfig.CHARSET,AliPayConfig.ALI_PUBLIC_KEY, AliPayConfig.SIGN_TYPE);
AlipaySystemOauthTokenRequest aliRequest = new AlipaySystemOauthTokenRequest();
aliRequest.setGrantType("authorization_code");
aliRequest.setCode(dto.getAliAuthCode());
AlipaySystemOauthTokenResponse aliResponse = alipayClient.execute(aliRequest);
String authTokenData = aliResponse.getBody();
JSONObject authTokenJsonObject = JSONObject.parseObject(authTokenData).getJSONObject("alipay_system_oauth_token_response");
if(aliResponse.isSuccess()){
System.out.println("调用成功");
&nb