支付宝支付之web篇

在接入支付宝支付前,你需要先和支付宝签约,web端要签约即时支付,app端支付要签约app支付。当然要是需要别的也可以根据需要签约


支付宝支付相对微信支付接入要简单一些,签约成功后,你就可以在你的开发者账户中看到一个已上线的签约项目,里面会标明你可以使用那些功能,你也可以自己添加新的功能。


在接入web支付前,我们需要准备:

1.partner (pid在你的签约页面可以看到,你也可以通过qy.alipay.com登录,然后在我的商家服务》签约管理中找到)

2.seller_email (商家邮箱,一般就是你的登录邮箱)

3.key (和pid在一起,需要验证后才能看到)

4.在开发者平台中的账号信息,你可以找到合作伙伴密钥。(如果你有app支付需要在这里上传rsa公钥,来得到支付宝公钥。web支付是md5验签所以可以不用

5.支付宝的即时支付demo(https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.LW4YWX&treeId=193&articleId=103419&docType=1在这里你可以找到你要的文档和demo,你需要下即时支付的demo


在拿到以上这些信息后你就可以开始web编码:

以下是我们本次所需要用到的文件:



其中标红的是我们自己的或者需要修改的文件,其他的文件我们只需把demo中的文件拿出来就可以直接用。


下面让我们看具体实现,首先我们需要配置一下AlipayConfig,支付宝的提示很清晰,基本按提示填入我们上边说的准备好的东西即可。


在个是支付宝支付的入口方法,不在以上文件中:

private void aliPay(String orderNum,String orderMsg,String allPrice){
		OrderBaseMsg obm = new OrderBaseMsg();
		obm.out_trade_no = orderNum;
		obm.subject = orderMsg;
		obm.total_fee = allPrice;
		obm.body = "";
		obm.show_url = "";
		try {
			obm.anti_phishing_key = AlipaySubmit.query_timestamp();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		obm.exter_invoke_ip = GetIP.getIpAddr(getRequest());
		Map<String, String> map = obm.orderMsg();
		String pay = AlipaySubmit.buildRequest(map, "get", "支付");
		setAttr("pay", pay);
		
	}

其中OrderBaseMsg是一个bean文件,主要用来接收和发送一些参数:


public class OrderBaseMsg {
	//订单信息
	
		//支付类型
				public String payment_type = "1";
				//必填,不能修改
				//服务器异步通知页面路径
				public String notify_url = "";
				//需http://格式的完整路径,不能加?id=123这类自定义参数

				//页面跳转同步通知页面路径
				public String return_url = "";
				//public String return_url = "http://127.0.0.1/order/returnUrl";
				//需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/

				//商户订单号
				public String out_trade_no = "";
				//商户网站订单系统中唯一订单号,必填

				//订单名称
				public String subject = "";
				//必填

				//付款金额
				public String total_fee = "";
				//必填

				//订单描述

				public String body = "";
				//商品展示地址
				public String show_url = "";
				//需以http://开头的完整路径,例如:http://www.商户网址.com/myorder.html

				//防钓鱼时间戳
				public String anti_phishing_key = "";
				//若要使用请调用类文件submit中的query_timestamp函数

				//客户端的IP地址
				public String exter_invoke_ip = "";
				//非局域网的外网IP地址,如:221.0.0.1
				
				
				public Map<String,String> orderMsg(){
					//把请求参数打包成数组
					Map<String, String> sParaTemp = new HashMap<String, String>();
					sParaTemp.put("service", "create_direct_pay_by_user");
			        sParaTemp.put("partner", AlipayConfig.partner);
			        sParaTemp.put("seller_email", AlipayConfig.seller_email);
			        sParaTemp.put("_input_charset", AlipayConfig.input_charset);
					sParaTemp.put("payment_type", payment_type);
					sParaTemp.put("notify_url", notify_url);
					sParaTemp.put("return_url", return_url);
					sParaTemp.put("out_trade_no", out_trade_no);
					sParaTemp.put("subject", subject);
					sParaTemp.put("total_fee", total_fee);
					//sParaTemp.put("body", body);
					//sParaTemp.put("show_url", show_url);
					sParaTemp.put("anti_phishing_key", anti_phishing_key);
					sParaTemp.put("exter_invoke_ip", exter_invoke_ip);
					return sParaTemp;
				}
				
		
}



在AlipayCtrl中主要处理了异步回调,这个可文档你就可以知道有那些值返回给你,你只需要根据自己的框架特性接收就好。然后修改你的订单。


在AlipayNotify中,主要是对数据的验证,这个是你调试支付的关键文件,因为他会通过log输出一些关键信息供你调试,你需要根据自己习惯更改log格式。














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值