JAVA生成客户端需要的支付宝参数

public class AlipayUtils {
private static final String APPID = "";// APPID
private static final String PRIVATE_KEY = "";// 私钥
private static final String PUBLIC_KEY = ""; //支付宝公钥
private static final String CHARSET = "utf-8";// 编码
private static final String SERVER_URI="https://openapi.alipay.com/gateway.do";
private static final String NOTIFY_URL="";//回调
private static final String SUBJECT = "充值";
private static final String BODY = "余额充值";


public static String getPayParams(String price, String out_trade_no) {
AlipayClient alipayClient = new DefaultAlipayClient(
SERVER_URI, APPID, PRIVATE_KEY, "json", CHARSET,
PUBLIC_KEY, "RSA2");
// 实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
request.setNotifyUrl(NOTIFY_URL);
// SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody(BODY);
model.setSubject(SUBJECT);
model.setOutTradeNo(out_trade_no);
model.setTimeoutExpress("5m");
model.setTotalAmount(price);
model.setProductCode("QUICK_MSECURITY_PAY");
request.setBizModel(model);
try {
// 这里和普通的接口调用不同,使用的是sdkExecute
AlipayTradeAppPayResponse response = alipayClient
.sdkExecute(request);
// response.getBody()就是orderString 可以直接给客户端请求,无需再做处理,但别忘了URLEncode,否则会出现系统繁忙。
return URLEncoder.encode(response.getBody());
} catch (AlipayApiException e) {
e.printStackTrace();
}
return "";
}

}




















notify_url.java

response.setHeader("Content-type", "text/html;charset="
				+ AppConfig.DefaultEncoding);
		response.setCharacterEncoding(AppConfig.DefaultEncoding);
		request.setCharacterEncoding(AppConfig.DefaultEncoding);
		String result=AlipayUtils.payNofityCallback(request.getParameterMap());
		response.getOutputStream().write(result.getBytes(AppConfig.DefaultEncoding));


AlipayUtils

public static String payNofityCallback(Map requestParams){
        System.out.println("支付宝支付结果通知"+requestParams.toString());
        //获取支付宝POST过来反馈信息
        Map<String,String> params = new HashMap<String,String>();        
        for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
            String name = (String) iter.next();
            String[] values = (String[]) requestParams.get(name);
            params.put(name,values[0]);//这里千万不要加编码解码
         }
        try {
        	if(!APPID.equals(params.get("auth_app_id"))&&!APPID.equals(params.get("app_id"))){
        		return "fail";
        	}
        	//验证签名
            if( AlipaySignature.rsaCheckV1(params, PUBLIC_KEY, AppConfig.DefaultEncoding, "RSA2")){       	
                if("TRADE_SUCCESS".equals(params.get("trade_status"))){
                    //付款金额
                    double amount =Double.parseDouble( "0"+params.get("total_amount"));
                    //商户订单号
                    String out_trade_no = params.get("out_trade_no");
                    //支付宝交易号
                    String trade_no = params.get("trade_no");
               	    //处理
                    return "success";
} else if("TRADE_CLOSE".equals(params.get("trade_status"))){ //处理 return "success"; } } else{ } } catch (Exception e) { e.printStackTrace(); } return "fail"; }







                	//处理
                	return "success";
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值