前言
企業制定金額生成微信二維碼集成完後,客戶需要再集成支付寶,經過差文檔及看博客終於實現出來(支付寶生成指定金額二維碼,需要在“螞蟻金服開放平臺”註冊賬號,並且開通“電腦網站支付”詳情請參閱官方文檔;
電腦網站支付(普通公鑰方式)
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;
}
}