易宝——在线支付

1.在线支付的两种常见支付方式和采用第三方支付公司的支付流程。


第三方支付公司的支付流程:



2.易宝:参考内容  

     商户账号:p1_MerId=10001126856

     秘钥:keyValue=69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl

     加密算法:PaymentUtil.java

     请求参数处理:PayServlet.java

     返回参数处理:CallbackServlet.java 

     易宝支付产品通用接口帮助文档.CHM   


    电子签名的使用:在网站向易宝提交数据的时候通过网站提交的hmac码和易宝自己生产的hamc对比看数据在传递过程中是否被改变。



3.支付代码:

     1.jsp页面中提交<formid="orderForm" action="${ pageContext.request.contextPath}/order_payOrder.action" method="post">

action中进行处理:     

   2.Action处理

<span style="font-family:SimSun;font-size:18px;">public class OrderAction extends ActionSupport implements ModelDriven<Order>
{

	// 模型驱动
	private Order order = new Order();

	public Order getModel()
	{
		// TODO Auto-generated method stub
		return order;
	}

	// 接受支付通道编码
	private String pd_FrpId;
	
	public void setPd_FrpId(String pd_FrpId)
	{
		this.pd_FrpId = pd_FrpId;
	}

	// 接受付完款成功之后的相应参数。
	private String r6_Order;
	private String r3_Amt;
	public void setr6_Order(String r6_Order)
	{
		this.r6_Order = r6_Order;
	}
	
	public void setr3_Amt(String r3_Amt)
	{
		this.r3_Amt = r3_Amt;
	}

	// 为订单付款的方法
	public String payOrder() throws IOException
	{	
		// 为订单付款
		String p0_Cmd = "Buy"; // 业务类型
		String p1_MerId = "10001126856"; // 商户编号
		String p2_Order = order.getOid().toString(); // 订单编号
		String p3_Amt = "0.01"; // 支付金额
		String p4_Cur = "CNY"; // 交易货币
		String p5_Pid = ""; // 商品名称
		String p6_Pcat = ""; //商品类型
		String p7_Pdesc = ""; //商品描述
		String p8_Url = "http://localhost:8080/shop3.8/order_callBack.action"; //
		String p9_SAF = ""; //送货地址
		String pa_MP = ""; //扩展信息
		String pd_FrpId = this.pd_FrpId; // 支付通道编码
		String pr_NeedResponse = "1"; // 应答机制
		String keyValue = "69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl";  // 秘钥
		String hmac = PaymentUtil.buildHmac(p0_Cmd, p1_MerId, p2_Order, p3_Amt,
				p4_Cur, p5_Pid, p6_Pcat, p7_Pdesc, p8_Url, p9_SAF, pa_MP,
				pd_FrpId, pr_NeedResponse, keyValue); //
	
		StringBuffer stringBuffer = new StringBuffer(
				"https://www.yeepay.com/app-merchant-proxy/node?");
		stringBuffer.append("p0_Cmd=").append(p0_Cmd).append("&");
		stringBuffer.append("p1_MerId=").append(p1_MerId).append("&");
		stringBuffer.append("p2_Order=").append(p2_Order).append("&");
		stringBuffer.append("p3_Amt=").append(p3_Amt).append("&");
		stringBuffer.append("p4_Cur=").append(p4_Cur).append("&");
		stringBuffer.append("p5_Pid=").append(p5_Pid).append("&");
		stringBuffer.append("p6_Pcat=").append(p6_Pcat).append("&");
		stringBuffer.append("p7_Pdesc=").append(p7_Pdesc).append("&");
		stringBuffer.append("p8_Url=").append(p8_Url).append("&");
		stringBuffer.append("p9_SAF=").append(p9_SAF).append("&");
		stringBuffer.append("pa_MP=").append(pa_MP).append("&");
		stringBuffer.append("pd_FrpId=").append(pd_FrpId).append("&");
		stringBuffer.append("pr_NeedResponse=").append(pr_NeedResponse)
				.append("&");
		stringBuffer.append("keyValue=").append(keyValue).append("&");
		stringBuffer.append("hmac=").append(hmac);
	
		// 重定向到易宝
		ServletActionContext.getResponse()
				.sendRedirect(stringBuffer.toString());
		return NONE;
}
</span>

   3.点击支付:已经付过款的商品显示


    没有付款的商品跳转到付快页面





   4.付款成功之后的转向操作:

     易宝说明:

     只有支付成功时易宝支付才会通知商户。
     支付成功回调有两种,都会以GET形式通知到在线支付请求参数中的p8_Url上:
     ■ 浏览器重定向
     ■ 服务器点对点通讯
     关于两种通知和业务处理说明:如果用户在支付成功后,并没有通知商家而是直接关闭了重定向的窗口,那么重定向就不会通知到商户,不管用户是否重定向通知到商户,服务器点对点通知都会通知到商户,所以在callback页中r9_btype=1和r9_btype=2的两种通知类型中都要进行业务处理。并注意处理重复订单的问题,以防两次通知都处理了相同的业务造成损失。

     点对点需要固定的ip地址,在网站接受第三方公司传递来的数据时也要进行hmac码的验证操作。判断数据时候为真实数据。


    5.转向代码

<span style="font-family:SimSun;font-size:18px;">// 订单成功之后的转向
public String callBack()
{
	// 修改订单状态,改为已经付款
	Order cuOrder = orderService.findByOid(Integer.parseInt(r6_Order));
	cuOrder.setState(2);
	orderService.update(cuOrder);

	// 在页面显示付款成功信息!
	this.addActionMessage("订单付款成功:订单编号" + r6_Order + "付款金额:" + r3_Amt);
	return "msg";
}
</span>
  

  6.最后显示付款成功页面




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先欢迎您选择易宝支付提供的支付接入服务。此目录的例子是PHP代码版本的,您可以直接把所有文件放在WEB服务器上应用的目录下,进行测试运行。 1)文件列表说明 |------------------------------YeePayCommon.php (共通函数文件,正式请求地址在此文件中修改) |------------------------------merchantProperties.php (商家属性文件,商家可以在此文件中修改商家的ID和密钥和支付返回地址等信息) |------------------------------req.php (支付请求文件,通过此文件发起支付请求,商家可以在此文件中写入自己的订单信息等,然后把请求提交给易宝支付) |------------------------------callback.php (支付结果返回文件,通过此文件商家判断对应订单的支付成功状态,并且根据结果修改自己数据库中的订单状态) |------------------------------QueryOrder.php (易宝支付查询接口主程序) |------------------------------HttpClient.class.php (共通函数文件,用于服务器通讯) 2)商家测试可以先用易宝支付的测试商家测试成功再在merchantProperties.php文件中修改成自己的商家ID和密钥信息 $p1_MerId = "10001126856"; $merchantKey = "69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl"; 商家ID和密钥需要同时修改才有效 3)支付成功的返回URL请在pay.html文件中进行修改 接收支付成功数据的地址填写"http://localhost/callback.php"; 商家正式运行时,必须把自己的服务器部署在公网上的服务器上,这样支付成功后易宝支付的服务器才能将支付结果及时返回给商家

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值