离线购物车的实现

离线购物车就是不用登录的购物车。

首先,在用户的浏览器Cookie里保存用户的ID(临时生成的)。

然后,采用Redis的HashMap结构实现:

  • key是cart:用户ID
  • field是产品ID
  • value是产品数量

image.png
设置过期时间,因为对于离线购物车,不用永久的持久化。

最后:
如果用户进行了登录,就把Redis中的离线购物车同步到DB中去。

在线购物车

即登录后的购物车,一般大型公司会直接持久化到DB中去,并且采用分库分表的方式来减轻数据库的压力。因为购物车是读写最多的地方。

Alipay三方支付流程

首先,引入依赖包:

  1. <!-- 支付宝支付 -->
  2. <dependency>
  3. <groupId>com.alipay.sdk</groupId>
  4. <artifactId>alipay-sdk-java</artifactId>
  5. <version>3.3.87.ALL</version>
  6. <exclusions>
  7. <exclusion>
  8. <artifactId>commons-logging</artifactId>
  9. <groupId>commons-logging</groupId>
  10. </exclusion>
  11. </exclusions>
  12. </dependency>
  13. <dependency>
  14. <groupId>commons-lang</groupId>
  15. <artifactId>commons-lang</artifactId>
  16. <version>2.6</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>commons-configuration</groupId>
  20. <artifactId>commons-configuration</artifactId>
  21. <version>1.10</version>
  22. <exclusions>
  23. <exclusion>
  24. <artifactId>commons-logging</artifactId>
  25. <groupId>commons-logging</groupId>
  26. </exclusion>
  27. </exclusions>
  28. </dependency>
  29. <dependency>
  30. <groupId>commons-codec</groupId>
  31. <artifactId>commons-codec</artifactId>
  32. <version>1.11</version>
  33. </dependency>
  34. <dependency>
  35. <groupId>com.google.zxing</groupId>
  36. <artifactId>core</artifactId>
  37. <version>3.2.1</version>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.hamcrest</groupId>
  41. <artifactId>hamcrest-core</artifactId>
  42. <version>1.3</version>
  43. <scope>test</scope>
  44. </dependency>
  45. <dependency>
  46. <groupId>com.google.code.gson</groupId>
  47. <artifactId>gson</artifactId>
  48. <version>2.8.5</version>
  49. </dependency>
  50. <!-- 支付宝依赖结束 -->

然后,将Alipay官方提供的Demo文件拷贝到项目中:
image.png

然后,将配置文件拷贝到Resource中,并且修改对应的属性。
image.png

最后,写业务逻辑。