java调用支付接口实例_Java 调用支付宝接口
1.注冊開發者中心應用? ?登錄點擊沙箱服務
https://open.alipay.com/platform/developerIndex.htm
2.創建沙箱應用獲取APPID和支付寶網關地址(創建設置密鑰這里就不說明了),將公共密鑰和私密保存到本地。
3.創建項目結構,設置配置文件
1.下載支付寶SDK文件jar包,講jar包導入到項目內
2.編寫配置信息和Java文件
/********************************************************************************************************************************************************************************************/
* 應用啟動加載文件*/
@Component
public class AlipayConfig implements ApplicationListener {
//保存加載配置參數
private static Map aliPropertiesMap = new HashMap();
/*獲取配置參數值*/
public static String getKey(String key) {
return aliPropertiesMap.get(key);
}
/*監聽啟動完成,執行配置加載到aliPropertiesMap*/
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof ApplicationReadyEvent) {
this.init(aliPropertiesMap);//應用啟動加載
}
}
/*初始化加載aliPropertiesMap*/
public void init(Map map) {
// 獲得PathMatchingResourcePatternResolver對象
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
try {
//加載resource文件(也可以加載resources)
Resource resources = resolver.getResource("classpath:/alipay.properties");
PropertiesFactoryBean config = new PropertiesFactoryBean();
config.setLocation(resources);
config.afterPropertiesSet();
Properties prop = config.getObject();
//循環遍歷所有得鍵值對并且存入集合
for (String key : prop.stringPropertyNames()) {
map.put(key, (String) prop.get(key));
}
} catch (Exception e) {
new Exception("配置文件加載失敗");
}
}
}
/********************************************************************************************************************************************************************************************/
4.創建支付工具類
public class PayUtil {
/**
* @param outTradeNo 商戶訂單號,商戶網站訂單系統中唯一訂單號,必填 對應繳費記錄的orderNo
* @param totalAmount 付款金額,必填
* @param subject 主題
* @param body 商品描述,可空
* @return
*/
public static String alipay(AlipayBean alipayBean) {
//1、獲得初始化的AlipayClient
AlipayClient alipayClient = new DefaultAlipayClient(
AlipayConfig.getKey("gatewayUrl"),//支付寶網關
AlipayConfig.getKey("app_id"),//appid
AlipayConfig.getKey("merchant_private_key"),//商戶私鑰
"json",
AlipayConfig.getKey("charset"),//字符編碼格式
AlipayConfig.getKey("alipay_public_key"),//支付寶公鑰
AlipayConfig.getKey("sign_type")//簽名方式
);
//設置請求參數
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
alipayRequest.setReturnUrl(AlipayConfig.getKey("return_url"));
alipayRequest.setNotifyUrl(AlipayConfig.getKey("notify_url"));
try {
alipayRequest.setBizContent(JSON.toJSONString(alipayBean));
//請求
String result = alipayClient.pageExecute(alipayRequest).getBody();
System.out.println("*********************\n返回結果為:" + result);
return result;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
/**
* 支付寶退款接口
*
* @param outTradeNo
* @param tradeNo
* @param refundAmount
* @param refundReason
* @param out_request_no 標識一次退款請求,同一筆交易多次退款需要保證唯一,如需部分退款,則此參數必傳
* @return
*/
public static String aliRefund(AlipayBean alipayBean) {
//1、獲得初始化的AlipayClient
AlipayClient alipayClient = new DefaultAlipayClient(
AlipayConfig.getKey("gatewayUrl"),//支付寶網關
AlipayConfig.getKey("app_id"),//appid
AlipayConfig.getKey("merchant_private_key"),//商戶私鑰
"json",
AlipayConfig.getKey("charset"),//字符編碼格式
AlipayConfig.getKey("alipay_public_key"),//支付寶公鑰
AlipayConfig.getKey("sign_type")//簽名方式
);
//設置請求參數
AlipayTradeRefundRequest alipayRequest = new AlipayTradeRefundRequest();
alipayRequest.setReturnUrl(AlipayConfig.getKey("return_url"));
alipayRequest.setNotifyUrl(AlipayConfig.getKey("notify_url"));
try {
alipayRequest.setBizContent(JSON.toJSONString(alipayBean));
//請求
String result= alipayClient.execute(alipayRequest).getBody();
System.out.println("*********************\n返回結果為:" + result);
return result;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
/**
* 支付寶的驗簽方法
*
* @param req
* @return
*/
public static boolean checkSign(HttpServletRequest req) {
Map requestMap = req.getParameterMap();
Map paramsMap = new HashMap<>();
requestMap.forEach((key, values) -> {
String strs = "";
for (String value : values) {
strs = strs + value;
}
System.out.println(("key值為" + key + "value為:" + strs));
paramsMap.put(key, strs);
});
//調用SDK驗證簽名
try {
return AlipaySignature.rsaCheckV1(paramsMap, AlipayConfig.getKey("alipay_public_key"), AlipayConfig.getKey("charset"), AlipayConfig.getKey("sign_type"));
} catch (AlipayApiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("*********************驗簽失敗********************");
return false;
}
}
5.創建Controller,dao和service
6.創建測試html,運行項目訪問測試。
over......
總結
以上是生活随笔為你收集整理的java调用支付接口实例_Java 调用支付宝接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java猜单词游戏_序列应用——猜单词游
- 下一篇: mysql版本号超买_MySQL处理高并