前言
企业制定金额生成微信二维码集成完后,客户需要再集成支付宝,经过差文档及看博客终于实现出来(支付宝生成指定金额二维码,需要在“蚂蚁金服开放平台”注册账号,并且开通“电脑网站支付”详情请参阅官方文档;
电脑网站支付(普通公钥方式)
package com.litte.util;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
/**
* Created by Administrator on 2018/12/22.
*/
public class TestJxx {
// 支付宝网关,aliPayUrl
private static final String ALIPAY_URL = "https://openapi.alipay.com/gateway.do";
// 商户分配的appid
private static final String ALIPAY_APPID = "APPID";
// 应用私钥
private static final String APP_PRIVATE_KEY = "APP_PRIVATE_KEY ";
// 应用公钥
private static final String APP_PUBLIC_KEY = "APP_PUBLIC_KEY ";
// 支付宝公钥
private static final String ALIPAY_PUBLIC_KEY = "ALIPAY_PUBLIC_KEY ";
// 请求使用的编码格式,如utf-8,gbk,gb2312等
private static final String CHARSET = "UTF-8";
public static void main(String[] args) throws AlipayApiException {
String form = "";
try {
AlipayClient alipayClient = new DefaultAlipayClient(ALIPAY_URL, ALIPAY_APPID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
//创建API对应的request
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
alipayRequest.setNotifyUrl("https://www.xxx.cn/wxPay/aliPayReceiptBack");
alipayRequest.setBizContent("{" +
" \"out_trade_no\":" + getOrderIdByTime() + "," +
" \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
" \"total_amount\":\"0.01\"," +
" \"subject\":\"支付宝支付\"," +
" \"qr_pay_mode\":\"4\"," +
" \"qrcode_width\":120," +
" \"extend_params\":{" +
" \"sys_service_provider_id\":\"sys_service_provider_id\"" +
" }" +
" }");//填充业务参数
// 调用SDK生成表单
AlipayTradePagePayResponse alipayTradePagePayResponse = alipayClient.pageExecute(alipayRequest);
if(alipayTradePagePayResponse.isSuccess()){
// 返回的form表单
form = alipayTradePagePayResponse.getBody();
}else{
form = "";
}
System.out.println("------"+form);
} catch (AlipayApiException e) {
e.printStackTrace();
}
}
public static String getOrderIdByTime() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String newDate = sdf.format(new Date());
String result = "";
Random random = new Random();
for (int i = 0; i < 3; i++) {
result += random.nextInt(10);
}
return newDate + result;
}
}
电脑网站支付(公钥证书方式)
package com.tbd.bigdipper.util;
import com.alipay.api.AlipayApiException;
import com.alipay.api.CertAlipayRequest;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;
/**
* Created by Administrator on 2019/8/20.
*/
public class TextJkx {
// 支付宝网关,aliPayUrl
private static final String ALIPAY_URL = "https://openapi.alipay.com/gateway.do";
// 商户分配的appid
private static final String ALIPAY_APPID = "ALIPAY_APPID";
// 应用私钥
private static final String PRIVATE_KEY = "PRIVATE_KEY";
// 应用公钥证书路径
private static final String APP_CERT_PATH = "APP_CERT_PATH";
// 支付宝公钥证书文件路径
private static final String ALIPAY_CERT_PATH = "ALIPAY_CERT_PATH";
// 支付宝CA根证书文件路径
private static final String ALIPAY_ROOT_CERT_PATH = "ALIPAY_ROOT_CERT_PATH";
// 请求使用的编码格式,如utf-8,gbk,gb2312等
private static final String CHARSET = "UTF-8";
// 签名类型
private static final String SIGN_TYPE = "RSA2";
// 支付宝扫码支付回执请求接口
private static final String ALIPAYBACKURL = "ALIPAYBACKURL";
public static void main(String[] args) throws AlipayApiException {
// 报文请求时自动进行签名
DefaultAlipayClient alipayClient = aliPaySignature();
//创建API对应的request
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
// 交易成功后,支付宝通过 post 请求 notifyUrl(商户入参传入),返回异步通知参数。
alipayRequest.setNotifyUrl(ALIPAYBACKURL);
alipayRequest.setBizContent("{" +
" \"out_trade_no\":" + "20190825155036" + "," +
" \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
" \"total_amount\":\"1\"," +
" \"subject\":\"支付宝支付\"" +
" }");//填充业务参数
// 调用SDK生成表单
AlipayTradePagePayResponse response = alipayClient.pageExecute(alipayRequest);
String form = response.getBody();
System.out.println("===form===" + form);
}
/**
* @Description: 电脑网站支付报文请求时自动进行签名
* @Author: Mr.Jkx
* @date: 2019/9/3 9:29
*/
public static DefaultAlipayClient aliPaySignature() throws AlipayApiException {
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
certAlipayRequest.setServerUrl(ALIPAY_URL);
certAlipayRequest.setAppId(ALIPAY_APPID);
certAlipayRequest.setPrivateKey(PRIVATE_KEY);
certAlipayRequest.setFormat("json");
certAlipayRequest.setCharset(CHARSET);
certAlipayRequest.setSignType(SIGN_TYPE);
certAlipayRequest.setCertPath(APP_CERT_PATH);
certAlipayRequest.setAlipayPublicCertPath(ALIPAY_CERT_PATH);
certAlipayRequest.setRootCertPath(ALIPAY_ROOT_CERT_PATH);
DefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
return alipayClient;
}
}