|
|
@ -1,6 +1,15 @@ |
|
|
package com.bnyer.img.controller; |
|
|
package com.bnyer.img.controller; |
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.IdUtil; |
|
|
import com.alibaba.fastjson.JSON; |
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
|
|
import com.alipay.api.AlipayApiException; |
|
|
|
|
|
import com.alipay.api.AlipayClient; |
|
|
|
|
|
import com.alipay.api.CertAlipayRequest; |
|
|
|
|
|
import com.alipay.api.DefaultAlipayClient; |
|
|
|
|
|
import com.alipay.api.domain.AlipayFundTransUniTransferModel; |
|
|
|
|
|
import com.alipay.api.domain.Participant; |
|
|
|
|
|
import com.alipay.api.request.AlipayFundTransUniTransferRequest; |
|
|
|
|
|
import com.alipay.api.response.AlipayFundTransUniTransferResponse; |
|
|
import com.bnyer.common.core.web.controller.BaseController; |
|
|
import com.bnyer.common.core.web.controller.BaseController; |
|
|
import com.bnyer.common.core.web.domain.AjaxResult; |
|
|
import com.bnyer.common.core.web.domain.AjaxResult; |
|
|
import com.bnyer.img.domain.TiktokImg; |
|
|
import com.bnyer.img.domain.TiktokImg; |
|
|
@ -249,4 +258,104 @@ public class CreatorMiniController extends BaseController { |
|
|
log.info("小程序艺术家数据参数为:{}", JSON.toJSON(param)); |
|
|
log.info("小程序艺术家数据参数为:{}", JSON.toJSON(param)); |
|
|
return AjaxResult.success(creatorService.login(param)); |
|
|
return AjaxResult.success(creatorService.login(param)); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//@TokenCheck
|
|
|
|
|
|
@ApiOperation(value="支付宝异步回调") |
|
|
|
|
|
@GetMapping(value = "/callback") |
|
|
|
|
|
public AjaxResult alipayCallback(){ |
|
|
|
|
|
log.info("支付宝回调了!"); |
|
|
|
|
|
return AjaxResult.success(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//@TokenCheck
|
|
|
|
|
|
@ApiOperation(value="提现") |
|
|
|
|
|
@GetMapping(value = "/withdraw") |
|
|
|
|
|
public AjaxResult withdraw() throws AlipayApiException { |
|
|
|
|
|
|
|
|
|
|
|
String sandboxGatewayUrl = "https://openapi.alipaydev.com/gateway.do"; |
|
|
|
|
|
String gatewayUrl = "https://openapi.alipay.com/gateway.do"; |
|
|
|
|
|
|
|
|
|
|
|
String sandboxPrivateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1rI3A7cuj7vjBZpU+AYqTsQJxXGMvUlPdVZmuJJR/o3NY+jxIiSDOA/HjChJ2v8DlZXDmpzgJ+DQt1+GZkNr/yGt335jd9JBZuNEUO19iFjnlWnwPu6enp829IqBJv65km0ATA73jVnj2gW9E9bRkpwbrXdf9FSYvb14+6P1sKGavCVHLjafWIbBavaOXJlaEjR+U62nghHoiIP1RL49xsvBV8VtRXQfnCUPaOGU4PZbvYne3FzTbjIDwqbYWsfTfO4dIo1z2jkGNzPi8ZGrVe8PJsXBRl7A9qK5EI2wBwDpgWmrkUs2avfMkSYWfrrTJ4WnurCiNomxRszylGcHNAgMBAAECggEAdlABoPs7+27NoWXlG5R1YumL5bd9AHxlEWeFxdscumL/45pTWAm1y3TWOj18+Mi4HqyJcizEWfnCQXit+wxTEvC6zD5Zl3KF72hlAQAJhh9jZPIgiT50WML3QY0jReQG9o4ElF2DdGIENMTmacp5yHLeFrnux2rWi13DysSBBcXQ8rYS88jyT6L0xqWb8M7TD0MzZYyRBOFm4Nv91FBoj2vWtxNz5T9hJfX8AGO5HChR4NgvclM1Jbq+k9/6oeEEBU5m3AuIo2DEy1mQbVvA80hJMsi38Na+5CyfdXjm9wJ7v95/opcjgWAPrHrDdBngVeMuvmm2qj31b7ZHp3z+AQKBgQDZV2JJMA4dy6zyLbc2ImNLfU8iDyzuXAMKRgwrU0/wLnJRrvFJsIxzRnQxM9yF+Yo9bxqAv0nUisYIInhmGMVo8L8+nCyTHK1KYbOa2O+9grQiY/8p+lGlesrMKUnbUgbwS2Sj//hLmgor+f/pnp99xnmkkwV1CfAj69iaDL2LnQKBgQDV/RAJ8JmnjFHhGW7T0U7xtCR+jLO+EGpVaAlPznmTpr83IZbFnaDMEN9XhKCHk7iwDx6+bTSko/tfnyDEP5f2LjHuHH6hQyZBPIUSB9nvgB5Dtky43yzNtO4UkpH+MFCeFun5v+RtmyUELMSksjxwKjRBV3lG5pDW1NIxjk2v8QKBgHCEFJXfEu/J6ZbWo+qakt0Z2kW/pXsgl1JSQSqMzu2Anh47ex6zD4L+DlkKiDezoCV9xzKv1QD7dtnvPnVcjZZuTBOVtl3SksPXIKwhcruhVrAXJJoOxQXuM97N4TZxmLX90fQ1J827yVhK7Hl9bQQoJAFXO5QDuRZfmprlzZrhAoGBAIGewuJifZDCLK7fiwR/mwRKDHkjnZUZuG93j3xqI7bOoLEyhXO64bX62m7XBa5aSttKrWLIH8VDF3d6moyFwPT8Un5bgFEKrdeCY1DitJ6gyrRVbu/lL+yDFlwb1JdWiN7aHmyMUkAaZDe9LnhdBsMirXiPFgVekImxbIlcG67hAoGBAJIhIcvXkYbXZSP6SLFoT0NsG2hPYNwSr3+4u4acT3mBD519EA9kBvmAom56l7t6xoIVjgREuz0Kaa+V24+Za5o14LJA0iBxgKBIqD5ABMY6XkgPMY5p1/eVUWoXPmx4KsS/ys0MX60Kf0xgLD0gW0j+x1vsA8w1GiJXTAT0JZWP"; |
|
|
|
|
|
String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCGq3UKNbNuIazHbD9slLNJsStw2347rYwR1NmFLCi/d62yNLeTZvmrY4aW3GsDsQiK5vFdLRxaT8tIkGO11GilBRn00xkNKnwPkMA8GUdtr7GaudH+YBqk2snDeBhtdlYLq1V79USGZKdnpsPoUIXVIpyhnBlULzcJP7hf7NSauRVBnDf+MuEQOjhRAc6i8RN7nY2Oz5x6ZuIPhJ8qWjbZQoN6sJ00KU5oYZaN34/NGmPIfpR4QwbZbABm0Y0dCwkXzzNoV3cPYsFqKWNN8gxY7mI7YQqYsVb25fvALDjOl0XUGv1D7lMOC4mX3iz4q8b13ZNK+Tb3y4atwO6jK0EdAgMBAAECggEAUb4ZGM1n0F2YZqQKC3pnKT/lQme4w7if4OL19aPMSAv43sao90v2GFYdB81bF66JpOZxc0FCiH8OwUkDfQclTaU/ECBigF9dVoViahheBvIyN9y63lCvW4mCFqf7C9ZcfFDPXqKNqZXHF19eYtEdqzWLJX1+0l6mZXLME03J7u+tPX+OOnjf/K3wBp90RzoS02Ofp8fxiRyiDwFwlcxfRVbffLPVIW8JMqyOuI95U0l90F3N48+twJj8UeZlWHQeTGSDZ5jgfC6T5SXkDxOi6e7ZemZUG43rqsEHyb84fBfpr4ZFh9SkjXSnRih5w0VRws50dE2u1wAeCLG8K5KD8QKBgQDX/rpHjIJl0aD2LsI1kcUW82Yzm7qOJWApRCTe/+mZtrNGotzz/Mc2S0xV8s95ahgsH9AYqytu58UdM0CQhJ5+57fPDQcYWq9QvHB741ljAd1371qTLvRsMQg6E/nmObFvAON7ynNuh+TfkM9e7HQS6dpA0FkVqrREdD7hgUeUewKBgQCfnL3GKdMdH5FTTMBJgiLwHYBpgFQxDPzD5DEvz9lgCgosk76k4jQGi/3/raJWxkAED5K4O2J90IE/VnRXV4Uhi4h54D3ceO9dtXWBN1IxqEuO7pw9ldiRjFrlTo4aSgnq2wrjiVKn92Fm2YXIcAyhibUs7hamWt6LGAULbM5JRwKBgG11jXlM35gxz9xyfcEgCj1DQ/vLY5M9panD+tt33S4kxF17k3WiGGKPbjPwROxGs9FInfCibfRaSC4wFvwl+Rxe2Wt4MqxI6KeFl4tw/4+JFm79QW1tUjix8HVeQjpF6oFSdfX59t2AyJ/zhuOX+IrNL+nArCSqyYgXUPZ+yYOZAoGATbLAkxnDInc+iF1hcac/GMJTw4fr9CDNXxLTeuHkgKMChua5NIzFJLa7Q96jmzhQ62klVDfcX0DD2jBc3DPHpCfHnQSzOINKisSN2gQzJ+c0OPUg673pOhkoGl5eQJ/wKfrNVyx/JzL+oFGdlZAuJejiYGfacMrlcLKVqhUiansCgYEAtPCz8J3fYipscjdWKQIXsejr110KF0zsh8X7ZYKxhAgRZ5ck3wbMbffYIfa7wCm5nIJMY640P3Jh6Rb5W5/4/i04gHbE1Loi714aGCXoY6gm5oVoKIFP8h3g3MyQl7mZ2huAA/KnLsThlmfQ0l0n6Pd8xEcqJ+Ggi/GS2MQQrIw="; |
|
|
|
|
|
|
|
|
|
|
|
String sandboxAppId = "2021000121609470"; |
|
|
|
|
|
String appId = "2021003135690045"; |
|
|
|
|
|
|
|
|
|
|
|
String sandboxCertPath = "D:/sandbox/appCertPublicKey_2021000121609470.crt"; |
|
|
|
|
|
String certPath = "D:/onlineKey/appCertPublicKey_2021003135690045.crt"; |
|
|
|
|
|
|
|
|
|
|
|
String sandboxAlipayPublicCertPath = "D:/sandbox/alipayCertPublicKey_RSA2.crt"; |
|
|
|
|
|
String alipayPublicCertPath = "D:/onlineKey/alipayCertPublicKey_RSA2.crt"; |
|
|
|
|
|
|
|
|
|
|
|
String sandboxRootPath = "D:/sandbox/alipayRootCert.crt"; |
|
|
|
|
|
String rootPath = "D:/onlineKey/alipayRootCert.crt"; |
|
|
|
|
|
|
|
|
|
|
|
String sandboxIdentify = "yglaxq2770@sandbox.com"; |
|
|
|
|
|
String identify = "19983455096"; |
|
|
|
|
|
|
|
|
|
|
|
String sandboxName = "yglaxq2770"; |
|
|
|
|
|
String name = "权煜航"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//构造client
|
|
|
|
|
|
CertAlipayRequest certAlipayRequest = new CertAlipayRequest(); |
|
|
|
|
|
//设置网关地址
|
|
|
|
|
|
//certAlipayRequest.setServerUrl(sandboxGatewayUrl);
|
|
|
|
|
|
certAlipayRequest.setServerUrl(gatewayUrl); |
|
|
|
|
|
//设置应用Id
|
|
|
|
|
|
//certAlipayRequest.setAppId(sandboxAppId);
|
|
|
|
|
|
certAlipayRequest.setAppId(appId); |
|
|
|
|
|
//设置应用私钥
|
|
|
|
|
|
//certAlipayRequest.setPrivateKey(sandboxPrivateKey);
|
|
|
|
|
|
certAlipayRequest.setPrivateKey(privateKey); |
|
|
|
|
|
//设置请求格式,固定值json
|
|
|
|
|
|
certAlipayRequest.setFormat("json"); |
|
|
|
|
|
//设置字符集
|
|
|
|
|
|
certAlipayRequest.setCharset("UTF8"); |
|
|
|
|
|
//设置签名类型
|
|
|
|
|
|
certAlipayRequest.setSignType("RSA2"); |
|
|
|
|
|
//设置应用公钥证书路径
|
|
|
|
|
|
//certAlipayRequest.setCertPath(sandboxCertPath);
|
|
|
|
|
|
certAlipayRequest.setCertPath(certPath); |
|
|
|
|
|
//设置支付宝公钥证书路径
|
|
|
|
|
|
//certAlipayRequest.setAlipayPublicCertPath(sandboxAlipayPublicCertPath);
|
|
|
|
|
|
certAlipayRequest.setAlipayPublicCertPath(alipayPublicCertPath); |
|
|
|
|
|
//设置支付宝根证书路径
|
|
|
|
|
|
//certAlipayRequest.setRootCertPath(sandboxRootPath);
|
|
|
|
|
|
certAlipayRequest.setRootCertPath(rootPath); |
|
|
|
|
|
//构造client
|
|
|
|
|
|
AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest); |
|
|
|
|
|
AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest(); |
|
|
|
|
|
AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel(); |
|
|
|
|
|
model.setOutBizNo(IdUtil.getSnowflakeNextIdStr()); |
|
|
|
|
|
model.setTransAmount("0.9"); |
|
|
|
|
|
model.setProductCode("TRANS_ACCOUNT_NO_PWD"); |
|
|
|
|
|
/** 场景码,单笔无密转账到支付宝账户固定为:DIRECT_TRANSFER **/ |
|
|
|
|
|
model.setBizScene("DIRECT_TRANSFER"); |
|
|
|
|
|
/** 转账业务的标题,用于在支付宝用户的账单里显示 **/ |
|
|
|
|
|
model.setOrderTitle("bnyer提现打款"); |
|
|
|
|
|
Participant participant = new Participant(); |
|
|
|
|
|
/** 参与方的唯一标识,收款支付宝账号或者支付宝吧账号唯一会员ID **/ |
|
|
|
|
|
//participant.setIdentity(sandboxIdentify);
|
|
|
|
|
|
participant.setIdentity(identify); |
|
|
|
|
|
/** 参与方的标识类型:ALIPAY_USER_ID 支付宝的会员ID ALIPAY_LOGON_ID手机号登录 **/ |
|
|
|
|
|
participant.setIdentityType("ALIPAY_LOGON_ID"); |
|
|
|
|
|
/** 参与方真实姓名,如果非空,将校验收款支付宝账号姓名一致性。当identity_type=ALIPAY_LOGON_ID时,本字段必填 **/ |
|
|
|
|
|
//participant.setName(sandboxName);
|
|
|
|
|
|
participant.setName(name); |
|
|
|
|
|
model.setPayeeInfo(participant); |
|
|
|
|
|
/** 业务备注 **/ |
|
|
|
|
|
model.setRemark("提现打款"); |
|
|
|
|
|
request.setBizModel(model); |
|
|
|
|
|
log.info("支付宝提现入参为:{}",JSON.toJSONString(request)); |
|
|
|
|
|
AlipayFundTransUniTransferResponse response = null; |
|
|
|
|
|
try { |
|
|
|
|
|
response = alipayClient.certificateExecute(request); |
|
|
|
|
|
} catch (AlipayApiException e) { |
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
} |
|
|
|
|
|
/** 获取接口调用结果,如果调用失败,可根据返回错误信息到该文档寻找排查方案:https://opensupport.alipay.com/support/helpcenter/107 **/ |
|
|
|
|
|
log.info("支付宝提现响应结果为:{}",response.getBody()); |
|
|
|
|
|
return AjaxResult.success(); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|