package com.ruoyi.order.util.alipay.util;
|
|
|
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.request.AlipayTradeAppPayRequest;
|
import com.alipay.api.response.AlipayTradeAppPayResponse;
|
import com.ruoyi.order.util.alipay.config.AlipayConfig;
|
|
|
import java.io.UnsupportedEncodingException;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
|
/**
|
* 支付宝签名工具类<
|
*/
|
@SuppressWarnings("unused")
|
public class PayDemoActivity {
|
|
/** 支付宝参数配置项 */
|
public static String serverUrl = "https://openapi.alipay.com/gateway.do";
|
public static String format = "json";
|
public static String charset = "UTF-8";
|
public static String signType = "RSA2";
|
|
public static String APP_ID = AlipayConfig.app_id;
|
public static String APP_PRIVATE_KEY = AlipayConfig.private_key;
|
public static String ALIPAY_PUBLIC_KEY = AlipayConfig.ali_public_key;
|
public static String NOTIFY_URL = AlipayConfig.notify_url;
|
|
//实例化客户端
|
private static AlipayClient alipayClient = new DefaultAlipayClient(serverUrl, APP_ID, APP_PRIVATE_KEY, format, charset, ALIPAY_PUBLIC_KEY, signType);
|
|
|
/**
|
* @throws AlipayApiException
|
* @throws UnsupportedEncodingException
|
* @throws UnsupportedEncodingException
|
* @throws AlipayApiException
|
*
|
* 方法功能说明:支付宝2.0 app支付
|
* 创建:2017年2月10日 by tzj
|
* 修改:日期 by 修改者
|
* 修改内容:
|
* @参数: @param subject
|
* @参数: @param body
|
* @参数: @param price
|
* @参数: @param out_trade_no
|
* @参数: @param notify_url
|
* @参数: @return
|
* @return Map<String,Object>
|
* @throws
|
*/
|
public static Map<String, Object> appPay(String subject, String body, Double price, String out_trade_no) throws UnsupportedEncodingException, AlipayApiException{
|
|
String outtradeno = out_trade_no;
|
String total_amount = price+"";
|
|
/*********** 测试数据(仅供测试) ************/
|
// subject = "subject"+DateUtil.getTodayDate("yyMMssHHmmss");
|
// total_amount = "0.01";
|
|
/*********** 测试数据(仅供测试)end ************/
|
|
Map<String, Object> map = new HashMap<>();
|
try {
|
|
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
|
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
|
//SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
|
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
|
model.setBody(body);
|
model.setSubject(subject);
|
model.setOutTradeNo(outtradeno);
|
model.setTimeoutExpress("30m");
|
model.setTotalAmount(total_amount);
|
model.setProductCode("QUICK_MSECURITY_PAY");
|
request.setBizModel(model);
|
request.setNotifyUrl(NOTIFY_URL);
|
// 这里和普通的接口调用不同,使用的是sdkExecute
|
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
|
String string = response.getBody();
|
|
int one = string.lastIndexOf("&");
|
String s=string.substring(0,(one));
|
|
map.put("orderInfo", s);
|
System.out.println(java.net.URLDecoder.decode(s, "UTF-8"));
|
System.out.println(java.net.URLDecoder.decode(response.getBody(), "UTF-8"));
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return map;
|
}
|
|
|
}
|