Electricity supplier (13)

Disclaimer: This article is a blogger original article, follow the CC 4.0 BY-SA copyright agreement, reproduced, please attach the original source link and this statement.
This link: https://blog.csdn.net/weixin_44050355/article/details/100586977

Electricity supplier thirteenth day
test Stock:
introducing inventory system: gware-the Manage
1. introduced to the project inventory systems, inventory systems into the project root directory can!
2. The inventory system access entry http: // localhost: 9001 / index
configuration nginx.conf
http://www.gware.com/index
3. How to establish contact with our project inventory form} {remote call restful
write a orderService in the interface calls check inventory interface
http://www.gware.com/hasStock
skuId: goods skuId
NUM: number of items
featured development:
for (OrderDetail OrderDetail: orderDetailList) {
boolean RES = orderService.checkStock (orderDetail.getSkuId (), OrderDetail .getSkuNum ());
// not enough stock represents
IF (RES)! {
request.setAttribute ( "errMsg An",) "inventory shortage!";
return "tradeFail";
}
}
4. Add stock

	5.	测试:
		user-manage,passport-web,cart-service,order-service,order-web,gmall-gware.
		
		注意:验证库存的时候,并没有真正的锁定库存!当支付完成之后锁定库存!
	
验价格:
	   // 实时价格skuInfo.getPrice(); 想得到skuInfo,orderDetail.getSkuId() = skuInfo.id;
		SkuInfo skuInfo = manageService.getSkuInfo(orderDetail.getSkuId());
		if (skuInfo.getPrice()!=orderDetail.getOrderPrice()){
			request.setAttribute("errMsg",orderDetail.getSkuName()+"价格有变动,请重新下单!");
			return "tradeFail";
		}
		// 变动购物车的价格
	   cartService.loadCartCache(userId);
		// orderDetail.getOrderPrice()==skuInfo.getPrice() true: 验证通过,否则验证失败!

支付模块:
	支付宝接口
	支付流程:
		1.	用户点击生成二维码需要 带着签名,参数。
		2.	支付宝需要验证 签名,为了验证商家的真实性!
		3.	验证通过,则进行处理交易
			3.1	同步回调:给用户看
			3.2	异步回调:给商家看

	搭建支付模块 gmall-payment
		将web-util ,service-util 放入同一个pom.xml
		
		导入支付需要的sdkjar包
		1.	直接安装到本地
		2.	mvn install:install-file -DgroupId=com.alipay -DartifactId=alipay-sdk -Dversion=3.0.0  -Dpackaging=jar  -Dfile=alipay-sdk-java20180104135026.jar
		3.	将sdk 导入到项目中
		4.	修改域名
		5.	导入静态资源
			
		6.	立即支付需要完成
				1.  生成一个二维码,进行支付
					
				2.  保存一下交易记录 为什么需要记录订单信息!paymentInfo
					
				3.	了解如何保证支付的幂等性!
						一个订单,在支付宝中,只能交易成功一次!第三方交易编号outtradeNo
						当用户点击支付的时候,outtradeNo 会被记录到支付宝中!
						如果用户再次点击之后的时候,支付宝记录中已经存在 outtradeNo ,则不能支付!
		
		7.	异步回调:
			1.	先验签:boolean flag = AlipaySignature.rsaCheckV1(paramsMap, AlipayConfig.alipay_public_key, AlipayConfig.charset, AlipayConfig.sign_type); //调用SDK验证签名
			2.	flag = true 时,需要进行二次验签
				2.1	"TRADE_SUCCESS".equals(trade_status) || "TRADE_FINISHED".equals(trade_status) 并且交易记录状态PaymentStatus.PAID,PaymentStatus.ClOSED
					才是真正的验签成功!
			3.	验签成功之后:
				更新交易记录的状态PaymentStatus.PAID.
				
			4.	 // 更新订单的状态 orderStatus=PAID 应该是由OrderService。消息中间件来处理!
				
	面试题:
		使用的哪款产品?
			电脑网站支付

Guess you like

Origin blog.csdn.net/weixin_44050355/article/details/100586977