支付宝支付
来源:互联网 发布:不安理智网络歌手 编辑:程序博客网 时间:2024/06/10 03:38
支付宝支付
- 1.将jar导入项目中(有需要jar包的从下面的网盘下载http://pan.baidu.com/s/1mhUQwIG),将demo中的alipayto.jsp这个jsp放到自己的工程目录下
- 2.新建一个工具类,这个类用来填写合作者ID,key,以及收款支付宝账号,以及支付成功后跳转的地址,支付成功后所有的逻辑处理都要这个地址中
代码块
package com.hysm.common.utils;import java.util.Map;import java.util.SortedMap;import java.util.TreeMap;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.alipay.common.PartnerCommon;import com.common.Secret;import com.demo.Demo;import com.hysm.model.WeChatVO;import com.hysm.web.action.BaseAction;import com.utils.RequestHandler;public class PayTool { private static String appid,appsecret,partner,partnerkey,openId; /** * 支付宝支付配置 */ public static void pay_detail(String subject ,String total_fee){ HttpServletRequest request = ServletActionContext.getRequest(); //合作号 String partner="2088021066286629"; //key String key="1ei12j07r2ep50jje1nn2sth3thm4k37"; //收款支付宝账号 String seller_email="583691572@qq.com"; //支付成功返回的页面 String return_url="http://127.0.0.1:8080/ec/pay/pay!handle_alipay.do"; //商品的信息 request.setAttribute("subject", subject); //交易金额 request.setAttribute("total_fee", total_fee); PartnerCommon.getAlipayConfig(partner, key, seller_email,return_url); }}
-用户在页面点击支付后到action处理好自己的逻辑后,将商品的名称以及支付的金额带到页面,跳转地址:工程名+/jsp/pages/pay/alipayto.jsp()
代码块
public String test(){ //1.先处理自己的逻辑 //......... //2.调用支付宝支付 PayTool.pay_detail("商品信息","金额"); return "zhifubao"; //对应的zhifubao页面 }
-到这为止,支付宝支付的一部分就完成了,接下来就等着支付宝给你返回结果,处理逻辑
-在PayToll中配置了返回的地址,在返回的这个方法中获取支付宝给你返回的参数,以及处理自己的逻辑
代码块
//支付成功处理 public String pay_handle(){ //获取支付宝GET过来反馈信息 Map<String,String> params = new HashMap<String,String>(); Map requestParams = request.getParameterMap(); System.out.println(requestParams); for (Iterator 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] + ","; } //乱码解决,这段代码在出现乱码时使用。如果mysign和sign不相等也可以使用这段代码转化 //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "UTF-8"); params.put(name, valueStr); } //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表(以下仅供参考)// String trade_no = request.getParameter("trade_no"); //支付宝交易号 System.out.println("trade_no:"+trade_no); String out_trade_no = request.getParameter("out_trade_no"); //获取订单号 String total_fee = request.getParameter("total_fee"); //获取总金额 String subject=request.getParameter("subject"); //商品名称 String buyer_id=request.getParameter("buyer_id"); //买家支付宝账户号 //String subject = new String(request.getParameter("subject").getBytes("ISO-8859-1"),"utf-8");//商品名称、订单名称 String body = ""; if(request.getParameter("body") != null){ body=request.getParameter("body"); //商品描述 //body = new String(request.getParameter("body").getBytes("ISO-8859-1"), "utf-8");//商品描述、订单备注、描述 } String seller_email = request.getParameter("seller_email"); //卖家支付账号 String seller_id = request.getParameter("seller_id"); //卖家支付宝账户号 String buyer_email = request.getParameter("buyer_email"); //买家支付宝账号 String buyer_account_name=request.getParameter("buyer_account_name");//卖家祝福包别人 String trade_status = request.getParameter("trade_status"); //交易状态 String createTime= (String)request.getSession().getAttribute("createTime"); //发起申请时间 System.out.println("createTime:"+createTime); String return_url=request.getParameter("return_url"); //返回地址 String error_code=request.getParameter("error_code"); //错误码 String sign=request.getParameter("sign"); //签名 String sign_type=request.getParameter("sign_type"); //签名类型 String exterface=request.getParameter("exterface"); //接口名称 String is_success=request.getParameter("is_success"); //成功标志 String notify_id=request.getParameter("notify_id"); //通知校验ID String notify_time=request.getParameter("notify_time"); //通知时间 String notify_type=request.getParameter("notify_type"); //通知类型 String payment_type=request.getParameter("payment_type");//支付类型 AlipayVO payVO1=new AlipayVO(); payVO1.setBody(body); payVO1.setBuyer_account_name(buyer_account_name); payVO1.setBuyer_email(buyer_email); payVO1.setBuyer_id(buyer_id); payVO1.setError_code(error_code); payVO1.setExterface(exterface); payVO1.setIs_success(is_success); payVO1.setNotify_id(notify_id); payVO1.setNotify_time(notify_time); payVO1.setNotify_type(notify_type); payVO1.setOut_trade_no(out_trade_no); payVO1.setPayment_type(payment_type); payVO1.setReturn_url(return_url); payVO1.setSeller_email(seller_email); payVO1.setSeller_id(seller_id); payVO1.setSign(sign); payVO1.setSign_type(sign_type); payVO1.setSubject(subject); payVO1.setTotal_fee(total_fee); payVO1.setTrade_no(trade_no); payVO1.setTrade_status(trade_status); //计算得出通知验证结果 boolean verify_result = AlipayNotify.verify(params); if(verify_result){//验证成功 payService.insert_orderrecord(payVO1); //订单新增 payService.insert_return_url(payVO1); //result_url payService.insert_notify_url(payVO1); //notify_url OrderPayVO p=(OrderPayVO) request.getSession().getAttribute("cl"+user.getId()); //支付成功,保存支付记录 PayVO p1=new PayVO(); p1.setPay_time(notify_time); p1.setResult("success"); p1.setPaymoney(p.getTotal_fee()); p1.setName(buyer_email); p1.setUserid(0); p1.setTrade_no(trade_no); p1.setOrderid(p.getOrder_id()); }else{ payService.insert_error(payVO1); } }
0 0
- app支付--支付宝支付
- 支付宝支付--手机支付
- 支付-支付宝APP支付
- 支付--支付宝APP支付
- 支付宝 支付认识
- iOS 支付宝支付
- ios 支付宝支付
- android支付宝支付
- Android 支付宝【支付】
- 支付宝支付流程
- 支付宝快捷支付
- 支付宝支付
- 支付宝支付
- 支付宝-移动支付
- iOS 支付宝支付
- android 支付宝支付
- IOS支付宝支付
- 支付宝支付写法
- iOSCoreAnimation动画系列教程(一):CABasicAnimation【包会】
- Solr --- Facet查询
- window+ubuntu下服务器状态监控
- 类加载机制和反射
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 错误处理办法
- 支付宝支付
- JAVA之序列化(Serialization)的理解
- 使用nslookup定位权威域名服务器得到权威应答
- 整型提升
- ObjC的Block中使用weakSelf/strongSelf @weakify/@strongify
- 如何使 maven+jetty运行时不锁定文件
- VS2010生成的文件在别的机器上运行提示“丢失MSVCR100D.dll”
- PopupWindow
- iOS安装ipa文件