商城首页(6)

订单支付
在购物车页面,点击提交订单,寻找servlet,把购物车中的商品写入数据库,形成订单,跳转到订单详情页面,显示刚刚从购物车提交到数据库的商品(本订单的商品),在地址姓名等栏中,填入相应信息,选择付款银行,点击确认订单(找servlet).
在servlet中
1.要将新填内容填入数据库,
2.要通过第三方支付平台进行支付
3.修改订单的state为1,已支付状态
web

public void submitOrder(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		Map<String,String[]> map=request.getParameterMap();
		Order order=new Order();
		HttpSession session=request.getSession();
		Order or=(Order) session.getAttribute("order");
		ProductService service=new ProductService();
		try {
			BeanUtils.populate(order,map);
			service.updateOrder(order);
			
		} catch (Exception e) {
			
			e.printStackTrace();
		}
		// 获得 支付必须基本数据
				String orderid = request.getParameter("oid");
				String money = or.getTotal()+"";
				// 银行
				String pd_FrpId = request.getParameter("pd_FrpId");

				// 发给支付公司需要哪些数据
				String p0_Cmd = "Buy";
				String p1_MerId = ResourceBundle.getBundle("merchantInfo").getString("p1_MerId");
				String p2_Order = orderid;
				String p3_Amt = money;
				String p4_Cur = "CNY";
				String p5_Pid = "";
				String p6_Pcat = "";
				String p7_Pdesc = "";
				// 支付成功回调地址 ---- 第三方支付公司会访问、用户访问
				// 第三方支付可以访问网址
				String p8_Url = ResourceBundle.getBundle("merchantInfo").getString("callback");
				String p9_SAF = "";
				String pa_MP = "";
				String pr_NeedResponse = "1";
				// 加密hmac 需要密钥
				String keyValue = ResourceBundle.getBundle("merchantInfo").getString(
						"keyValue");
				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);
				
				
				String url = "https://www.yeepay.com/app-merchant-proxy/node?pd_FrpId="+pd_FrpId+
								"&p0_Cmd="+p0_Cmd+
								"&p1_MerId="+p1_MerId+
								"&p2_Order="+p2_Order+
								"&p3_Amt="+p3_Amt+
								"&p4_Cur="+p4_Cur+
								"&p5_Pid="+p5_Pid+
								"&p6_Pcat="+p6_Pcat+
								"&p7_Pdesc="+p7_Pdesc+
								"&p8_Url="+p8_Url+
								"&p9_SAF="+p9_SAF+
								"&pa_MP="+pa_MP+
								"&pr_NeedResponse="+pr_NeedResponse+
								"&hmac="+hmac;

				//重定向到第三方支付平台
				response.sendRedirect(url);
	}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 获得回调所有数据
				String p1_MerId = request.getParameter("p1_MerId");
				String r0_Cmd = request.getParameter("r0_Cmd");
				String r1_Code = request.getParameter("r1_Code");
				String r2_TrxId = request.getParameter("r2_TrxId");
				String r3_Amt = request.getParameter("r3_Amt");
				String r4_Cur = request.getParameter("r4_Cur");
				String r5_Pid = request.getParameter("r5_Pid");
				String r6_Order = request.getParameter("r6_Order");
				String r7_Uid = request.getParameter("r7_Uid");
				String r8_MP = request.getParameter("r8_MP");
				String r9_BType = request.getParameter("r9_BType");
				String rb_BankId = request.getParameter("rb_BankId");
				String ro_BankOrderId = request.getParameter("ro_BankOrderId");
				String rp_PayDate = request.getParameter("rp_PayDate");
				String rq_CardNo = request.getParameter("rq_CardNo");
				String ru_Trxtime = request.getParameter("ru_Trxtime");
				// 身份校验 --- 判断是不是支付公司通知你
				String hmac = request.getParameter("hmac");
				String keyValue = ResourceBundle.getBundle("merchantInfo").getString(
						"keyValue");

				// 自己对上面数据进行加密 --- 比较支付公司发过来hamc
				boolean isValid = PaymentUtil.verifyCallback(hmac, p1_MerId, r0_Cmd,
						r1_Code, r2_TrxId, r3_Amt, r4_Cur, r5_Pid, r6_Order, r7_Uid,
						r8_MP, r9_BType, keyValue);
						
						
				if (isValid) {
					// 响应数据有效
					if (r9_BType.equals("1")) {
						// 浏览器重定向
						response.setContentType("text/html;charset=utf-8");
						response.getWriter().println("<h1>付款成功!等待商城进一步操作!等待收货...</h1>");
					} else if (r9_BType.equals("2")) {
						// 服务器点对点 --- 支付公司通知你
						ProductService service=new ProductService();
						service.updateState(r6_Order);
						System.out.println("付款成功!");
						// 修改订单状态 为已付款
						// 回复支付公司
						response.getWriter().print("success");
					}
				} else {
					// 数据无效
					System.out.println("数据被篡改!");
				}
			}

service

public void updateOrder(Order order) {
		ProductDao dao=new ProductDao();
		try {
			dao.updateOrder(order);
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
	}

	public void updateState(String oid) {
		ProductDao dao=new ProductDao();
		try {
			dao.updateState(oid);
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
	}

CallbackSevlet在支付成功后,客户端与第三方平台会访问CallbackServlet,服务器中的此资源会给与相应的response
在这里插入图片描述需要提供两个servlet一个对提交的数据进行密钥加密,
一个提交成功后访问的服务器资源

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uniapp商城主页可以通过在pages下创建一个index文件夹,并在该文件夹下创建一个index.vue文件来实现。在index.vue文件中,可以使用简单模板来编写主页内容。可以按照以下步骤进行创建: 1. 首先,在HBuilderX中启动,点击菜单栏的“文件”→“新建”→“项目”命令。 2. 在弹出的对话框中选择“uni-app类型”,输入想要取的英文项目名,并选择项目保存路径,点击“创建”按钮。 3. 创建成功后,右下角会显示“项目【某某】创建成功”。 4. 在项目中找到pages文件夹,在该文件夹下创建一个名为index的文件夹。 5. 在index文件夹中创建一个名为index.vue的文件。 6. 在index.vue文件中,可以使用<template>、<script>和<style>标签来编写主页的内容和样式。 这样就可以创建一个uniapp商城主页了。具体的页面设计和功能模块的规划可以根据需求进行进一步的开发和设计。\[1\]\[2\] #### 引用[.reference_title] - *1* [uni-app微信小程序——商城(3)——商城主页](https://blog.csdn.net/qq_40601005/article/details/108056198)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [uni-app实现购物商城项目的首页页面](https://blog.csdn.net/m0_68180412/article/details/131294437)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [uni-app微信小程序——商城(6)——我的主页](https://blog.csdn.net/qq_40601005/article/details/108070877)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值