Browse Source

微信支付宝封装%70

nanxinlin 6 years ago
parent
commit
8acecebc7a
19 changed files with 2249 additions and 45 deletions
  1. 2 2
      RainbowPlanet/Podfile
  2. 2 6
      RainbowPlanet/Podfile.lock
  3. 79 1
      RainbowPlanet/RainbowPlanet.xcodeproj/project.pbxproj
  4. 46 0
      RainbowPlanet/RainbowPlanet/AppDelegate/AppDelegate+HandleOpen.swift
  5. 0 30
      RainbowPlanet/RainbowPlanet/AppDelegate/AppDelegate+UM.swift
  6. 5 1
      RainbowPlanet/RainbowPlanet/Define/RainbowPlanet-Bridging-Header.h
  7. 98 0
      RainbowPlanet/RainbowPlanet/Lib/WeChatSDK/README.txt
  8. 196 0
      RainbowPlanet/RainbowPlanet/Lib/WeChatSDK/WXApi.h
  9. 1101 0
      RainbowPlanet/RainbowPlanet/Lib/WeChatSDK/WXApiObject.h
  10. 68 0
      RainbowPlanet/RainbowPlanet/Lib/WeChatSDK/WechatAuthSDK.h
  11. BIN
      RainbowPlanet/RainbowPlanet/Lib/WeChatSDK/libWeChatSDK.a
  12. 103 0
      RainbowPlanet/RainbowPlanet/Manager/PayManager/AlipayManager/AlipayManager.swift
  13. 167 0
      RainbowPlanet/RainbowPlanet/Manager/PayManager/AlipayManager/AlipayOrderModel.swift
  14. 204 0
      RainbowPlanet/RainbowPlanet/Manager/PayManager/AlipayManager/AlipayResultModel.swift
  15. 63 0
      RainbowPlanet/RainbowPlanet/Manager/PayManager/PayManager/PayManager.swift
  16. 72 0
      RainbowPlanet/RainbowPlanet/Manager/PayManager/WeChatpayManager/WeChatpayManager.swift
  17. 34 0
      RainbowPlanet/RainbowPlanet/Manager/PayManager/WeChatpayManager/WeChatpayOrderModel.swift
  18. 0 1
      RainbowPlanet/RainbowPlanet/Modules/ShoppingCartModule/ShoppingCart/ViewController/ShoppingCartViewController.swift
  19. 9 4
      RainbowPlanet/RainbowPlanet/Modules/ShoppingCartModule/ShoppingCart/ViewController/ShoppingCartViewController.xib

+ 2 - 2
RainbowPlanet/Podfile

@@ -64,8 +64,8 @@ target 'RainbowPlanet' do
   pod 'UMCPush'
   pod 'UMCPush'
   # U-Share SDK UI模块(分享面板,建议添加)
   # U-Share SDK UI模块(分享面板,建议添加)
   pod 'UMCShare/UI'
   pod 'UMCShare/UI'
-  # 集成微信(完整版14.4M)
-  pod 'UMCShare/Social/WeChat'
+  # 集成微信(精简版0.2M)
+  pod 'UMCShare/Social/ReducedWeChat'
   # 集成QQ/QZone/TIM(精简版0.5M)
   # 集成QQ/QZone/TIM(精简版0.5M)
   pod 'UMCShare/Social/ReducedQQ'
   pod 'UMCShare/Social/ReducedQQ'
   # 集成新浪微博(精简版1M)
   # 集成新浪微博(精简版1M)

+ 2 - 6
RainbowPlanet/Podfile.lock

@@ -43,10 +43,6 @@ PODS:
   - UMCShare/Social/ReducedWeChat (6.9.5):
   - UMCShare/Social/ReducedWeChat (6.9.5):
     - UMCCommon
     - UMCCommon
     - UMCShare/Core
     - UMCShare/Core
-  - UMCShare/Social/WeChat (6.9.5):
-    - UMCCommon
-    - UMCShare/Core
-    - UMCShare/Social/ReducedWeChat
   - UMCShare/UI (6.9.5):
   - UMCShare/UI (6.9.5):
     - UMCCommon
     - UMCCommon
     - UMCShare/Core
     - UMCShare/Core
@@ -74,7 +70,7 @@ DEPENDENCIES:
   - UMCSecurityPlugins
   - UMCSecurityPlugins
   - UMCShare/Social/ReducedQQ
   - UMCShare/Social/ReducedQQ
   - UMCShare/Social/ReducedSina
   - UMCShare/Social/ReducedSina
-  - UMCShare/Social/WeChat
+  - UMCShare/Social/ReducedWeChat
   - UMCShare/UI
   - UMCShare/UI
 
 
 SPEC REPOS:
 SPEC REPOS:
@@ -130,6 +126,6 @@ SPEC CHECKSUMS:
   UMCSecurityPlugins: 0831a08f3988f3cea9f1d3a7626cd9bee4fef150
   UMCSecurityPlugins: 0831a08f3988f3cea9f1d3a7626cd9bee4fef150
   UMCShare: 552b29753f1b4da87b51d96545ed19e6263df397
   UMCShare: 552b29753f1b4da87b51d96545ed19e6263df397
 
 
-PODFILE CHECKSUM: 961526e458feb7ce2416cb8bdbc2253e07226ad0
+PODFILE CHECKSUM: e7321cadf8196787a3e146da6af158e6e14701ef
 
 
 COCOAPODS: 1.5.3
 COCOAPODS: 1.5.3

+ 79 - 1
RainbowPlanet/RainbowPlanet.xcodeproj/project.pbxproj

@@ -82,6 +82,15 @@
 		A72A730C2232207700B21995 /* AppDelegate+UM.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72A73082232207600B21995 /* AppDelegate+UM.swift */; };
 		A72A730C2232207700B21995 /* AppDelegate+UM.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72A73082232207600B21995 /* AppDelegate+UM.swift */; };
 		A72A730D2232207700B21995 /* AppDelegate+BaiduMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72A73092232207600B21995 /* AppDelegate+BaiduMap.swift */; };
 		A72A730D2232207700B21995 /* AppDelegate+BaiduMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72A73092232207600B21995 /* AppDelegate+BaiduMap.swift */; };
 		A72A730F2232207700B21995 /* AppDelegate+IQKeyboardManagerSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72A730B2232207600B21995 /* AppDelegate+IQKeyboardManagerSwift.swift */; };
 		A72A730F2232207700B21995 /* AppDelegate+IQKeyboardManagerSwift.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72A730B2232207600B21995 /* AppDelegate+IQKeyboardManagerSwift.swift */; };
+		A72A73142232475E00B21995 /* AlipayManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72A73132232475E00B21995 /* AlipayManager.swift */; };
+		A72A73162232481600B21995 /* WeChatpayManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72A73152232481600B21995 /* WeChatpayManager.swift */; };
+		A72A7333223256E100B21995 /* PayManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72A7332223256E100B21995 /* PayManager.swift */; };
+		A72A733522325A4B00B21995 /* AppDelegate+HandleOpen.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72A733422325A4B00B21995 /* AppDelegate+HandleOpen.swift */; };
+		A72A733722325EED00B21995 /* AlipayResultModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72A733622325EED00B21995 /* AlipayResultModel.swift */; };
+		A72A73392232688100B21995 /* AlipayOrderModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72A73382232688100B21995 /* AlipayOrderModel.swift */; };
+		A72A73402232772900B21995 /* README.txt in Resources */ = {isa = PBXBuildFile; fileRef = A72A733D2232772900B21995 /* README.txt */; };
+		A72A73412232772900B21995 /* libWeChatSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A72A733F2232772900B21995 /* libWeChatSDK.a */; };
+		A72A734322327DE300B21995 /* WeChatpayOrderModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A72A734222327DE300B21995 /* WeChatpayOrderModel.swift */; };
 		A77F2C612231FB49001BD3F6 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77F2C602231FB49001BD3F6 /* AppDelegate.swift */; };
 		A77F2C612231FB49001BD3F6 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77F2C602231FB49001BD3F6 /* AppDelegate.swift */; };
 		A77F2C682231FB4A001BD3F6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A77F2C672231FB4A001BD3F6 /* Assets.xcassets */; };
 		A77F2C682231FB4A001BD3F6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A77F2C672231FB4A001BD3F6 /* Assets.xcassets */; };
 		A77F2C762231FB4A001BD3F6 /* RainbowPlanetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77F2C752231FB4A001BD3F6 /* RainbowPlanetTests.swift */; };
 		A77F2C762231FB4A001BD3F6 /* RainbowPlanetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77F2C752231FB4A001BD3F6 /* RainbowPlanetTests.swift */; };
@@ -202,6 +211,18 @@
 		A72A73082232207600B21995 /* AppDelegate+UM.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AppDelegate+UM.swift"; sourceTree = "<group>"; };
 		A72A73082232207600B21995 /* AppDelegate+UM.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AppDelegate+UM.swift"; sourceTree = "<group>"; };
 		A72A73092232207600B21995 /* AppDelegate+BaiduMap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AppDelegate+BaiduMap.swift"; sourceTree = "<group>"; };
 		A72A73092232207600B21995 /* AppDelegate+BaiduMap.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AppDelegate+BaiduMap.swift"; sourceTree = "<group>"; };
 		A72A730B2232207600B21995 /* AppDelegate+IQKeyboardManagerSwift.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AppDelegate+IQKeyboardManagerSwift.swift"; sourceTree = "<group>"; };
 		A72A730B2232207600B21995 /* AppDelegate+IQKeyboardManagerSwift.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AppDelegate+IQKeyboardManagerSwift.swift"; sourceTree = "<group>"; };
+		A72A73132232475E00B21995 /* AlipayManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlipayManager.swift; sourceTree = "<group>"; };
+		A72A73152232481600B21995 /* WeChatpayManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeChatpayManager.swift; sourceTree = "<group>"; };
+		A72A7332223256E100B21995 /* PayManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PayManager.swift; sourceTree = "<group>"; };
+		A72A733422325A4B00B21995 /* AppDelegate+HandleOpen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AppDelegate+HandleOpen.swift"; sourceTree = "<group>"; };
+		A72A733622325EED00B21995 /* AlipayResultModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AlipayResultModel.swift; sourceTree = "<group>"; };
+		A72A73382232688100B21995 /* AlipayOrderModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlipayOrderModel.swift; sourceTree = "<group>"; };
+		A72A733B2232772900B21995 /* WXApi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXApi.h; sourceTree = "<group>"; };
+		A72A733C2232772900B21995 /* WXApiObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXApiObject.h; sourceTree = "<group>"; };
+		A72A733D2232772900B21995 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.txt; sourceTree = "<group>"; };
+		A72A733E2232772900B21995 /* WechatAuthSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WechatAuthSDK.h; sourceTree = "<group>"; };
+		A72A733F2232772900B21995 /* libWeChatSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libWeChatSDK.a; sourceTree = "<group>"; };
+		A72A734222327DE300B21995 /* WeChatpayOrderModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeChatpayOrderModel.swift; sourceTree = "<group>"; };
 		A77F2C5D2231FB49001BD3F6 /* RainbowPlanet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RainbowPlanet.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		A77F2C5D2231FB49001BD3F6 /* RainbowPlanet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RainbowPlanet.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		A77F2C602231FB49001BD3F6 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
 		A77F2C602231FB49001BD3F6 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
 		A77F2C672231FB4A001BD3F6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
 		A77F2C672231FB4A001BD3F6 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
@@ -253,6 +274,7 @@
 				A72A72EE22321E5200B21995 /* AlipaySDK.framework in Frameworks */,
 				A72A72EE22321E5200B21995 /* AlipaySDK.framework in Frameworks */,
 				A72A72EB22321E5200B21995 /* OAuth.framework in Frameworks */,
 				A72A72EB22321E5200B21995 /* OAuth.framework in Frameworks */,
 				A72A72E522321E5200B21995 /* account_login_sdk_core.framework in Frameworks */,
 				A72A72E522321E5200B21995 /* account_login_sdk_core.framework in Frameworks */,
+				A72A73412232772900B21995 /* libWeChatSDK.a in Frameworks */,
 				A72A72E722321E5200B21995 /* account_verify_sdk_core.framework in Frameworks */,
 				A72A72E722321E5200B21995 /* account_verify_sdk_core.framework in Frameworks */,
 				A72A72EC22321E5200B21995 /* EAccountApiSDK.framework in Frameworks */,
 				A72A72EC22321E5200B21995 /* EAccountApiSDK.framework in Frameworks */,
 				A72A72E622321E5200B21995 /* TYRZSDK.framework in Frameworks */,
 				A72A72E622321E5200B21995 /* TYRZSDK.framework in Frameworks */,
@@ -303,6 +325,7 @@
 		A72A725322321A6900B21995 /* Lib */ = {
 		A72A725322321A6900B21995 /* Lib */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				A72A733A2232772900B21995 /* WeChatSDK */,
 				A72A72E122321E5200B21995 /* AlipaySDK */,
 				A72A72E122321E5200B21995 /* AlipaySDK */,
 				A72A72D722321E5200B21995 /* ShanYanSDK */,
 				A72A72D722321E5200B21995 /* ShanYanSDK */,
 			);
 			);
@@ -514,8 +537,9 @@
 		A72A730522321F1D00B21995 /* PayManager */ = {
 		A72A730522321F1D00B21995 /* PayManager */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
-				A72A730722321F3700B21995 /* WeChatpayManager */,
+				A72A7331223256D700B21995 /* PayManager */,
 				A72A730622321F2900B21995 /* AlipayManager */,
 				A72A730622321F2900B21995 /* AlipayManager */,
+				A72A730722321F3700B21995 /* WeChatpayManager */,
 			);
 			);
 			path = PayManager;
 			path = PayManager;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -523,6 +547,9 @@
 		A72A730622321F2900B21995 /* AlipayManager */ = {
 		A72A730622321F2900B21995 /* AlipayManager */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				A72A73132232475E00B21995 /* AlipayManager.swift */,
+				A72A733622325EED00B21995 /* AlipayResultModel.swift */,
+				A72A73382232688100B21995 /* AlipayOrderModel.swift */,
 			);
 			);
 			path = AlipayManager;
 			path = AlipayManager;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -530,10 +557,32 @@
 		A72A730722321F3700B21995 /* WeChatpayManager */ = {
 		A72A730722321F3700B21995 /* WeChatpayManager */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				A72A73152232481600B21995 /* WeChatpayManager.swift */,
+				A72A734222327DE300B21995 /* WeChatpayOrderModel.swift */,
 			);
 			);
 			path = WeChatpayManager;
 			path = WeChatpayManager;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+		A72A7331223256D700B21995 /* PayManager */ = {
+			isa = PBXGroup;
+			children = (
+				A72A7332223256E100B21995 /* PayManager.swift */,
+			);
+			path = PayManager;
+			sourceTree = "<group>";
+		};
+		A72A733A2232772900B21995 /* WeChatSDK */ = {
+			isa = PBXGroup;
+			children = (
+				A72A733D2232772900B21995 /* README.txt */,
+				A72A733F2232772900B21995 /* libWeChatSDK.a */,
+				A72A733B2232772900B21995 /* WXApi.h */,
+				A72A733C2232772900B21995 /* WXApiObject.h */,
+				A72A733E2232772900B21995 /* WechatAuthSDK.h */,
+			);
+			path = WeChatSDK;
+			sourceTree = "<group>";
+		};
 		A77F2C542231FB49001BD3F6 = {
 		A77F2C542231FB49001BD3F6 = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
@@ -598,6 +647,7 @@
 				A72A73092232207600B21995 /* AppDelegate+BaiduMap.swift */,
 				A72A73092232207600B21995 /* AppDelegate+BaiduMap.swift */,
 				A72A730B2232207600B21995 /* AppDelegate+IQKeyboardManagerSwift.swift */,
 				A72A730B2232207600B21995 /* AppDelegate+IQKeyboardManagerSwift.swift */,
 				A72A73082232207600B21995 /* AppDelegate+UM.swift */,
 				A72A73082232207600B21995 /* AppDelegate+UM.swift */,
+				A72A733422325A4B00B21995 /* AppDelegate+HandleOpen.swift */,
 			);
 			);
 			path = AppDelegate;
 			path = AppDelegate;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -925,6 +975,7 @@
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
 				A77F2CB82232010F001BD3F6 /* ShoppingCartViewController.xib in Resources */,
 				A77F2CB82232010F001BD3F6 /* ShoppingCartViewController.xib in Resources */,
+				A72A73402232772900B21995 /* README.txt in Resources */,
 				A72A72E422321E5200B21995 /* TYRZResource.bundle in Resources */,
 				A72A72E422321E5200B21995 /* TYRZResource.bundle in Resources */,
 				A72A72ED22321E5200B21995 /* AlipaySDK.bundle in Resources */,
 				A72A72ED22321E5200B21995 /* AlipaySDK.bundle in Resources */,
 				A72A72E922321E5200B21995 /* uni_account_login_sdk_res.bundle in Resources */,
 				A72A72E922321E5200B21995 /* uni_account_login_sdk_res.bundle in Resources */,
@@ -1113,6 +1164,7 @@
 				A72A72BE22321DE000B21995 /* Extension+RxTimer.swift in Sources */,
 				A72A72BE22321DE000B21995 /* Extension+RxTimer.swift in Sources */,
 				A72A72C422321DE000B21995 /* Extension+CAGradientLayer.swift in Sources */,
 				A72A72C422321DE000B21995 /* Extension+CAGradientLayer.swift in Sources */,
 				A72A72B722321DE000B21995 /* Extension+NSMutableAttributedString.swift in Sources */,
 				A72A72B722321DE000B21995 /* Extension+NSMutableAttributedString.swift in Sources */,
+				A72A73392232688100B21995 /* AlipayOrderModel.swift in Sources */,
 				A72A72A322321DE000B21995 /* LBXScanView.swift in Sources */,
 				A72A72A322321DE000B21995 /* LBXScanView.swift in Sources */,
 				A72A730D2232207700B21995 /* AppDelegate+BaiduMap.swift in Sources */,
 				A72A730D2232207700B21995 /* AppDelegate+BaiduMap.swift in Sources */,
 				A77F2CCA223209F2001BD3F6 /* BaseTabbarViewController.swift in Sources */,
 				A77F2CCA223209F2001BD3F6 /* BaseTabbarViewController.swift in Sources */,
@@ -1126,8 +1178,10 @@
 				A77F2CB52232010F001BD3F6 /* ShoppingViewController.swift in Sources */,
 				A77F2CB52232010F001BD3F6 /* ShoppingViewController.swift in Sources */,
 				A77F2CC3223203BA001BD3F6 /* AppDelegate+Window.swift in Sources */,
 				A77F2CC3223203BA001BD3F6 /* AppDelegate+Window.swift in Sources */,
 				A72A72B022321DE000B21995 /* CGView.swift in Sources */,
 				A72A72B022321DE000B21995 /* CGView.swift in Sources */,
+				A72A73142232475E00B21995 /* AlipayManager.swift in Sources */,
 				A72A72D522321E2700B21995 /* ColorMacro.swift in Sources */,
 				A72A72D522321E2700B21995 /* ColorMacro.swift in Sources */,
 				A72A726622321DBD00B21995 /* BaiduMapManager.swift in Sources */,
 				A72A726622321DBD00B21995 /* BaiduMapManager.swift in Sources */,
+				A72A7333223256E100B21995 /* PayManager.swift in Sources */,
 				A72A72D622321E2700B21995 /* ThirdPartyMacro.swift in Sources */,
 				A72A72D622321E2700B21995 /* ThirdPartyMacro.swift in Sources */,
 				A72A72A622321DE000B21995 /* LBXScanViewStyle.swift in Sources */,
 				A72A72A622321DE000B21995 /* LBXScanViewStyle.swift in Sources */,
 				A72A72B422321DE000B21995 /* Extension+UIImage.swift in Sources */,
 				A72A72B422321DE000B21995 /* Extension+UIImage.swift in Sources */,
@@ -1152,16 +1206,20 @@
 				A72A72B222321DE000B21995 /* NSObject+BARunTime.m in Sources */,
 				A72A72B222321DE000B21995 /* NSObject+BARunTime.m in Sources */,
 				A72A72C622321DE000B21995 /* WebView.swift in Sources */,
 				A72A72C622321DE000B21995 /* WebView.swift in Sources */,
 				A72A72D122321E2700B21995 /* HTMLURLMacro.swift in Sources */,
 				A72A72D122321E2700B21995 /* HTMLURLMacro.swift in Sources */,
+				A72A73162232481600B21995 /* WeChatpayManager.swift in Sources */,
 				A72A72D022321E2700B21995 /* FontMacro.swift in Sources */,
 				A72A72D022321E2700B21995 /* FontMacro.swift in Sources */,
 				A77F2C982231FD25001BD3F6 /* BaseNavigationViewController.swift in Sources */,
 				A77F2C982231FD25001BD3F6 /* BaseNavigationViewController.swift in Sources */,
 				A72A72AB22321DE000B21995 /* SwiftProgressHUD.swift in Sources */,
 				A72A72AB22321DE000B21995 /* SwiftProgressHUD.swift in Sources */,
 				A77F2C612231FB49001BD3F6 /* AppDelegate.swift in Sources */,
 				A77F2C612231FB49001BD3F6 /* AppDelegate.swift in Sources */,
+				A72A734322327DE300B21995 /* WeChatpayOrderModel.swift in Sources */,
 				A72A726722321DBD00B21995 /* LocationModel.swift in Sources */,
 				A72A726722321DBD00B21995 /* LocationModel.swift in Sources */,
 				A72A72C122321DE000B21995 /* NSMutableAttributedString+BAKit.m in Sources */,
 				A72A72C122321DE000B21995 /* NSMutableAttributedString+BAKit.m in Sources */,
 				A72A72D222321E2700B21995 /* Common.swift in Sources */,
 				A72A72D222321E2700B21995 /* Common.swift in Sources */,
 				A72A72B522321DE000B21995 /* Extension+UITextView.swift in Sources */,
 				A72A72B522321DE000B21995 /* Extension+UITextView.swift in Sources */,
+				A72A733722325EED00B21995 /* AlipayResultModel.swift in Sources */,
 				A77F2C9C2231FDCF001BD3F6 /* BaseView.swift in Sources */,
 				A77F2C9C2231FDCF001BD3F6 /* BaseView.swift in Sources */,
 				A72A72B922321DE000B21995 /* Extension+Array.swift in Sources */,
 				A72A72B922321DE000B21995 /* Extension+Array.swift in Sources */,
+				A72A733522325A4B00B21995 /* AppDelegate+HandleOpen.swift in Sources */,
 				A72A72AC22321DE000B21995 /* Regex.swift in Sources */,
 				A72A72AC22321DE000B21995 /* Regex.swift in Sources */,
 				A72A72CF22321E2700B21995 /* NotificationCenterMacro.swift in Sources */,
 				A72A72CF22321E2700B21995 /* NotificationCenterMacro.swift in Sources */,
 				A72A72BF22321DE000B21995 /* Extension+UIButton.swift in Sources */,
 				A72A72BF22321DE000B21995 /* Extension+UIButton.swift in Sources */,
@@ -1330,12 +1388,22 @@
 					"$(PROJECT_DIR)/RainbowPlanet/Lib/ShanYanSDK",
 					"$(PROJECT_DIR)/RainbowPlanet/Lib/ShanYanSDK",
 					"$(PROJECT_DIR)/RainbowPlanet/Lib/AlipaySDK",
 					"$(PROJECT_DIR)/RainbowPlanet/Lib/AlipaySDK",
 				);
 				);
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"${PODS_ROOT}/Headers/Public\"",
+					"\"${PODS_ROOT}/Headers/Public/UMCShare\"",
+					"\"$(SRCROOT)/RainbowPlanet/Lib/AlipaySDK\"",
+				);
 				INFOPLIST_FILE = "$(SRCROOT)/RainbowPlanet/Supporting Files/Info.plist";
 				INFOPLIST_FILE = "$(SRCROOT)/RainbowPlanet/Supporting Files/Info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(inherited)",
 					"@executable_path/Frameworks",
 					"@executable_path/Frameworks",
 				);
 				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/RainbowPlanet/Lib/WeChatSDK",
+				);
 				PRODUCT_BUNDLE_IDENTIFIER = com.chxq.RainbowPlanet;
 				PRODUCT_BUNDLE_IDENTIFIER = com.chxq.RainbowPlanet;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_OBJC_BRIDGING_HEADER = "RainbowPlanet/Define/RainbowPlanet-Bridging-Header.h";
 				SWIFT_OBJC_BRIDGING_HEADER = "RainbowPlanet/Define/RainbowPlanet-Bridging-Header.h";
@@ -1359,12 +1427,22 @@
 					"$(PROJECT_DIR)/RainbowPlanet/Lib/ShanYanSDK",
 					"$(PROJECT_DIR)/RainbowPlanet/Lib/ShanYanSDK",
 					"$(PROJECT_DIR)/RainbowPlanet/Lib/AlipaySDK",
 					"$(PROJECT_DIR)/RainbowPlanet/Lib/AlipaySDK",
 				);
 				);
+				HEADER_SEARCH_PATHS = (
+					"$(inherited)",
+					"\"${PODS_ROOT}/Headers/Public\"",
+					"\"${PODS_ROOT}/Headers/Public/UMCShare\"",
+					"\"$(SRCROOT)/RainbowPlanet/Lib/AlipaySDK\"",
+				);
 				INFOPLIST_FILE = "$(SRCROOT)/RainbowPlanet/Supporting Files/Info.plist";
 				INFOPLIST_FILE = "$(SRCROOT)/RainbowPlanet/Supporting Files/Info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"$(inherited)",
 					"@executable_path/Frameworks",
 					"@executable_path/Frameworks",
 				);
 				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/RainbowPlanet/Lib/WeChatSDK",
+				);
 				PRODUCT_BUNDLE_IDENTIFIER = com.chxq.RainbowPlanet;
 				PRODUCT_BUNDLE_IDENTIFIER = com.chxq.RainbowPlanet;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_OBJC_BRIDGING_HEADER = "RainbowPlanet/Define/RainbowPlanet-Bridging-Header.h";
 				SWIFT_OBJC_BRIDGING_HEADER = "RainbowPlanet/Define/RainbowPlanet-Bridging-Header.h";

+ 46 - 0
RainbowPlanet/RainbowPlanet/AppDelegate/AppDelegate+HandleOpen.swift

@@ -0,0 +1,46 @@
+//
+//  AppDelegate+HandleOpen.swift
+//  RainbowPlanet
+//
+//  Created by 南鑫林 on 2019/3/8.
+//  Copyright © 2019 南鑫林. All rights reserved.
+//
+
+import Foundation
+
+//MARK: - 设置系统回调
+extension AppDelegate {
+    //注:此方法在swift4.1(Xcode 9.3)已废弃,Objective-C项目不影响。 新浪 平台外的其他平台可在swift项目中使用下面两种回调方法。
+    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
+        //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响
+        var result = UMSocialManager.default().handleOpen(url, sourceApplication: sourceApplication, annotation: annotation)
+        if (!result) {
+            // 其他如支付等SDK的回调
+            result = PayManager.shared().handleOpen(url: url)
+            return result
+        }
+        return result;
+    }
+    //仅支持iOS9以上系统,iOS8及以下系统不会回调
+    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
+        //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响
+        var result = UMSocialManager.default().handleOpen(url, options: options)
+        if (!result) {
+            // 其他如支付等SDK的回调
+            result = PayManager.shared().handleOpen(url: url)
+            return result
+        }
+        return result;
+    }
+    //支持目前所有iOS系统
+    func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
+        var result = UMSocialManager.default().handleOpen(url)
+        if (!result) {
+            // 其他如支付等SDK的回调
+            result = PayManager.shared().handleOpen(url: url)
+            return result
+        }
+        return result;
+    }
+}
+

+ 0 - 30
RainbowPlanet/RainbowPlanet/AppDelegate/AppDelegate+UM.swift

@@ -166,33 +166,3 @@ extension AppDelegate {
         NXLLog(deviceToken.description.replacingOccurrences(of: "<", with: "").replacingOccurrences(of: ">", with: "").replacingOccurrences(of: " ", with: ""))
         NXLLog(deviceToken.description.replacingOccurrences(of: "<", with: "").replacingOccurrences(of: ">", with: "").replacingOccurrences(of: " ", with: ""))
     }
     }
 }
 }
-//MARK: - 设置系统回调
-extension AppDelegate {
-    //注:此方法在swift4.1(Xcode 9.3)已废弃,Objective-C项目不影响。 新浪 平台外的其他平台可在swift项目中使用下面两种回调方法。
-    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
-        //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响
-        let result = UMSocialManager.default().handleOpen(url, sourceApplication: sourceApplication, annotation: annotation)
-        if (!result) {
-            // 其他如支付等SDK的回调
-        }
-        return result;
-    }
-    //仅支持iOS9以上系统,iOS8及以下系统不会回调
-    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
-        //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响
-        let result = UMSocialManager.default().handleOpen(url, options: options)
-        if (!result) {
-            // 其他如支付等SDK的回调
-        }
-        return result;
-    }
-    //支持目前所有iOS系统
-    func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
-        let result = UMSocialManager.default().handleOpen(url)
-        if (!result) {
-            // 其他如支付等SDK的回调
-        }
-        return result;
-    }
-}
-

+ 5 - 1
RainbowPlanet/RainbowPlanet/Define/RainbowPlanet-Bridging-Header.h

@@ -11,6 +11,11 @@
 
 
 //提示框
 //提示框
 #import <MBProgressHUD/MBProgressHUD.h>
 #import <MBProgressHUD/MBProgressHUD.h>
+//支付宝支付
+#import <AlipaySDK/AlipaySDK.h>
+
+//微信支付
+#import "WXApi.h"
 
 
 //友盟
 //友盟
 #import <UMCommon/UMCommon.h>
 #import <UMCommon/UMCommon.h>
@@ -18,7 +23,6 @@
 #import <UMShare/UMShare.h>
 #import <UMShare/UMShare.h>
 #import <UMAnalytics/MobClick.h>
 #import <UMAnalytics/MobClick.h>
 #import <UMCommonLog/UMCommonLogHeaders.h>
 #import <UMCommonLog/UMCommonLogHeaders.h>
-#import <UMShare/UMShare.h>
 #import <UShareUI/UShareUI.h>
 #import <UShareUI/UShareUI.h>
 
 
 //百度定位
 //百度定位

+ 98 - 0
RainbowPlanet/RainbowPlanet/Lib/WeChatSDK/README.txt

@@ -0,0 +1,98 @@
+重要!
+SDK1.8.4
+1. 调整分享图片大小限制
+2. 新增openBusinessView接口
+
+SDK1.8.3
+1. SDK增加调起微信刷卡支付接口
+2. SDK增加小程序订阅消息接口
+3. 修复小程序订阅消息接口没有resp的问题
+
+SDK1.8.2
+1. SDK增加开发票授权 WXInvoiceAuthInsert
+2. SDK增加非税接口   WXNontaxPay
+3. SDK增加医保接口   WXPayInsurance
+4. 更换MTA库
+
+SDK1.8.1
+1. SDK打开小程序支持指定版本(体验,开发,正式版)
+2. SDK分享小程序支持指定版本(体验,开发,正式版)
+3. SDK支持输出log日志
+
+SDK1.8.0
+1. SDK支持打开小程序
+2. SDK分享小程序支持shareTicket
+
+SDK1.7.9
+1. SDK订阅一次性消息
+
+SDK1.7.8
+1 SDK分享小程序支持大图
+
+SDK1.7.7
+1 增加SDK分享小程序
+2 增加选择发票接口
+
+SDK1.7.6
+1. 提高稳定性
+1 修复mta崩溃
+2  新增接口支持开发者关闭mta数据统计上报
+
+SDK1.7.5
+1. 提高稳定性
+2. 加快registerApp接口启动速度
+
+SDK1.7.4
+1. 更新支持iOS启用 ATS(App Transport Security)
+2. 需要在工程中链接CFNetwork.framework
+3. 在工程配置中的”Other Linker Flags”中加入”-Objc -all_load”
+
+SDK1.7.3
+1. 增强稳定性,适配iOS10
+2. 修复小于32K的jpg格式缩略图设置失败的问题
+
+SDK1.7.2
+1. 修复因CTTeleponyNetworkInfo引起的崩溃问题
+
+SDK1.7.1
+1. 支持兼容ipv6(提升稳定性)
+2. xCode Version 7.3.1 (7D1014) 编译
+
+SDK1.7
+1. 支持兼容ipv6
+2. 修复若干问题增强稳定性
+
+SDK1.6.3
+1. xCode7.2 构建的sdk包。
+2. 请使用xCode7.2进行编译。
+3. 需要在Build Phases中Link  Security.framework
+4. 修复若干小问题。
+
+SDK1.6.2
+1、xCode7.1 构建的sdk包
+2、请使用xCode7.1进行编译
+
+SDK1.6.1
+1、修复armv7s下,bitcode可能编译不过
+2、解决warning
+
+SDK1.6
+1、iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装。
+受此影响,当你的应用在iOS 9中需要使用微信SDK的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码:
+<key>LSApplicationQueriesSchemes</key>
+<array>
+<string>weixin</string>
+</array>
+<key>NSAppTransportSecurity</key>
+<dict>
+<key>NSAllowsArbitraryLoads</key>
+<true/>
+</dict>
+2、开发者需要在工程中链接上 CoreTelephony.framework
+3、解决bitcode编译不过问题
+
+SDK1.5
+1、废弃safeSendReq:接口,使用sendReq:即可。
+2、新增+(BOOL) sendAuthReq:(SendAuthReq*) req viewController : (UIViewController*) viewController delegate:(id<WXApiDelegate>) delegate;
+支持未安装微信情况下Auth,具体见WXApi.h接口描述
+3、微信开放平台新增了微信模块用户统计功能,便于开发者统计微信功能模块的用户使用和活跃情况。开发者需要在工程中链接上:SystemConfiguration.framework,libz.dylib,libsqlite3.0.dylib。

+ 196 - 0
RainbowPlanet/RainbowPlanet/Lib/WeChatSDK/WXApi.h

@@ -0,0 +1,196 @@
+//
+//  WXApi.h
+//  所有Api接口
+//
+//  Created by Wechat on 12-2-28.
+//  Copyright (c) 2012年 Tencent. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "WXApiObject.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+#pragma mark - WXApiDelegate
+/*! @brief 接收并处理来自微信终端程序的事件消息
+ *
+ * 接收并处理来自微信终端程序的事件消息,期间微信界面会切换到第三方应用程序。
+ * WXApiDelegate 会在handleOpenURL:delegate:中使用并触发。
+ */
+@protocol WXApiDelegate <NSObject>
+@optional
+
+/*! @brief 收到一个来自微信的请求,第三方应用程序处理完后调用sendResp向微信发送结果
+ *
+ * 收到一个来自微信的请求,异步处理完成后必须调用sendResp发送处理结果给微信。
+ * 可能收到的请求有GetMessageFromWXReq、ShowMessageFromWXReq等。
+ * @param req 具体请求内容,是自动释放的
+ */
+- (void)onReq:(BaseReq*)req;
+
+
+
+/*! @brief 发送一个sendReq后,收到微信的回应
+ *
+ * 收到一个来自微信的处理结果。调用一次sendReq后会收到onResp。
+ * 可能收到的处理结果有SendMessageToWXResp、SendAuthResp等。
+ * @param resp具体的回应内容,是自动释放的
+ */
+- (void)onResp:(BaseResp*)resp;
+
+@end
+
+#pragma mark - WXApiLogDelegate
+
+@protocol WXApiLogDelegate <NSObject>
+
+- (void)onLog:(NSString*)log logLevel:(WXLogLevel)level;
+
+@end
+
+#pragma mark - WXApi
+
+/*! @brief 微信Api接口函数类
+ *
+ * 该类封装了微信终端SDK的所有接口
+ */
+@interface WXApi : NSObject
+
+/*! @brief WXApi的成员函数,向微信终端程序注册第三方应用。
+ *
+ * 需要在每次启动第三方应用程序时调用。第一次调用后,会在微信的可用应用列表中出现,默认开启MTA数据上报。
+ * iOS7及以上系统需要调起一次微信才会出现在微信的可用应用列表中。
+ * @attention 请保证在主线程中调用此函数
+ * @param appid 微信开发者ID
+ * @param typeFlag 应用支持打开的文件类型
+ * @return 成功返回YES,失败返回NO。
+ */
++ (BOOL)registerApp:(NSString *)appid;
+
+/*! @brief WXApi的成员函数,向微信终端程序注册第三方应用。
+ *
+ * 需要在每次启动第三方应用程序时调用。第一次调用后,会在微信的可用应用列表中出现。
+ * iOS7及以上系统需要调起一次微信才会出现在微信的可用应用列表中。
+ * @attention 请保证在主线程中调用此函数
+ * @param appid 微信开发者ID
+ * @param isEnableMTA 是否支持MTA数据上报
+ * @return 成功返回YES,失败返回NO。
+ */
++ (BOOL)registerApp:(NSString *)appid enableMTA:(BOOL)isEnableMTA;
+
+
+/*! @brief WXApi的成员函数,向微信终端程序注册应用支持打开的文件类型。
+ *
+ * 需要在每次启动第三方应用程序时调用。调用后并第一次成功分享数据到微信后,会在微信的可用应用列表中出现。
+ * @see registerApp
+ * @param typeFlag 应用支持打开的数据类型, enAppSupportContentFlag枚举类型 “|” 操作后结果
+ */
++ (void)registerAppSupportContentFlag:(UInt64)typeFlag;
+
+
+
+/*! @brief 处理微信通过URL启动App时传递的数据
+ *
+ * 需要在 application:openURL:sourceApplication:annotation:或者application:handleOpenURL中调用。
+ * @param url 微信启动第三方应用时传递过来的URL
+ * @param delegate  WXApiDelegate对象,用来接收微信触发的消息。
+ * @return 成功返回YES,失败返回NO。
+ */
++ (BOOL)handleOpenURL:(NSURL *)url delegate:(nullable id<WXApiDelegate>)delegate;
+
+
+
+/*! @brief 检查微信是否已被用户安装
+ *
+ * @return 微信已安装返回YES,未安装返回NO。
+ */
++ (BOOL)isWXAppInstalled;
+
+
+
+/*! @brief 判断当前微信的版本是否支持OpenApi
+ *
+ * @return 支持返回YES,不支持返回NO。
+ */
++ (BOOL)isWXAppSupportApi;
+
+
+
+/*! @brief 获取微信的itunes安装地址
+ *
+ * @return 微信的安装地址字符串。
+ */
++ (NSString *)getWXAppInstallUrl;
+
+
+
+/*! @brief 获取当前微信SDK的版本号
+ *
+ * @return 返回当前微信SDK的版本号
+ */
++ (NSString *)getApiVersion;
+
+
+
+/*! @brief 打开微信
+ *
+ * @return 成功返回YES,失败返回NO。
+ */
++ (BOOL)openWXApp;
+
+
+
+/*! @brief 发送请求到微信,等待微信返回onResp
+ *
+ * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持以下类型
+ * SendAuthReq、SendMessageToWXReq、PayReq等。
+ * @param req 具体的发送请求,在调用函数后,请自己释放。
+ * @return 成功返回YES,失败返回NO。
+ */
++ (BOOL)sendReq:(BaseReq*)req;
+
+/*! @brief 发送Auth请求到微信,支持用户没安装微信,等待微信返回onResp
+ *
+ * 函数调用后,会切换到微信的界面。第三方应用程序等待微信返回onResp。微信在异步处理完成后一定会调用onResp。支持SendAuthReq类型。
+ * @param req 具体的发送请求,在调用函数后,请自己释放。
+ * @param viewController 当前界面对象。
+ * @param delegate  WXApiDelegate对象,用来接收微信触发的消息。
+ * @return 成功返回YES,失败返回NO。
+ */
++ (BOOL)sendAuthReq:(SendAuthReq*)req viewController:(UIViewController*)viewController delegate:(nullable id<WXApiDelegate>)delegate;
+
+
+/*! @brief 收到微信onReq的请求,发送对应的应答给微信,并切换到微信界面
+ *
+ * 函数调用后,会切换到微信的界面。第三方应用程序收到微信onReq的请求,异步处理该请求,完成后必须调用该函数。可能发送的相应有
+ * GetMessageFromWXResp、ShowMessageFromWXResp等。
+ * @param resp 具体的应答内容,调用函数后,请自己释放
+ * @return 成功返回YES,失败返回NO。
+ */
++ (BOOL)sendResp:(BaseResp*)resp;
+
+
+/*! @brief WXApi的成员函数,接受微信的log信息。byBlock
+    注意1:SDK会强引用这个block,注意不要导致内存泄漏,注意不要导致内存泄漏
+    注意2:调用过一次startLog by block之后,如果再调用一次任意方式的startLoad,会释放上一次logBlock,不再回调上一个logBlock
+ *
+ *  @param level 打印log的级别
+ *  @param logBlock 打印log的回调block
+ */
++ (void)startLogByLevel:(WXLogLevel)level logBlock:(WXLogBolock)logBlock;
+
+/*! @brief WXApi的成员函数,接受微信的log信息。byDelegate 
+    注意1:sdk会弱引用这个delegate,这里可加任意对象为代理,不需要与WXApiDelegate同一个对象
+    注意2:调用过一次startLog by delegate之后,再调用一次任意方式的startLoad,不会再回调上一个logDelegate对象
+ *  @param level 打印log的级别
+ *  @param logDelegate 打印log的回调代理,
+ */
++ (void)startLogByLevel:(WXLogLevel)level logDelegate:(id<WXApiLogDelegate>)logDelegate;
+
+/*! @brief 停止打印log,会清理block或者delegate为空,释放block
+ *  @param 
+ */
++ (void)stopLog;
+@end
+
+NS_ASSUME_NONNULL_END

File diff suppressed because it is too large
+ 1101 - 0
RainbowPlanet/RainbowPlanet/Lib/WeChatSDK/WXApiObject.h


+ 68 - 0
RainbowPlanet/RainbowPlanet/Lib/WeChatSDK/WechatAuthSDK.h

@@ -0,0 +1,68 @@
+//
+//  WechatAuthSDK.h
+//  WechatAuthSDK
+//
+//  Created by 李凯 on 13-11-29.
+//  Copyright (c) 2013年 Tencent. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+enum  AuthErrCode {
+    WechatAuth_Err_Ok = 0,  //Auth成功
+    WechatAuth_Err_NormalErr = -1,  //普通错误
+    WechatAuth_Err_NetworkErr = -2, //网络错误
+    WechatAuth_Err_GetQrcodeFailed = -3,    //获取二维码失败
+    WechatAuth_Err_Cancel = -4,     //用户取消授权
+    WechatAuth_Err_Timeout = -5,    //超时
+};
+
+@protocol WechatAuthAPIDelegate<NSObject>
+@optional
+
+- (void)onAuthGotQrcode:(UIImage *)image;  //得到二维码
+- (void)onQrcodeScanned;    //二维码被扫描
+- (void)onAuthFinish:(int)errCode AuthCode:(nullable NSString *)authCode;    //成功登录
+
+@end
+
+@interface WechatAuthSDK : NSObject{
+    NSString *_sdkVersion;
+    __weak id<WechatAuthAPIDelegate> _delegate;
+}
+
+@property(nonatomic, weak, nullable) id<WechatAuthAPIDelegate> delegate;
+@property(nonatomic, readonly) NSString *sdkVersion;   //authSDK版本号
+
+/*! @brief 发送登录请求,等待WechatAuthAPIDelegate回调
+ *
+ * @param appId 微信开发者ID
+ * @param nonceStr 一个随机的尽量不重复的字符串,用来使得每次的signature不同
+ * @param timeStamp 时间戳
+ * @param scope 应用授权作用域,拥有多个作用域用逗号(,)分隔
+ * @param signature 签名
+ * @param schemeData 会在扫码后拼在scheme后
+ * @return 成功返回YES,失败返回NO
+    注:该实现只保证同时只有一个Auth在运行,Auth未完成或未Stop再次调用Auth接口时会返回NO。
+ */
+
+- (BOOL)Auth:(NSString *)appId
+    nonceStr:(NSString *)nonceStr
+   timeStamp:(NSString *)timeStamp
+       scope:(NSString *)scope
+   signature:(NSString *)signature
+  schemeData:(nullable NSString *)schemeData;
+
+
+/*! @brief 暂停登录请求
+ *
+ * @return 成功返回YES,失败返回NO。
+ */
+- (BOOL)StopAuth;
+
+@end
+
+NS_ASSUME_NONNULL_END

BIN
RainbowPlanet/RainbowPlanet/Lib/WeChatSDK/libWeChatSDK.a


+ 103 - 0
RainbowPlanet/RainbowPlanet/Manager/PayManager/AlipayManager/AlipayManager.swift

@@ -0,0 +1,103 @@
+//
+//  AlipayManager.swift
+//  RainbowPlanet
+//
+//  Created by 南鑫林 on 2019/3/8.
+//  Copyright © 2019 南鑫林. All rights reserved.
+//
+
+import UIKit
+
+class AlipayManager: NSObject {
+    private static let _sharedInstance = AlipayManager()
+
+    private override init() {
+
+    }
+    
+    class func shared() -> AlipayManager {
+        return _sharedInstance
+    }
+
+    typealias SuccessPayBlock = () -> Void
+    var successPayBlock : SuccessPayBlock?
+
+    typealias FailPayBlock = () -> Void
+    var failPayBlock : FailPayBlock?
+
+    // TODO: 需要完善
+    func alipayRequest(){
+
+    }
+
+    func alipay(orderString : String,successPayBlock : @escaping SuccessPayBlock,failPayBlock: @escaping FailPayBlock) {
+        //唤起支付宝支付页面
+        AlipaySDK.defaultService().payOrder(orderString, fromScheme: "") {[weak self] (result) in
+
+            let alipayResultModel = AlipayResultModel(JSON: result as! Dictionary)
+
+            switch  alipayResultModel?.resultStatus{
+            // 订单支付成功
+            case "9000":
+                SwiftProgressHUD.shared().showSuccess("订单支付成功")
+                self?.successPay()
+                self?.successPayBlock = successPayBlock
+                break
+            // 正在处理中,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态
+            case "8000":
+                SwiftProgressHUD.shared().showWait("正在处理中")
+                self?.failPay()
+                self?.failPayBlock = failPayBlock
+                break
+            // 用户中途取消
+            case "6001":
+                SwiftProgressHUD.shared().showWait("用户中途取消")
+                self?.failPay()
+                self?.failPayBlock = failPayBlock
+                break
+            // 网络连接出错
+            case "6002":
+                SwiftProgressHUD.shared().showError("网络连接出错")
+                self?.failPay()
+                self?.failPayBlock = failPayBlock
+                break
+            // 支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态
+            case "6004":
+                SwiftProgressHUD.shared().showWait("支付结果未知")
+                self?.failPay()
+                self?.failPayBlock = failPayBlock
+                break
+            // 重复请求
+            case "5000":
+                SwiftProgressHUD.shared().showError("重复请求")
+                self?.failPay()
+                self?.failPayBlock = failPayBlock
+                break
+            // 订单支付失败
+            case "4000":
+                SwiftProgressHUD.shared().showError("订单支付失败")
+                self?.failPay()
+                self?.failPayBlock = failPayBlock
+                break
+            default:
+                SwiftProgressHUD.shared().showError("系统异常")
+                self?.failPay()
+                self?.failPayBlock = failPayBlock
+                break
+            }
+        }
+    }
+
+
+
+    /// 支付成功
+    func successPay() {
+
+    }
+
+    /// 支付失败
+    func failPay() {
+
+    }
+
+}

+ 167 - 0
RainbowPlanet/RainbowPlanet/Manager/PayManager/AlipayManager/AlipayOrderModel.swift

@@ -0,0 +1,167 @@
+//
+//  AlipayOrderModel.swift
+//  RainbowPlanet
+//
+//  Created by 南鑫林 on 2019/3/8.
+//  Copyright © 2019 南鑫林. All rights reserved.
+//
+
+import UIKit
+
+///支付渠道
+enum PayChannelsType : String {
+
+    /// 余额
+    case balance = "balance"
+    /// 余额宝
+    case moneyFund = "moneyFund"
+    /// 红包
+    case coupon = "coupon"
+    /// 花呗
+    case pcredit = "pcredit"
+    /// 花呗
+    case pcreditpayInstallment = "pcreditpayInstallment"
+    /// 信用卡
+    case creditCard = "creditCard"
+    /// 信用卡快捷
+    case creditCardExpress = "creditCardExpress"
+    /// 信用卡卡通
+    case creditCardCartoon = "creditCardCartoon"
+    /// 信用支付类型(包含信用卡卡通、信用卡快捷、花呗、花呗分期)
+    case credit_group = "credit_group"
+    /// 借记卡快捷
+    case debitCardExpress = "debitCardExpress"
+    ///  商户预存卡
+    case mcard = "mcard"
+    ///  个人预存卡
+    case pcard = "pcard"
+    ///  优惠(包含实时优惠+商户优惠)
+    case promotion = "promotion"
+    ///  营销券
+    case voucher = "voucher"
+    ///  积分
+    case point = "point"
+    ///  网银
+    case bankPay = "bankPay"
+}
+
+
+class AlipayOrderModel: NSObject {
+
+    /// 支付宝分配给开发者的应用ID
+    var app_id : String? = ""
+
+    /// 接口名称
+    var method : String? = "alipay.trade.app.pay"
+
+    /// 仅支持JSON
+    var format : String? = "JSON"
+
+    /// 请求使用的编码格式,如utf-8,gbk,gb2312等
+    var charset : String? = "utf-8"
+
+    /// 商户生成签名字符串所使用的签名算法类型,目前支持RSA2和RSA,推荐使用RSA2
+    var sign_type : String? = "RSA2"
+
+    /// 商户请求参数的签名串
+    var sign : String? =  ""
+
+    /// 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss"
+    var timestamp : String? = ""
+
+    /// 调用的接口版本,固定为:1.0
+    var version : String? = "1.0"
+
+    /// 支付宝服务器主动通知商户服务器里指定的页面http/https路径。建议商户使用https
+    var notify_url : String? = ""
+
+    /// 业务请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递,具体参照各产品快速接入文档
+    var biz_content : AlipayOrderBizContent?
+}
+
+class AlipayOrderBizContent: NSObject {
+
+    /// 对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
+    var body : String = ""
+
+    /// 商品的标题/交易标题/订单标题/订单关键字等。
+    var subject : String = ""
+
+    /// 商户网站唯一订单号
+    var out_trade_no : String = ""
+
+    /// 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。注:若为空,则默认为15d。
+    var timeout_express : String = ""
+
+    /// 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
+    var total_amount : String = ""
+
+    /// 销售产品码,商家和支付宝签约的产品码,为固定值QUICK_MSECURITY_PAY
+    var product_code : String =  ""
+
+    /// 商品主类型:0—虚拟类商品,1—实物类商品 虚拟类商品不支持使用花呗渠道
+    var goods_type : String = ""
+
+    /// 公用回传参数,如果请求时传递了该参数,则返回给商户时会回传该参数。支付宝会在异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝
+    var passback_params : String = ""
+
+    /// 优惠参数 注:仅与支付宝协商后可用
+    var promo_params : String = ""
+
+    /// 业务扩展参数,详见下面的“业务扩展参数说明”
+    var extend_params : AlipayOrderBizContentExtension?
+
+    /// 可用渠道,用户只能在指定渠道范围内支付 当有多个渠道时用“,”分隔 注:与disable_pay_channels互斥
+    var enable_pay_channels : PayChannelsType.RawValue?
+
+    /// 禁用渠道,用户不可用指定渠道支付 当有多个渠道时用“,”分隔 注:与enable_pay_channels互斥
+    var disable_pay_channels : PayChannelsType.RawValue?
+
+    /// 商户门店编号。该参数用于请求参数中以区分各门店,非必传项。
+    var store_id : String = ""
+
+    /// 外部指定买家,详见外部用户ExtUserInfo参数说明
+    var ext_user_info : ExtUserInfo?
+
+}
+
+class AlipayOrderBizContentExtension: NSObject {
+    /// 系统商编号,该参数作为系统商返佣数据提取的依据,请填写系统商签约协议的PID
+    var sys_service_provider_id : String = ""
+
+    /// 是否发起实名校验 T:发起 F:不发起
+    var needBuyerRealnamed : String = ""
+
+    /// 账务备注 注:该字段显示在离线账单的账务备注中
+    var TRANS_MEMO : String = ""
+
+    /// 花呗分期数(目前仅支持3、6、12)注:使用该参数需要仔细阅读“花呗分期接入文档”
+    var hb_fq_num : String = ""
+
+    /// 卖家承担收费比例,商家承担手续费传入100,用户承担手续费传入0,仅支持传入100、0两种,其他比例暂不支持 注:使用该参数需要仔细阅读“花呗分期接入文档”
+    var hb_fq_seller_percent : String = ""
+
+}
+
+class ExtUserInfo: NSObject {
+    /// 姓名 注: need_check_info=T时该参数才有效
+    var name : String = ""
+
+    /// 手机号 注:该参数暂不校验
+    var mobile : String = ""
+
+    /// 身份证:IDENTITY_CARD、护照:PASSPORT、军官证:OFFICER_CARD、士兵证:SOLDIER_CARD、户口本:HOKOU等。如有其它类型需要支持,请与蚂蚁金服工作人员联系。 注: need_check_info=T时该参数才有效
+    var cert_type : String = ""
+
+    /// 证件号 注:need_check_info=T时该参数才有效
+    var cert_no : String = ""
+
+    /// 允许的最小买家年龄,买家年龄必须大于等于所传数值 注:1. need_check_info=T时该参数才有效 2. min_age为整数,必须大于等于0
+    var min_age : String = ""
+
+    /// 是否强制校验付款人身份信息 T:强制校验,F:不强制
+    var fix_buyer : String = ""
+
+    /// 是否强制校验身份信息 T:强制校验,F:不强制
+    var need_check_info : String = ""
+}

+ 204 - 0
RainbowPlanet/RainbowPlanet/Manager/PayManager/AlipayManager/AlipayResultModel.swift

@@ -0,0 +1,204 @@
+//
+//	AlipayResultModel
+//	Model file generated using JSONExport: https://github.com/Ahmed-Ali/JSONExport
+
+import Foundation 
+import ObjectMapper
+
+
+class AlipayResultModel : NSObject, NSCoding, Mappable{
+
+	var memo : String?
+	var result : ResultModel?
+	var resultStatus : String?
+
+
+	class func newInstance(map: Map) -> Mappable?{
+		return AlipayResultModel()
+	}
+	required init?(map: Map){}
+	private override init(){}
+
+	func mapping(map: Map)
+	{
+		memo <- map["memo"]
+		result <- map["result"]
+		resultStatus <- map["resultStatus"]
+		
+	}
+
+    /**
+    * NSCoding required initializer.
+    * Fills the data from the passed decoder
+    */
+    @objc required init(coder aDecoder: NSCoder)
+	{
+         memo = aDecoder.decodeObject(forKey: "memo") as? String
+         result = aDecoder.decodeObject(forKey: "result") as? ResultModel
+         resultStatus = aDecoder.decodeObject(forKey: "resultStatus") as? String
+
+	}
+
+    /**
+    * NSCoding required method.
+    * Encodes mode properties into the decoder
+    */
+    @objc func encode(with aCoder: NSCoder)
+	{
+		if memo != nil{
+			aCoder.encode(memo, forKey: "memo")
+		}
+		if result != nil{
+			aCoder.encode(result, forKey: "result")
+		}
+		if resultStatus != nil{
+			aCoder.encode(resultStatus, forKey: "resultStatus")
+		}
+
+	}
+
+}
+
+class ResultModel : NSObject, NSCoding, Mappable{
+
+    var alipayTradeAppPayResponse : AlipayTradeAppPayResponseMdoel?
+    var sign : String?
+    var signType : String?
+
+
+    class func newInstance(map: Map) -> Mappable?{
+        return ResultModel()
+    }
+    required init?(map: Map){}
+    private override init(){}
+
+    func mapping(map: Map)
+    {
+        alipayTradeAppPayResponse <- map["alipay_trade_app_pay_response"]
+        sign <- map["sign"]
+        signType <- map["sign_type"]
+
+    }
+
+    /**
+     * NSCoding required initializer.
+     * Fills the data from the passed decoder
+     */
+    @objc required init(coder aDecoder: NSCoder)
+    {
+        alipayTradeAppPayResponse = aDecoder.decodeObject(forKey: "alipay_trade_app_pay_response") as? AlipayTradeAppPayResponseMdoel
+        sign = aDecoder.decodeObject(forKey: "sign") as? String
+        signType = aDecoder.decodeObject(forKey: "sign_type") as? String
+
+    }
+
+    /**
+     * NSCoding required method.
+     * Encodes mode properties into the decoder
+     */
+    @objc func encode(with aCoder: NSCoder)
+    {
+        if alipayTradeAppPayResponse != nil{
+            aCoder.encode(alipayTradeAppPayResponse, forKey: "alipay_trade_app_pay_response")
+        }
+        if sign != nil{
+            aCoder.encode(sign, forKey: "sign")
+        }
+        if signType != nil{
+            aCoder.encode(signType, forKey: "sign_type")
+        }
+
+    }
+
+}
+
+class AlipayTradeAppPayResponseMdoel : NSObject, NSCoding, Mappable{
+
+    var appId : String?
+    var charset : String?
+    var code : String?
+    var msg : String?
+    var outTradeNo : String?
+    var sellerId : String?
+    var timestamp : String?
+    var totalAmount : String?
+    var tradeNo : String?
+
+
+    class func newInstance(map: Map) -> Mappable?{
+        return AlipayTradeAppPayResponseMdoel()
+    }
+    required init?(map: Map){}
+    private override init(){}
+
+    func mapping(map: Map)
+    {
+        appId <- map["app_id"]
+        charset <- map["charset"]
+        code <- map["code"]
+        msg <- map["msg"]
+        outTradeNo <- map["out_trade_no"]
+        sellerId <- map["seller_id"]
+        timestamp <- map["timestamp"]
+        totalAmount <- map["total_amount"]
+        tradeNo <- map["trade_no"]
+
+    }
+
+    /**
+     * NSCoding required initializer.
+     * Fills the data from the passed decoder
+     */
+    @objc required init(coder aDecoder: NSCoder)
+    {
+        appId = aDecoder.decodeObject(forKey: "app_id") as? String
+        charset = aDecoder.decodeObject(forKey: "charset") as? String
+        code = aDecoder.decodeObject(forKey: "code") as? String
+        msg = aDecoder.decodeObject(forKey: "msg") as? String
+        outTradeNo = aDecoder.decodeObject(forKey: "out_trade_no") as? String
+        sellerId = aDecoder.decodeObject(forKey: "seller_id") as? String
+        timestamp = aDecoder.decodeObject(forKey: "timestamp") as? String
+        totalAmount = aDecoder.decodeObject(forKey: "total_amount") as? String
+        tradeNo = aDecoder.decodeObject(forKey: "trade_no") as? String
+
+    }
+
+    /**
+     * NSCoding required method.
+     * Encodes mode properties into the decoder
+     */
+    @objc func encode(with aCoder: NSCoder)
+    {
+        if appId != nil{
+            aCoder.encode(appId, forKey: "app_id")
+        }
+        if charset != nil{
+            aCoder.encode(charset, forKey: "charset")
+        }
+        if code != nil{
+            aCoder.encode(code, forKey: "code")
+        }
+        if msg != nil{
+            aCoder.encode(msg, forKey: "msg")
+        }
+        if outTradeNo != nil{
+            aCoder.encode(outTradeNo, forKey: "out_trade_no")
+        }
+        if sellerId != nil{
+            aCoder.encode(sellerId, forKey: "seller_id")
+        }
+        if timestamp != nil{
+            aCoder.encode(timestamp, forKey: "timestamp")
+        }
+        if totalAmount != nil{
+            aCoder.encode(totalAmount, forKey: "total_amount")
+        }
+        if tradeNo != nil{
+            aCoder.encode(tradeNo, forKey: "trade_no")
+        }
+
+    }
+
+}
+
+

+ 63 - 0
RainbowPlanet/RainbowPlanet/Manager/PayManager/PayManager/PayManager.swift

@@ -0,0 +1,63 @@
+//
+//  PayManager.swift
+//  RainbowPlanet
+//
+//  Created by 南鑫林 on 2019/3/8.
+//  Copyright © 2019 南鑫林. All rights reserved.
+//
+
+import UIKit
+
+
+
+class PayManager: NSObject {
+    private static let _sharedInstance = PayManager()
+
+    private override init() {} // 私有化init方法
+
+    class func shared() -> PayManager {
+        return _sharedInstance
+    }
+
+    /// 支付方式
+    ///
+    /// - alipay: 支付宝
+    /// - weixinpay: 微信支付
+    enum PayType {
+        case alipay
+        case weixinpay
+    }
+
+    func pay(payType: PayType) {
+        switch payType {
+        case .alipay:
+            AlipayManager.shared().alipayRequest()
+            break
+        case .weixinpay:
+            WeChatpayManager.shared().weixinRequest()
+            break
+        }
+    }
+
+    /// 回调处理
+    ///
+    /// - Parameter url:
+    /// - Returns:
+    func handleOpen(url:URL) -> Bool {
+
+        if url.host == "safepay" { //支付宝
+            //跳转支付宝钱包进行支付,处理支付结果
+            AlipaySDK.defaultService()?.processOrder(withPaymentResult: url, standbyCallback: { (result) in
+
+            })
+            return true
+        }
+
+        if url.absoluteString.contains("pay"){//微信
+            return WXApi.handleOpen(url, delegate:WeChatpayManager.shared())
+        }
+
+        return false
+    }
+
+}

+ 72 - 0
RainbowPlanet/RainbowPlanet/Manager/PayManager/WeChatpayManager/WeChatpayManager.swift

@@ -0,0 +1,72 @@
+//
+//  WeChatpayManager.swift
+//  RainbowPlanet
+//
+//  Created by 南鑫林 on 2019/3/8.
+//  Copyright © 2019 南鑫林. All rights reserved.
+//
+
+import UIKit
+
+class WeChatpayManager: NSObject {
+    private static let _sharedInstance = WeChatpayManager()
+
+    private override init() {} // 私有化init方法
+
+    class func shared() -> WeChatpayManager {
+        return _sharedInstance
+    }
+
+    typealias SuccessPayBlock = () -> Void
+    var successPayBlock : SuccessPayBlock?
+
+    typealias FailPayBlock = () -> Void
+    var failPayBlock : FailPayBlock?
+
+    // TODO: 需要完善
+    func weixinRequest(){
+
+    }
+
+    func weixinPay(wechatpayOrderModel : WeChatpayOrderModel,successPayBlock : @escaping SuccessPayBlock,failPayBlock: @escaping FailPayBlock) {
+        let payReq = PayReq.init()
+        payReq.openID = wechatpayOrderModel.appId
+        payReq.partnerId = wechatpayOrderModel.partnerId
+        payReq.prepayId = wechatpayOrderModel.partnerId
+        payReq.package = wechatpayOrderModel.package
+        payReq.nonceStr = wechatpayOrderModel.nonceStr
+        payReq.timeStamp = wechatpayOrderModel.timeStamp!
+        payReq.sign = wechatpayOrderModel.sign
+        WXApi.send(payReq)
+    }
+
+}
+
+extension WeChatpayManager : WXApiDelegate {
+
+    func onResp(_ resp: BaseResp) {
+        //  微信支付回调
+        if resp.isKind(of: PayResp.self)
+        {
+            switch resp.errCode
+            {
+            // 成功 展示成功页面
+            case 0 :
+                SwiftProgressHUD.shared().showSuccess("订单支付成功")
+                break
+            // 错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
+            case -1 :
+                SwiftProgressHUD.shared().showError(resp.errStr)
+                break
+            // 用户取消 无需处理。发生场景:用户不支付了,点击取消,返回APP。
+            case -2 :
+                // TODO: 需要完成
+                break
+            //  支付失败
+            default:
+                SwiftProgressHUD.shared().showSuccess(resp.errStr)
+                break
+            }
+        }
+    }
+}

+ 34 - 0
RainbowPlanet/RainbowPlanet/Manager/PayManager/WeChatpayManager/WeChatpayOrderModel.swift

@@ -0,0 +1,34 @@
+//
+//  WeChatpayOrderModel.swift
+//  RainbowPlanet
+//
+//  Created by 南鑫林 on 2019/3/8.
+//  Copyright © 2019 南鑫林. All rights reserved.
+//
+
+import UIKit
+
+class WeChatpayOrderModel: NSObject {
+
+    /// 微信开放平台审核通过的应用APPID 应用ID
+    var appId : String = ""
+
+    /// 微信支付分配的商户号 = 商户号
+    var partnerId : String = ""
+
+    /// 微信返回的支付交易会话ID 预支付交易会话ID
+    var prepayId : String = ""
+
+    /// 扩展字段 暂填写固定值Sign=WXPay
+    var package : String = "Sign=WXPay"
+
+    /// 随机字符串 随机字符串,不长于32位。
+    var nonceStr : String = ""
+
+    /// 时间戳
+    var timeStamp : UInt32?
+
+    /// 签名
+    var sign : String = ""
+
+}

+ 0 - 1
RainbowPlanet/RainbowPlanet/Modules/ShoppingCartModule/ShoppingCart/ViewController/ShoppingCartViewController.swift

@@ -16,7 +16,6 @@ class ShoppingCartViewController: BaseViewController {
         // Do any additional setup after loading the view.
         // Do any additional setup after loading the view.
     }
     }
 
 
-
     /*
     /*
     // MARK: - Navigation
     // MARK: - Navigation
 
 

+ 9 - 4
RainbowPlanet/RainbowPlanet/Modules/ShoppingCartModule/ShoppingCart/ViewController/ShoppingCartViewController.xib

@@ -1,12 +1,16 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <device id="retina4_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
     <dependencies>
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     </dependencies>
     <objects>
     <objects>
-        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="ShoppingCartViewController" customModuleProvider="target">
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="ShoppingCartViewController" customModule="RainbowPlanet" customModuleProvider="target">
             <connections>
             <connections>
                 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
                 <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
             </connections>
             </connections>
@@ -17,6 +21,7 @@
             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
             <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
             <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
             <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
             <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/>
+            <point key="canvasLocation" x="-14" y="54"/>
         </view>
         </view>
     </objects>
     </objects>
 </document>
 </document>