public void buyTuwen(){
Record result = new Record().set("code", "0").set("msg", "支付失败!");
//Map<String, Object> map = new HashMap<String, Object>();
String orderNumber=getPara("order_id");
String type=getPara("type"); //type---0:直接付款 1:从订单点击付款
if ("1".equals(type)) {//直接付款
//String merchants=getPara("merchants");//商家id
//orderNumber+=merchants;//订单号
}
String money=getPara("money");//用户金额
String aliurl = aliPay.get("buyTuwenSucceed");//回调地址
try {
//把商品信息封装进去,返回一个符合支付宝规范的订单号,订单编号,标题,body,
String info = PayAPI.getPayInfo(orderNumber,"图文咨询","",money,"1",aliurl);
//map.put("info", info);
result.set("code", "1");
result.set("msg","请求成功!");
result.set("data", info);
} catch (Exception e) {
e.printStackTrace();
result.set("code", "0");
result.set("data", "");
result.set("msg","请求失败!");
}
renderJson(result);
}
/**
* 支付宝图文咨询支付订单成功(回调)
* @see 订单状态 status 改为3
*/
public void buyTuwenSucceed() {
Map<String, String> params = new HashMap<String, String>();
System.out.println("999999999999999999999999999999");
//获取支付宝POST过来反馈信息
Map<String, String[]> requestParams = getParaMap();
for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
}
params.put(name, valueStr);
}
try {
String out_trade_no = new String(getPara("out_trade_no").getBytes("ISO-8859-1"), "UTF-8");// 订单号
String trade_status = new String(getPara("trade_status").getBytes("ISO-8859-1"), "UTF-8");// 交易状态
Double total_amount = Double.valueOf(getPara("total_amount"));// 交易状态
Consult consult = Consult.dao.findState(out_trade_no);
if ("TRADE_FINISHED".equals(trade_status) || "TRADE_SUCCESS".equals(trade_status)) {
//说明支付成功
consult.setPayState(1);
consult.setStatus(1);
//修改支付状态 支付成功
consult.update();
}
renderText("success");// 请不要修改或删除
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
try {
DbKit.getConfig().getConnection().rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
renderText("fail");// 发生错误转到ERROR 页面
}
}
public static String getPayInfo(String orderid, String subject, String body, String price,String type,String url) throws UnsupportedEncodingException, Exception {
//String orderInfo = getOrderInfo(orderid, subject, body, price, url);
BigDecimal bd = new BigDecimal(price);
bd = bd.setScale(2,BigDecimal.ROUND_HALF_UP);
Map<String,String> map = new HashMap<String,String>();
//map.put("seller_id",AlipayConfig.seller);
map.put("total_amount", bd.toString());
map.put("subject", subject);
map.put("out_trade_no", orderid);
map.put("product_code", "QUICK_MSECURITY_PAY");
map.put("goods_type",type);
JSONObject obj = JSONObject.fromObject(map);
System.out.println(obj);
String notify_url = url;
String timestamp = DateUtils.getDateTime();
String orderInfo = "app_id="+AlipayConfig.partner+"&biz_content="+obj+"&charset=utf-8&method=alipay.trade.app.pay¬ify_url="+notify_url+"&sign_type=RSA2×tamp="+timestamp+"&version=1.0";
System.out.println("orderInfo:----------"+orderInfo);
/**
* 特别注意,这里的签名逻辑需要放在服务端,切勿将私钥泄露在代码中!
*/
String sign =null;
String rsaSign2 = AlipaySignature.rsa256Sign(orderInfo, AlipayConfig.private_key, "utf-8");
System.out.println("sign----------"+rsaSign2);
try {
/**
* 仅需对sign 做URL编码
*/
sign = URLEncoder.encode(rsaSign2, "UTF-8");
System.out.println("sign:编码----------"+sign);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
/**
* 完整的符合支付宝参数规范的订单信息
*/
final String payInfo = orderInfo + "&sign=" + sign ;
System.out.println(payInfo);
return payInfo;
}