1.普通公钥模式
package co.yixiang.aliPay;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradeAppPayModel;
import com.alipay.api.domain.ExtendParams;
import com.alipay.api.request.AlipayTradeAppPayRequest;
import com.alipay.api.response.AlipayTradeAppPayResponse;
public class SandBoxPTPublicKeyTest {
public static void main(String[] args) throws AlipayApiException {
//商户私钥
String privateKey="商户私钥比较长";
//支付宝公钥
String publicKey="支付宝公钥比较短";
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipaydev.com/gateway.do","你的沙箱appid",privateKey, "JSON", "utf-8", publicKey,"RSA2");
// 创建API对应的request(手机APP版)
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
AlipayTradeAppPayModel bizModel = new AlipayTradeAppPayModel();
bizModel.setSubject("测试商品名称"); //商品名称
bizModel.setBody("测试商品描述"); //商品描述
bizModel.setOutTradeNo("123456789999"); //商户订单号
bizModel.setTimeoutExpress("1740m"); //超时时间
bizModel.setTotalAmount("0.2"); //金额
bizModel.setProductCode("QUICK_MSECURITY_PAY"); //销售产品码
ExtendParams extendParams = new ExtendParams();
extendParams.setSysServiceProviderId("2088931758115950");
bizModel.setExtendParams(extendParams);
request.setBizModel(bizModel);
request.setNotifyUrl("http://127.0.0.1:8008/api/alipay/notify"); //异步通知地址
// 这里和普通的接口调用不同,使用的是sdkExecute
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
String body = response.getBody();
System.out.println(body);
}
}
2.公钥证书模式
package co.yixiang.aliPay;
import co.yixiang.modules.yinsheng.constants.YinShengConstant;
import co.yixiang.modules.yinsheng.service.YSDfService;
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.AlipayTradeAppPayModel;
import com.alipay.api.domain.ExtendParams;
import com.alipay.api.request.AlipayTradeAppPayRequest;
import com.alipay.api.response.AlipayTradeAppPayResponse;
public class SandBoxZSPublicKeyTest {
public static void main(String[] args) throws AlipayApiException {
String appCert = SandBoxZSPublicKeyTest.class.getResource("/aliPayCert/appCertPublicKey_2021000119666184.crt").getPath().toString();
String alipayCert = SandBoxZSPublicKeyTest.class.getResource("/aliPayCert/alipayCertPublicKey_RSA2.crt").getPath().toString();
String alipayRootCert = SandBoxZSPublicKeyTest.class.getResource("/aliPayCert/alipayRootCert.crt").getPath().toString();
String privateKey="应用私钥,比较长";
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
certAlipayRequest.setServerUrl("https://openapi.alipaydev.com/gateway.do");
certAlipayRequest.setAppId("appid");
certAlipayRequest.setPrivateKey(privateKey);
certAlipayRequest.setFormat("JSON");
certAlipayRequest.setCharset("utf-8");
certAlipayRequest.setSignType("RSA2");
certAlipayRequest.setCertPath(appCert);
certAlipayRequest.setAlipayPublicCertPath(alipayCert);
certAlipayRequest.setRootCertPath(alipayRootCert);
DefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
// 创建API对应的request(手机APP版)
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
AlipayTradeAppPayModel bizModel = new AlipayTradeAppPayModel();
bizModel.setSubject("测试商品名称"); //商品名称
bizModel.setBody("测试商品描述"); //商品描述
bizModel.setOutTradeNo("123456789999"); //商户订单号
bizModel.setTimeoutExpress("1740m"); //超时时间
bizModel.setTotalAmount("0.5"); //金额
bizModel.setProductCode("QUICK_MSECURITY_PAY"); //销售产品码
ExtendParams extendParams = new ExtendParams();
extendParams.setSysServiceProviderId("2088931758115950");
bizModel.setExtendParams(extendParams);
request.setBizModel(bizModel);
request.setNotifyUrl("http://127.0.0.1:8008/api/alipay/notify"); //异步通知地址
// 这里和普通的接口调用不同,使用的是sdkExecute
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
String body = response.getBody();
System.out.println(body);
}
}
测试 返回的信息支付能拉起支付宝,可参考这一篇文章
例子中的两种获取方式,都可以拉起沙箱支付宝app进行支付