支付宝支付

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&notify_url="+notify_url+"&sign_type=RSA2&timestamp="+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;
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值