Browse Source

添加IOS对接文档

benson 6 years ago
parent
commit
20739f7959
45 changed files with 2208 additions and 6 deletions
  1. 33 5
      AllPay在线支付接入规范文档.md
  2. 1 1
      v5/android/Android端控件支付产品接口规范文档.md
  3. BIN
      v5/ios/Demo.zip
  4. 785 0
      v5/ios/Demo/Demo.xcodeproj/project.pbxproj
  5. 7 0
      v5/ios/Demo/Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  6. 8 0
      v5/ios/Demo/Demo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
  7. 5 0
      v5/ios/Demo/Demo.xcodeproj/project.xcworkspace/xcuserdata/bensonzhang.xcuserdatad/IDEFindNavigatorScopes.plist
  8. BIN
      v5/ios/Demo/Demo.xcodeproj/project.xcworkspace/xcuserdata/bensonzhang.xcuserdatad/UserInterfaceState.xcuserstate
  9. 111 0
      v5/ios/Demo/Demo.xcodeproj/xcuserdata/bensonzhang.xcuserdatad/xcschemes/Demo.xcscheme
  10. 32 0
      v5/ios/Demo/Demo.xcodeproj/xcuserdata/bensonzhang.xcuserdatad/xcschemes/xcschememanagement.plist
  11. 38 0
      v5/ios/Demo/Demo/AllPayRequest.h
  12. 141 0
      v5/ios/Demo/Demo/AllPayRequest.m
  13. 17 0
      v5/ios/Demo/Demo/AppDelegate.h
  14. 63 0
      v5/ios/Demo/Demo/AppDelegate.m
  15. 98 0
      v5/ios/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Contents.json
  16. 27 0
      v5/ios/Demo/Demo/Base.lproj/LaunchScreen.storyboard
  17. 27 0
      v5/ios/Demo/Demo/Base.lproj/Main.storyboard
  18. 15 0
      v5/ios/Demo/Demo/DateUtil.h
  19. 23 0
      v5/ios/Demo/Demo/DateUtil.m
  20. 12 0
      v5/ios/Demo/Demo/Demo.entitlements
  21. 83 0
      v5/ios/Demo/Demo/Info.plist
  22. 31 0
      v5/ios/Demo/Demo/PayOrder.h
  23. 13 0
      v5/ios/Demo/Demo/PayOrder.m
  24. 16 0
      v5/ios/Demo/Demo/SignUtil.h
  25. 47 0
      v5/ios/Demo/Demo/SignUtil.m
  26. 15 0
      v5/ios/Demo/Demo/ViewController.h
  27. 168 0
      v5/ios/Demo/Demo/ViewController.m
  28. BIN
      v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.bundle/bar@2x.png
  29. BIN
      v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.bundle/refresh@2x.png
  30. BIN
      v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.bundle/refresh_click@2x.png
  31. BIN
      v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.bundle/shutdown@2x.png
  32. BIN
      v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.bundle/shutdown_click@2x.png
  33. BIN
      v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.framework/AlipaySDK
  34. 33 0
      v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.framework/Headers/APayAuthInfo.h
  35. 177 0
      v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.framework/Headers/AlipaySDK.h
  36. BIN
      v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.framework/Info.plist
  37. BIN
      v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.framework/en.lproj/InfoPlist.strings
  38. BIN
      v5/ios/Demo/Demo/allpaysdk/AliModule/libAliModule.a
  39. 18 0
      v5/ios/Demo/Demo/allpaysdk/AllPaySDK.h
  40. BIN
      v5/ios/Demo/Demo/allpaysdk/AppleModule/libAppleModule.a
  41. BIN
      v5/ios/Demo/Demo/allpaysdk/UPModule/libUPModule.a
  42. BIN
      v5/ios/Demo/Demo/allpaysdk/WXModule/libWXModule.a
  43. BIN
      v5/ios/Demo/Demo/allpaysdk/libAllPaySDK.a
  44. 16 0
      v5/ios/Demo/Demo/main.m
  45. 148 0
      v5/ios/iOS端控件支付产品接口规范文档.md

+ 33 - 5
AllPay在线支付接入规范文档.md

@@ -264,6 +264,26 @@ AllPay 为客户提供统一的API接入,以帮助客户实 现快速、安全
 | RespMsg    | String | M    | 应答消息,全部为英文字符                           |
 | sdk_params | String | O    | 小程序支付所需参数(Json字符串) 应答码 00 返回该字段 |
 
+
+
+5.APP支付
+
+ 消费接口专属字段
+
+| 参数      | 类型   | 属性 | 描述  |
+| --------- | ------ | ---- | ----- |
+| tradeFrom | String | M    | "APP" |
+
+应答报文:
+
+| 参数     | 类型   | 属性 | 描述                                                      |
+| -------- | ------ | ---- | --------------------------------------------------------- |
+| RespCode | String | M    | 应答码 00-成功                                            |
+| RespMsg  | String | M    | 应答消息                                                  |
+| tn       | String | O    | 交易流水号,RespCode为“00”时返回,作为调起 sdk 支付的参数 |
+
+##### 
+
 ##### 5.2 CA渠道
 
 1.CA APP支付
@@ -276,10 +296,10 @@ AllPay 为客户提供统一的API接入,以帮助客户实 现快速、安全
 
 应答报文:
 
-| 参数     | 类型   | 属性 | 描述                                                     |
-| -------- | ------ | ---- | -------------------------------------------------------- |
-| RespCode | String | M    | 应答码 00-成功                                           |
-| RespMsg  | String | M    | 应答消息,全部为英文字符                                 |
+| 参数     | 类型   | 属性 | 描述                                                      |
+| -------- | ------ | ---- | --------------------------------------------------------- |
+| RespCode | String | M    | 应答码 00-成功                                            |
+| RespMsg  | String | M    | 应答消息                                                  |
 | tn       | String | O    | 交易流水号,RespCode为“00”时返回,作为调起 sdk 支付的参数 |
 
  获取到tn后,根据[安卓对接文档](https://git.allpayx.com/OpenAPI/common/src/master/v5/android/Android%E7%AB%AF%E6%8E%A7%E4%BB%B6%E6%94%AF%E4%BB%98%E4%BA%A7%E5%93%81%E6%8E%A5%E5%8F%A3%E8%A7%84%E8%8C%83%E6%96%87%E6%A1%A3.md)调用sdk进行支付
@@ -307,6 +327,14 @@ AllPay 为客户提供统一的API接入,以帮助客户实 现快速、安全
 | P4     | 功能不支持  |
 | P5     | 渠道返回错误  |
 
-#### 7.技术支持
+#### 7.SDK下载
+
+安卓SDK对接文档地址:[安卓SDK](https://git.allpayx.com/OpenAPI/common/src/master/v5/android/Android%E7%AB%AF%E6%8E%A7%E4%BB%B6%E6%94%AF%E4%BB%98%E4%BA%A7%E5%93%81%E6%8E%A5%E5%8F%A3%E8%A7%84%E8%8C%83%E6%96%87%E6%A1%A3.md)
+
+iOS SDK对接文档地址:[iOS SDK](https://git.allpayx.com/OpenAPI/common/src/master/v5/ios/iOS%E7%AB%AF%E6%8E%A7%E4%BB%B6%E6%94%AF%E4%BB%98%E4%BA%A7%E5%93%81%E6%8E%A5%E5%8F%A3%E8%A7%84%E8%8C%83%E6%96%87%E6%A1%A3.md)
+
+
+
+#### 8.技术支持
 
 如果您在调试时遇到问题,请与我们联系:support@allpayx.com

+ 1 - 1
v5/android/Android端控件支付产品接口规范文档.md

@@ -3,7 +3,7 @@
 [上海偶可贝网络科技有限公司](https://www.allpayx.com)
 
 * 版本信息:中文 V5.0.0
-* 更新时间:2019 年1
+* 更新时间:2019 年3
 
 #### 1.概述
 

BIN
v5/ios/Demo.zip


+ 785 - 0
v5/ios/Demo/Demo.xcodeproj/project.pbxproj

@@ -0,0 +1,785 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		810F58D222323946000A30BA /* libAllPaySDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 810F58D122323946000A30BA /* libAllPaySDK.a */; };
+		81232DC120DCD5C200B78E71 /* libUPModule.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 81232DC020DCD5C200B78E71 /* libUPModule.a */; };
+		81232DC420DCD83500B78E71 /* libAppleModule.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 81232DC320DCD83500B78E71 /* libAppleModule.a */; };
+		81232DC620DCD95400B78E71 /* PassKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81232DC520DCD95300B78E71 /* PassKit.framework */; };
+		81232DCB20DCDC5100B78E71 /* AlipaySDK.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 81232DC820DCDC5100B78E71 /* AlipaySDK.bundle */; };
+		81232DCC20DCDC5100B78E71 /* libAliModule.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 81232DC920DCDC5100B78E71 /* libAliModule.a */; };
+		81232DCD20DCDC5100B78E71 /* AlipaySDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81232DCA20DCDC5100B78E71 /* AlipaySDK.framework */; };
+		8139EE981BFEE97F0061D7EA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8139EE971BFEE97F0061D7EA /* main.m */; };
+		8139EE9B1BFEE97F0061D7EA /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8139EE9A1BFEE97F0061D7EA /* AppDelegate.m */; };
+		8139EE9E1BFEE97F0061D7EA /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8139EE9D1BFEE97F0061D7EA /* ViewController.m */; };
+		8139EEA11BFEE97F0061D7EA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8139EE9F1BFEE97F0061D7EA /* Main.storyboard */; };
+		8139EEA31BFEE97F0061D7EA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8139EEA21BFEE97F0061D7EA /* Assets.xcassets */; };
+		8139EEA61BFEE97F0061D7EA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8139EEA41BFEE97F0061D7EA /* LaunchScreen.storyboard */; };
+		8139EED71BFEF1250061D7EA /* AllPayRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8139EED01BFEF1250061D7EA /* AllPayRequest.m */; };
+		8139EED81BFEF1250061D7EA /* DateUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8139EED21BFEF1250061D7EA /* DateUtil.m */; };
+		8139EED91BFEF1250061D7EA /* PayOrder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8139EED41BFEF1250061D7EA /* PayOrder.m */; };
+		8139EEDA1BFEF1250061D7EA /* SignUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 8139EED61BFEF1250061D7EA /* SignUtil.m */; };
+		81425F831C055722007CA494 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81425F821C055722007CA494 /* CoreGraphics.framework */; };
+		81425F851C055757007CA494 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81425F841C055757007CA494 /* CoreLocation.framework */; };
+		816ACAD11BFF014800F4EC4F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 816ACAD01BFF014800F4EC4F /* QuartzCore.framework */; };
+		816ACAD31BFF019300F4EC4F /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 816ACAD21BFF019300F4EC4F /* Security.framework */; };
+		816ACAD71BFF024E00F4EC4F /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 816ACAD61BFF024E00F4EC4F /* libsqlite3.tbd */; };
+		816ACAD91BFF025B00F4EC4F /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 816ACAD81BFF025B00F4EC4F /* libc++.tbd */; };
+		817D550C21B7B7AC0065F816 /* libWXModule.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 817D550B21B7B7AC0065F816 /* libWXModule.a */; };
+		818408831DE7EE2800DB194B /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81B2095A1CE481F6007E3534 /* CoreTelephony.framework */; };
+		8196CBCD1DFE92C3002D7454 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8196CBCC1DFE92C3002D7454 /* CoreMotion.framework */; };
+		8199773F1D34D3C400266819 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8199773E1D34D3C400266819 /* JavaScriptCore.framework */; };
+		81D9AFAB20747216000B51A7 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81425F801C055712007CA494 /* CFNetwork.framework */; };
+		81D9AFAC20747223000B51A7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 816ACACE1BFF013D00F4EC4F /* SystemConfiguration.framework */; };
+		81D9AFAD20747230000B51A7 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 816ACAD41BFF023200F4EC4F /* libz.tbd */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+		8139EEAD1BFEE9800061D7EA /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 8139EE8B1BFEE97F0061D7EA /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 8139EE921BFEE97F0061D7EA;
+			remoteInfo = Demo;
+		};
+		8139EEB81BFEE9800061D7EA /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 8139EE8B1BFEE97F0061D7EA /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 8139EE921BFEE97F0061D7EA;
+			remoteInfo = Demo;
+		};
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		81C5BB8C208DEA1C00972A63 /* Embed Frameworks */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 10;
+			files = (
+			);
+			name = "Embed Frameworks";
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		810F58D122323946000A30BA /* libAllPaySDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libAllPaySDK.a; sourceTree = "<group>"; };
+		81232DC020DCD5C200B78E71 /* libUPModule.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libUPModule.a; sourceTree = "<group>"; };
+		81232DC320DCD83500B78E71 /* libAppleModule.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libAppleModule.a; sourceTree = "<group>"; };
+		81232DC520DCD95300B78E71 /* PassKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PassKit.framework; path = System/Library/Frameworks/PassKit.framework; sourceTree = SDKROOT; };
+		81232DC820DCDC5100B78E71 /* AlipaySDK.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = AlipaySDK.bundle; sourceTree = "<group>"; };
+		81232DC920DCDC5100B78E71 /* libAliModule.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libAliModule.a; sourceTree = "<group>"; };
+		81232DCA20DCDC5100B78E71 /* AlipaySDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AlipaySDK.framework; sourceTree = "<group>"; };
+		81352D831C87D481003C355E /* Demo.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Demo.entitlements; sourceTree = "<group>"; };
+		8139EE931BFEE97F0061D7EA /* Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Demo.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		8139EE971BFEE97F0061D7EA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		8139EE991BFEE97F0061D7EA /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
+		8139EE9A1BFEE97F0061D7EA /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
+		8139EE9C1BFEE97F0061D7EA /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
+		8139EE9D1BFEE97F0061D7EA /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
+		8139EEA01BFEE97F0061D7EA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
+		8139EEA21BFEE97F0061D7EA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+		8139EEA51BFEE97F0061D7EA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
+		8139EEA71BFEE97F0061D7EA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		8139EEAC1BFEE9800061D7EA /* DemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+		8139EEB71BFEE9800061D7EA /* DemoUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DemoUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+		8139EECF1BFEF1250061D7EA /* AllPayRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AllPayRequest.h; sourceTree = "<group>"; };
+		8139EED01BFEF1250061D7EA /* AllPayRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AllPayRequest.m; sourceTree = "<group>"; };
+		8139EED11BFEF1250061D7EA /* DateUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DateUtil.h; sourceTree = "<group>"; };
+		8139EED21BFEF1250061D7EA /* DateUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DateUtil.m; sourceTree = "<group>"; };
+		8139EED31BFEF1250061D7EA /* PayOrder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PayOrder.h; sourceTree = "<group>"; };
+		8139EED41BFEF1250061D7EA /* PayOrder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PayOrder.m; sourceTree = "<group>"; };
+		8139EED51BFEF1250061D7EA /* SignUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SignUtil.h; sourceTree = "<group>"; };
+		8139EED61BFEF1250061D7EA /* SignUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SignUtil.m; sourceTree = "<group>"; };
+		81425F801C055712007CA494 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
+		81425F821C055722007CA494 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+		81425F841C055757007CA494 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
+		816ACACE1BFF013D00F4EC4F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
+		816ACAD01BFF014800F4EC4F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+		816ACAD21BFF019300F4EC4F /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
+		816ACAD41BFF023200F4EC4F /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
+		816ACAD61BFF024E00F4EC4F /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; };
+		816ACAD81BFF025B00F4EC4F /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
+		817D550B21B7B7AC0065F816 /* libWXModule.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libWXModule.a; sourceTree = "<group>"; };
+		8196CB9C1DFE8B48002D7454 /* AllPaySDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AllPaySDK.h; sourceTree = "<group>"; };
+		8196CBCC1DFE92C3002D7454 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
+		8199773E1D34D3C400266819 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
+		81B2095A1CE481F6007E3534 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; };
+		81C5BB80208DD91F00972A63 /* Easebuzz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Easebuzz.framework; path = Demo/allpaysdk/EBModule/Easebuzz.framework; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		8139EE901BFEE97F0061D7EA /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				81232DC620DCD95400B78E71 /* PassKit.framework in Frameworks */,
+				81232DCD20DCDC5100B78E71 /* AlipaySDK.framework in Frameworks */,
+				81232DCC20DCDC5100B78E71 /* libAliModule.a in Frameworks */,
+				81D9AFAD20747230000B51A7 /* libz.tbd in Frameworks */,
+				81D9AFAC20747223000B51A7 /* SystemConfiguration.framework in Frameworks */,
+				81D9AFAB20747216000B51A7 /* CFNetwork.framework in Frameworks */,
+				810F58D222323946000A30BA /* libAllPaySDK.a in Frameworks */,
+				8196CBCD1DFE92C3002D7454 /* CoreMotion.framework in Frameworks */,
+				817D550C21B7B7AC0065F816 /* libWXModule.a in Frameworks */,
+				818408831DE7EE2800DB194B /* CoreTelephony.framework in Frameworks */,
+				8199773F1D34D3C400266819 /* JavaScriptCore.framework in Frameworks */,
+				81232DC420DCD83500B78E71 /* libAppleModule.a in Frameworks */,
+				81425F851C055757007CA494 /* CoreLocation.framework in Frameworks */,
+				81425F831C055722007CA494 /* CoreGraphics.framework in Frameworks */,
+				816ACAD91BFF025B00F4EC4F /* libc++.tbd in Frameworks */,
+				816ACAD71BFF024E00F4EC4F /* libsqlite3.tbd in Frameworks */,
+				816ACAD31BFF019300F4EC4F /* Security.framework in Frameworks */,
+				81232DC120DCD5C200B78E71 /* libUPModule.a in Frameworks */,
+				816ACAD11BFF014800F4EC4F /* QuartzCore.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		8139EEA91BFEE9800061D7EA /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		8139EEB41BFEE9800061D7EA /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		81232DBF20DCD5C200B78E71 /* UPModule */ = {
+			isa = PBXGroup;
+			children = (
+				81232DC020DCD5C200B78E71 /* libUPModule.a */,
+			);
+			path = UPModule;
+			sourceTree = "<group>";
+		};
+		81232DC220DCD83500B78E71 /* AppleModule */ = {
+			isa = PBXGroup;
+			children = (
+				81232DC320DCD83500B78E71 /* libAppleModule.a */,
+			);
+			path = AppleModule;
+			sourceTree = "<group>";
+		};
+		81232DC720DCDC5100B78E71 /* AliModule */ = {
+			isa = PBXGroup;
+			children = (
+				81232DC820DCDC5100B78E71 /* AlipaySDK.bundle */,
+				81232DC920DCDC5100B78E71 /* libAliModule.a */,
+				81232DCA20DCDC5100B78E71 /* AlipaySDK.framework */,
+			);
+			path = AliModule;
+			sourceTree = "<group>";
+		};
+		8139EE8A1BFEE97F0061D7EA = {
+			isa = PBXGroup;
+			children = (
+				8199773E1D34D3C400266819 /* JavaScriptCore.framework */,
+				81B2095A1CE481F6007E3534 /* CoreTelephony.framework */,
+				81425F841C055757007CA494 /* CoreLocation.framework */,
+				81425F821C055722007CA494 /* CoreGraphics.framework */,
+				81425F801C055712007CA494 /* CFNetwork.framework */,
+				816ACAD81BFF025B00F4EC4F /* libc++.tbd */,
+				816ACAD61BFF024E00F4EC4F /* libsqlite3.tbd */,
+				816ACAD41BFF023200F4EC4F /* libz.tbd */,
+				816ACAD21BFF019300F4EC4F /* Security.framework */,
+				816ACAD01BFF014800F4EC4F /* QuartzCore.framework */,
+				816ACACE1BFF013D00F4EC4F /* SystemConfiguration.framework */,
+				8139EE951BFEE97F0061D7EA /* Demo */,
+				8139EE941BFEE97F0061D7EA /* Products */,
+				8196CBCB1DFE92C3002D7454 /* Frameworks */,
+			);
+			sourceTree = "<group>";
+		};
+		8139EE941BFEE97F0061D7EA /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				8139EE931BFEE97F0061D7EA /* Demo.app */,
+				8139EEAC1BFEE9800061D7EA /* DemoTests.xctest */,
+				8139EEB71BFEE9800061D7EA /* DemoUITests.xctest */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		8139EE951BFEE97F0061D7EA /* Demo */ = {
+			isa = PBXGroup;
+			children = (
+				81352D831C87D481003C355E /* Demo.entitlements */,
+				8139EEDC1BFEF13A0061D7EA /* Util */,
+				8139EEDB1BFEF12D0061D7EA /* Model */,
+				8139EE991BFEE97F0061D7EA /* AppDelegate.h */,
+				8139EE9A1BFEE97F0061D7EA /* AppDelegate.m */,
+				8196CB971DFE8B48002D7454 /* allpaysdk */,
+				8139EE9C1BFEE97F0061D7EA /* ViewController.h */,
+				8139EE9D1BFEE97F0061D7EA /* ViewController.m */,
+				8139EE9F1BFEE97F0061D7EA /* Main.storyboard */,
+				8139EEA21BFEE97F0061D7EA /* Assets.xcassets */,
+				8139EEA41BFEE97F0061D7EA /* LaunchScreen.storyboard */,
+				8139EEA71BFEE97F0061D7EA /* Info.plist */,
+				8139EE961BFEE97F0061D7EA /* Supporting Files */,
+			);
+			path = Demo;
+			sourceTree = "<group>";
+		};
+		8139EE961BFEE97F0061D7EA /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				8139EE971BFEE97F0061D7EA /* main.m */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
+		8139EEDB1BFEF12D0061D7EA /* Model */ = {
+			isa = PBXGroup;
+			children = (
+				8139EED31BFEF1250061D7EA /* PayOrder.h */,
+				8139EED41BFEF1250061D7EA /* PayOrder.m */,
+			);
+			name = Model;
+			sourceTree = "<group>";
+		};
+		8139EEDC1BFEF13A0061D7EA /* Util */ = {
+			isa = PBXGroup;
+			children = (
+				8139EED11BFEF1250061D7EA /* DateUtil.h */,
+				8139EED21BFEF1250061D7EA /* DateUtil.m */,
+				8139EECF1BFEF1250061D7EA /* AllPayRequest.h */,
+				8139EED01BFEF1250061D7EA /* AllPayRequest.m */,
+				8139EED51BFEF1250061D7EA /* SignUtil.h */,
+				8139EED61BFEF1250061D7EA /* SignUtil.m */,
+			);
+			name = Util;
+			sourceTree = "<group>";
+		};
+		817D550A21B7B7AC0065F816 /* WXModule */ = {
+			isa = PBXGroup;
+			children = (
+				817D550B21B7B7AC0065F816 /* libWXModule.a */,
+			);
+			path = WXModule;
+			sourceTree = "<group>";
+		};
+		8196CB971DFE8B48002D7454 /* allpaysdk */ = {
+			isa = PBXGroup;
+			children = (
+				810F58D122323946000A30BA /* libAllPaySDK.a */,
+				817D550A21B7B7AC0065F816 /* WXModule */,
+				81232DC720DCDC5100B78E71 /* AliModule */,
+				81232DC220DCD83500B78E71 /* AppleModule */,
+				81232DBF20DCD5C200B78E71 /* UPModule */,
+				8196CB9C1DFE8B48002D7454 /* AllPaySDK.h */,
+			);
+			path = allpaysdk;
+			sourceTree = "<group>";
+		};
+		8196CBCB1DFE92C3002D7454 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				81232DC520DCD95300B78E71 /* PassKit.framework */,
+				81C5BB80208DD91F00972A63 /* Easebuzz.framework */,
+				8196CBCC1DFE92C3002D7454 /* CoreMotion.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		8139EE921BFEE97F0061D7EA /* Demo */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 8139EEC01BFEE9800061D7EA /* Build configuration list for PBXNativeTarget "Demo" */;
+			buildPhases = (
+				8139EE8F1BFEE97F0061D7EA /* Sources */,
+				8139EE901BFEE97F0061D7EA /* Frameworks */,
+				8139EE911BFEE97F0061D7EA /* Resources */,
+				81C5BB8C208DEA1C00972A63 /* Embed Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = Demo;
+			productName = Demo;
+			productReference = 8139EE931BFEE97F0061D7EA /* Demo.app */;
+			productType = "com.apple.product-type.application";
+		};
+		8139EEAB1BFEE9800061D7EA /* DemoTests */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 8139EEC31BFEE9800061D7EA /* Build configuration list for PBXNativeTarget "DemoTests" */;
+			buildPhases = (
+				8139EEA81BFEE9800061D7EA /* Sources */,
+				8139EEA91BFEE9800061D7EA /* Frameworks */,
+				8139EEAA1BFEE9800061D7EA /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				8139EEAE1BFEE9800061D7EA /* PBXTargetDependency */,
+			);
+			name = DemoTests;
+			productName = DemoTests;
+			productReference = 8139EEAC1BFEE9800061D7EA /* DemoTests.xctest */;
+			productType = "com.apple.product-type.bundle.unit-test";
+		};
+		8139EEB61BFEE9800061D7EA /* DemoUITests */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 8139EEC61BFEE9800061D7EA /* Build configuration list for PBXNativeTarget "DemoUITests" */;
+			buildPhases = (
+				8139EEB31BFEE9800061D7EA /* Sources */,
+				8139EEB41BFEE9800061D7EA /* Frameworks */,
+				8139EEB51BFEE9800061D7EA /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				8139EEB91BFEE9800061D7EA /* PBXTargetDependency */,
+			);
+			name = DemoUITests;
+			productName = DemoUITests;
+			productReference = 8139EEB71BFEE9800061D7EA /* DemoUITests.xctest */;
+			productType = "com.apple.product-type.bundle.ui-testing";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		8139EE8B1BFEE97F0061D7EA /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0940;
+				ORGANIZATIONNAME = xunlian;
+				TargetAttributes = {
+					8139EE921BFEE97F0061D7EA = {
+						CreatedOnToolsVersion = 7.1.1;
+						DevelopmentTeam = 3K8PWND77D;
+						ProvisioningStyle = Automatic;
+						SystemCapabilities = {
+							com.apple.ApplePay = {
+								enabled = 1;
+							};
+							com.apple.OMC = {
+								enabled = 1;
+							};
+							com.apple.Wallet = {
+								enabled = 0;
+							};
+						};
+					};
+					8139EEAB1BFEE9800061D7EA = {
+						CreatedOnToolsVersion = 7.1.1;
+						DevelopmentTeam = 37FXGKDAMM;
+						TestTargetID = 8139EE921BFEE97F0061D7EA;
+					};
+					8139EEB61BFEE9800061D7EA = {
+						CreatedOnToolsVersion = 7.1.1;
+						DevelopmentTeam = 37FXGKDAMM;
+						TestTargetID = 8139EE921BFEE97F0061D7EA;
+					};
+				};
+			};
+			buildConfigurationList = 8139EE8E1BFEE97F0061D7EA /* Build configuration list for PBXProject "Demo" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+				Base,
+			);
+			mainGroup = 8139EE8A1BFEE97F0061D7EA;
+			productRefGroup = 8139EE941BFEE97F0061D7EA /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				8139EE921BFEE97F0061D7EA /* Demo */,
+				8139EEAB1BFEE9800061D7EA /* DemoTests */,
+				8139EEB61BFEE9800061D7EA /* DemoUITests */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+		8139EE911BFEE97F0061D7EA /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8139EEA61BFEE97F0061D7EA /* LaunchScreen.storyboard in Resources */,
+				8139EEA31BFEE97F0061D7EA /* Assets.xcassets in Resources */,
+				81232DCB20DCDC5100B78E71 /* AlipaySDK.bundle in Resources */,
+				8139EEA11BFEE97F0061D7EA /* Main.storyboard in Resources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		8139EEAA1BFEE9800061D7EA /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		8139EEB51BFEE9800061D7EA /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+		8139EE8F1BFEE97F0061D7EA /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				8139EE9E1BFEE97F0061D7EA /* ViewController.m in Sources */,
+				8139EED81BFEF1250061D7EA /* DateUtil.m in Sources */,
+				8139EE9B1BFEE97F0061D7EA /* AppDelegate.m in Sources */,
+				8139EEDA1BFEF1250061D7EA /* SignUtil.m in Sources */,
+				8139EED71BFEF1250061D7EA /* AllPayRequest.m in Sources */,
+				8139EE981BFEE97F0061D7EA /* main.m in Sources */,
+				8139EED91BFEF1250061D7EA /* PayOrder.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		8139EEA81BFEE9800061D7EA /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		8139EEB31BFEE9800061D7EA /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+		8139EEAE1BFEE9800061D7EA /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 8139EE921BFEE97F0061D7EA /* Demo */;
+			targetProxy = 8139EEAD1BFEE9800061D7EA /* PBXContainerItemProxy */;
+		};
+		8139EEB91BFEE9800061D7EA /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 8139EE921BFEE97F0061D7EA /* Demo */;
+			targetProxy = 8139EEB81BFEE9800061D7EA /* PBXContainerItemProxy */;
+		};
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+		8139EE9F1BFEE97F0061D7EA /* Main.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				8139EEA01BFEE97F0061D7EA /* Base */,
+			);
+			name = Main.storyboard;
+			sourceTree = "<group>";
+		};
+		8139EEA41BFEE97F0061D7EA /* LaunchScreen.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				8139EEA51BFEE97F0061D7EA /* Base */,
+			);
+			name = LaunchScreen.storyboard;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+		8139EEBE1BFEE9800061D7EA /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = dwarf;
+				ENABLE_BITCODE = YES;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				ENABLE_TESTABILITY = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+				MTL_ENABLE_DEBUG_INFO = YES;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+			};
+			name = Debug;
+		};
+		8139EEBF1BFEE9800061D7EA /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_MODULES = YES;
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+				CLANG_WARN_BOOL_CONVERSION = YES;
+				CLANG_WARN_COMMA = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INFINITE_RECURSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
+				CLANG_WARN_UNREACHABLE_CODE = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COPY_PHASE_STRIP = NO;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				ENABLE_BITCODE = YES;
+				ENABLE_NS_ASSERTIONS = NO;
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_NO_COMMON_BLOCKS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+				GCC_WARN_UNUSED_FUNCTION = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
+				MTL_ENABLE_DEBUG_INFO = NO;
+				SDKROOT = iphoneos;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				VALIDATE_PRODUCT = YES;
+			};
+			name = Release;
+		};
+		8139EEC11BFEE9800061D7EA /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+				CODE_SIGN_ENTITLEMENTS = Demo/Demo.entitlements;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				CODE_SIGN_STYLE = Automatic;
+				DEVELOPMENT_TEAM = 3K8PWND77D;
+				EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE = NO;
+				ENABLE_BITCODE = YES;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/Demo/allpaysdk",
+					"$(PROJECT_DIR)/Demo/allpaysdk/AliModule",
+				);
+				INFOPLIST_FILE = Demo/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 10.2;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/Demo",
+					"$(PROJECT_DIR)/Demo/allpaysdk",
+					"$(PROJECT_DIR)/Demo/allpaysdk/UPModule",
+					"$(PROJECT_DIR)/Demo/allpaysdk/AppleModule",
+					"$(PROJECT_DIR)/Demo/allpaysdk/AliModule",
+					"$(PROJECT_DIR)/Demo/allpaysdk/WXModule",
+				);
+				MACH_O_TYPE = mh_execute;
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_BUNDLE_IDENTIFIER = com.allpay.pay;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE = "";
+				PROVISIONING_PROFILE_SPECIFIER = "";
+			};
+			name = Debug;
+		};
+		8139EEC21BFEE9800061D7EA /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
+				CODE_SIGN_ENTITLEMENTS = Demo/Demo.entitlements;
+				CODE_SIGN_IDENTITY = "iPhone Developer";
+				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				CODE_SIGN_STYLE = Automatic;
+				DEVELOPMENT_TEAM = 3K8PWND77D;
+				EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE = NO;
+				ENABLE_BITCODE = YES;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/Demo/allpaysdk",
+					"$(PROJECT_DIR)/Demo/allpaysdk/AliModule",
+				);
+				INFOPLIST_FILE = Demo/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 10.2;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/Demo",
+					"$(PROJECT_DIR)/Demo/allpaysdk",
+					"$(PROJECT_DIR)/Demo/allpaysdk/UPModule",
+					"$(PROJECT_DIR)/Demo/allpaysdk/AppleModule",
+					"$(PROJECT_DIR)/Demo/allpaysdk/AliModule",
+					"$(PROJECT_DIR)/Demo/allpaysdk/WXModule",
+				);
+				MACH_O_TYPE = mh_execute;
+				OTHER_LDFLAGS = "-ObjC";
+				PRODUCT_BUNDLE_IDENTIFIER = com.allpay.pay;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				PROVISIONING_PROFILE = "";
+				PROVISIONING_PROFILE_SPECIFIER = "";
+			};
+			name = Release;
+		};
+		8139EEC41BFEE9800061D7EA /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				INFOPLIST_FILE = DemoTests/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/DemoTests",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = com.xunlian.DemoTests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Demo.app/Demo";
+			};
+			name = Debug;
+		};
+		8139EEC51BFEE9800061D7EA /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				BUNDLE_LOADER = "$(TEST_HOST)";
+				INFOPLIST_FILE = DemoTests/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/DemoTests",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = com.xunlian.DemoTests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Demo.app/Demo";
+			};
+			name = Release;
+		};
+		8139EEC71BFEE9800061D7EA /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = DemoUITests/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				PRODUCT_BUNDLE_IDENTIFIER = com.xunlian.DemoUITests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				TEST_TARGET_NAME = Demo;
+				USES_XCTRUNNER = YES;
+			};
+			name = Debug;
+		};
+		8139EEC81BFEE9800061D7EA /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				INFOPLIST_FILE = DemoUITests/Info.plist;
+				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
+				PRODUCT_BUNDLE_IDENTIFIER = com.xunlian.DemoUITests;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				TEST_TARGET_NAME = Demo;
+				USES_XCTRUNNER = YES;
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		8139EE8E1BFEE97F0061D7EA /* Build configuration list for PBXProject "Demo" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				8139EEBE1BFEE9800061D7EA /* Debug */,
+				8139EEBF1BFEE9800061D7EA /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		8139EEC01BFEE9800061D7EA /* Build configuration list for PBXNativeTarget "Demo" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				8139EEC11BFEE9800061D7EA /* Debug */,
+				8139EEC21BFEE9800061D7EA /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		8139EEC31BFEE9800061D7EA /* Build configuration list for PBXNativeTarget "DemoTests" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				8139EEC41BFEE9800061D7EA /* Debug */,
+				8139EEC51BFEE9800061D7EA /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		8139EEC61BFEE9800061D7EA /* Build configuration list for PBXNativeTarget "DemoUITests" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				8139EEC71BFEE9800061D7EA /* Debug */,
+				8139EEC81BFEE9800061D7EA /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = 8139EE8B1BFEE97F0061D7EA /* Project object */;
+}

+ 7 - 0
v5/ios/Demo/Demo.xcodeproj/project.xcworkspace/contents.xcworkspacedata

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "self:">
+   </FileRef>
+</Workspace>

+ 8 - 0
v5/ios/Demo/Demo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IDEDidComputeMac32BitWarning</key>
+	<true/>
+</dict>
+</plist>

+ 5 - 0
v5/ios/Demo/Demo.xcodeproj/project.xcworkspace/xcuserdata/bensonzhang.xcuserdatad/IDEFindNavigatorScopes.plist

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<array/>
+</plist>

BIN
v5/ios/Demo/Demo.xcodeproj/project.xcworkspace/xcuserdata/bensonzhang.xcuserdatad/UserInterfaceState.xcuserstate


+ 111 - 0
v5/ios/Demo/Demo.xcodeproj/xcuserdata/bensonzhang.xcuserdatad/xcschemes/Demo.xcscheme

@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "0940"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "8139EE921BFEE97F0061D7EA"
+               BuildableName = "Demo.app"
+               BlueprintName = "Demo"
+               ReferencedContainer = "container:Demo.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES">
+      <Testables>
+         <TestableReference
+            skipped = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "8139EEAB1BFEE9800061D7EA"
+               BuildableName = "DemoTests.xctest"
+               BlueprintName = "DemoTests"
+               ReferencedContainer = "container:Demo.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
+         <TestableReference
+            skipped = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "8139EEB61BFEE9800061D7EA"
+               BuildableName = "DemoUITests.xctest"
+               BlueprintName = "DemoUITests"
+               ReferencedContainer = "container:Demo.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
+      </Testables>
+      <MacroExpansion>
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "8139EE921BFEE97F0061D7EA"
+            BuildableName = "Demo.app"
+            BlueprintName = "Demo"
+            ReferencedContainer = "container:Demo.xcodeproj">
+         </BuildableReference>
+      </MacroExpansion>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </TestAction>
+   <LaunchAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      debugServiceExtension = "internal"
+      allowLocationSimulation = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "8139EE921BFEE97F0061D7EA"
+            BuildableName = "Demo.app"
+            BlueprintName = "Demo"
+            ReferencedContainer = "container:Demo.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+      <AdditionalOptions>
+      </AdditionalOptions>
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Release"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "8139EE921BFEE97F0061D7EA"
+            BuildableName = "Demo.app"
+            BlueprintName = "Demo"
+            ReferencedContainer = "container:Demo.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>

+ 32 - 0
v5/ios/Demo/Demo.xcodeproj/xcuserdata/bensonzhang.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>SchemeUserState</key>
+	<dict>
+		<key>Demo.xcscheme</key>
+		<dict>
+			<key>orderHint</key>
+			<integer>0</integer>
+		</dict>
+	</dict>
+	<key>SuppressBuildableAutocreation</key>
+	<dict>
+		<key>8139EE921BFEE97F0061D7EA</key>
+		<dict>
+			<key>primary</key>
+			<true/>
+		</dict>
+		<key>8139EEAB1BFEE9800061D7EA</key>
+		<dict>
+			<key>primary</key>
+			<true/>
+		</dict>
+		<key>8139EEB61BFEE9800061D7EA</key>
+		<dict>
+			<key>primary</key>
+			<true/>
+		</dict>
+	</dict>
+</dict>
+</plist>

+ 38 - 0
v5/ios/Demo/Demo/AllPayRequest.h

@@ -0,0 +1,38 @@
+//
+//  UPRequest.h
+//  VTPayUPDemo
+//
+//  Created by 司瑞华 on 15/7/29.
+//  Copyright (c) 2015年 __VTPayment__. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+typedef void (^FinishBlock)(id finResponseData);
+typedef void (^FailedBlock)(id faiResponseData);
+
+@interface AllPayRequest : NSObject
+
+@property (strong, nonatomic) NSMutableData      *resultData;
+@property (strong, nonatomic) FinishBlock        finishBlock;
+@property (strong, nonatomic) FailedBlock        failedBlock;
+
+/**
+ *  这个是post请求
+ *
+ *  @param urlStr       要访问的网站  NSString类型
+ *  @param paramters    请求的参数    NSMutableDictionary
+ *  @param succeedBlock 成功时的回调  返回id类型
+ *  @param failedBlock  失败时的回调  返回id类型
+ */
++ (void)postRequestWithURL:(NSString *)urlStr
+                 paramters:(NSMutableDictionary *)paramters
+                   succeed:(FinishBlock)succeedBlock
+                    failed:(FailedBlock)failedBlock;
+
+
+/* md5加密 */
+
++(NSString *) md5: (NSString *) inPutText ;
+
+@end

+ 141 - 0
v5/ios/Demo/Demo/AllPayRequest.m

@@ -0,0 +1,141 @@
+//
+//  UPRequest.m
+//  VTPayUPDemo
+//
+//  Created by 司瑞华 on 15/7/29.
+//  Copyright (c) 2015年 __VTPayment__. All rights reserved.
+//
+
+#import "AllPayRequest.h"
+#import "commonCrypto/CommonDigest.h"
+
+@implementation AllPayRequest
+
+///**
+// *  post请求
+// *
+// *  @param urlStr       要访问的网站  NSString类型
+// *  @param paramters    请求的参数    NSMutableDictionary
+// *  @param succeedBlock 成功时的回调  返回NSString类型
+// *  @param failedBlock  失败时的回调  返回NSString类型
+// */
++(void)postRequestWithURL:(NSString *)urlStr
+                paramters:(NSMutableDictionary *)paramters
+                  succeed:(FinishBlock)succeedBlock
+                   failed:(FailedBlock)failedBlock
+{
+    AllPayRequest * httpRequest = [[AllPayRequest alloc]init];
+    httpRequest.finishBlock = succeedBlock;
+    httpRequest.failedBlock = failedBlock;
+    
+    NSURL * url = [NSURL URLWithString:urlStr];
+    NSMutableURLRequest * request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30];
+    
+    NSString * strField;
+    if (paramters.count>0)
+    {
+        strField = [self dictFieldInfo:paramters];
+    }else
+    {
+        strField = @"";
+    }
+    ///把获得的整个请求字段用utf-8编码一下
+    NSData * data = [strField dataUsingEncoding:NSUTF8StringEncoding];
+    [request setHTTPBody:data];
+    [request setHTTPMethod:@"POST"];
+    
+    NSURLConnection * connection = [[NSURLConnection alloc]initWithRequest:request delegate:httpRequest];
+    [connection start];
+}
+
+// 将字典参数 拼接成一个有 &%@=%@ 的字符串
++(NSString *)dictFieldInfo:(NSMutableDictionary*)dict
+{
+    NSMutableString * Url = [NSMutableString string];
+    NSArray * keys = [dict allKeys];
+    for (int i = 0; i < keys.count; i++)
+    {
+        NSString * string;
+        if (i == 0)
+        {
+            string = [NSString stringWithFormat:@"%@=%@", keys[i],dict[keys[i]]];
+        }else{
+            //拼接时加&
+            string = [NSString stringWithFormat:@"&%@=%@", keys[i],dict[keys[i]]];
+        }
+        [Url appendString:string];
+    }
+    return Url;
+}
+/**
+ *  接收到服务器回应的时回调
+ */
+- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
+{
+    if (!self.resultData)
+    {
+        self.resultData = [[NSMutableData alloc]init];
+    }else
+    {
+        [self.resultData setLength:0];
+    }
+}
+/**
+ *  接收到服务器传输数据的时候调用,此方法根据数据大小执行若干次
+ */
+- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
+{
+    [self.resultData appendData:data];
+}
+/**
+ *  数据传完之后调用此方法
+ */
+- (void)connectionDidFinishLoading:(NSURLConnection *)connection
+{
+    if (self.finishBlock) {
+        self.finishBlock(self.resultData);
+    }
+}
+/**
+ *  网络请求过程中,出现任何错误(断网,连接超时等)会进入此方法
+ */
+- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
+{
+    NSLog(@"network error : %@", [error localizedDescription]);
+    
+    if (self.failedBlock) {
+        self.failedBlock([error localizedDescription]);
+    }
+}
+
+// 将字符串,转化成数组或字典 objectFromJSONStringWithParseOptions
+- (id)dictionaryOrArrayWithJSONSString:(NSString *)jsonString
+{
+    if (jsonString == nil)
+    {
+        return nil;
+    }
+    
+    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
+    return [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableLeaves |  NSJSONReadingMutableContainers error:nil];
+}
+#pragma mark - MD5加密
++(NSString *) md5: (NSString *) inPutText
+{
+    const char *cStr = [inPutText UTF8String];
+    
+    unsigned char result[CC_MD5_DIGEST_LENGTH];
+    
+    CC_MD5(cStr, (CC_LONG)strlen(cStr), result);
+    
+    
+    return [[NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
+             result[0], result[1], result[2], result[3],
+             result[4], result[5], result[6], result[7],
+             result[8], result[9], result[10], result[11],
+             result[12], result[13], result[14], result[15]
+             ] lowercaseString];
+    
+}
+
+@end

+ 17 - 0
v5/ios/Demo/Demo/AppDelegate.h

@@ -0,0 +1,17 @@
+//
+//  AppDelegate.h
+//  Demo
+//
+//  Created by BensonZhang on 15/11/20.
+//  Copyright © 2015年 xunlian. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+
+@end
+

+ 63 - 0
v5/ios/Demo/Demo/AppDelegate.m

@@ -0,0 +1,63 @@
+//
+//  AppDelegate.m
+//  Demo
+//
+//  Created by BensonZhang on 15/11/20.
+//  Copyright © 2015年 xunlian. All rights reserved.
+//
+
+#import "AppDelegate.h"
+#import "allpaysdk/AllPaySDK.h"
+
+@interface AppDelegate ()
+
+@end
+
+@implementation AppDelegate
+
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+   
+    return YES;
+}
+
+-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
+    [AllPaySDK openURL:url];
+    return YES;
+}
+
+-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
+    
+    [AllPaySDK openURL:url];
+    return YES;
+    
+}
+
+-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{
+    [AllPaySDK openURL:url];
+    return YES;
+    
+}
+- (void)applicationWillResignActive:(UIApplication *)application {
+    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+}
+
+- (void)applicationDidEnterBackground:(UIApplication *)application {
+    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
+}
+
+- (void)applicationWillEnterForeground:(UIApplication *)application {
+    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
+}
+
+- (void)applicationDidBecomeActive:(UIApplication *)application {
+    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+}
+
+- (void)applicationWillTerminate:(UIApplication *)application {
+    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+}
+
+@end

+ 98 - 0
v5/ios/Demo/Demo/Assets.xcassets/AppIcon.appiconset/Contents.json

@@ -0,0 +1,98 @@
+{
+  "images" : [
+    {
+      "idiom" : "iphone",
+      "size" : "20x20",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "20x20",
+      "scale" : "3x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "29x29",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "29x29",
+      "scale" : "3x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "40x40",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "40x40",
+      "scale" : "3x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "60x60",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "iphone",
+      "size" : "60x60",
+      "scale" : "3x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "20x20",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "20x20",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "29x29",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "29x29",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "40x40",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "40x40",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "76x76",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "76x76",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "ipad",
+      "size" : "83.5x83.5",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "ios-marketing",
+      "size" : "1024x1024",
+      "scale" : "1x"
+    }
+  ],
+  "info" : {
+    "version" : 1,
+    "author" : "xcode"
+  }
+}

+ 27 - 0
v5/ios/Demo/Demo/Base.lproj/LaunchScreen.storyboard

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9532" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9530"/>
+    </dependencies>
+    <scenes>
+        <!--View Controller-->
+        <scene sceneID="EHf-IW-A2E">
+            <objects>
+                <viewController id="01J-lp-oVM" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/>
+                        <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="53" y="375"/>
+        </scene>
+    </scenes>
+</document>

+ 27 - 0
v5/ios/Demo/Demo/Base.lproj/Main.storyboard

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9060" systemVersion="15B42" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9051"/>
+    </dependencies>
+    <scenes>
+        <!--View Controller-->
+        <scene sceneID="tne-QT-ifu">
+            <objects>
+                <viewController id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
+                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
+                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <animations/>
+                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
+            </objects>
+        </scene>
+    </scenes>
+</document>

+ 15 - 0
v5/ios/Demo/Demo/DateUtil.h

@@ -0,0 +1,15 @@
+//
+//  DateUtil.h
+//  Demo
+//
+//  Created by BensonZhang on 15/11/16.
+//  Copyright © 2015年 xunlian. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface DateUtil : NSObject
+
++(NSString *)getDate:(NSString *)format;
+
+@end

+ 23 - 0
v5/ios/Demo/Demo/DateUtil.m

@@ -0,0 +1,23 @@
+//
+//  DateUtil.m
+//  Demo
+//
+//  Created by BensonZhang on 15/11/16.
+//  Copyright © 2015年 xunlian. All rights reserved.
+//
+
+#import "DateUtil.h"
+
+@implementation DateUtil
+
++(NSString *)getDate:(NSString *)format
+{
+    ///设置标准时间格式
+    NSDate * dateTime = [NSDate date];
+    NSDateFormatter * dateFormatter = [[NSDateFormatter alloc]init];
+    [dateFormatter setDateFormat:format];
+    NSString * formatterTime = [dateFormatter stringFromDate:dateTime];
+    return formatterTime;
+}
+
+@end

+ 12 - 0
v5/ios/Demo/Demo/Demo.entitlements

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>com.apple.developer.in-app-payments</key>
+	<array>
+		<string>merchant.allpay.pay</string>
+		<string>merchant.allpayx.com.test2</string>
+		<string>merchant.allpayx.com.test3</string>
+	</array>
+</dict>
+</plist>

+ 83 - 0
v5/ios/Demo/Demo/Info.plist

@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>en</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleURLTypes</key>
+	<array>
+		<dict>
+			<key>CFBundleTypeRole</key>
+			<string>Editor</string>
+			<key>CFBundleURLName</key>
+			<string>alipay</string>
+			<key>CFBundleURLSchemes</key>
+			<array>
+				<string>com.xxx.xxx</string>
+			</array>
+		</dict>
+		<dict>
+			<key>CFBundleTypeRole</key>
+			<string>Editor</string>
+			<key>CFBundleURLName</key>
+			<string>wxpay</string>
+			<key>CFBundleURLSchemes</key>
+			<array>
+				<string>wx0d48a98252a2fe7a</string>
+			</array>
+		</dict>
+	</array>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+	<key>LSApplicationQueriesSchemes</key>
+	<array>
+		<string>weixin</string>
+		<string>uppaysdk</string>
+		<string>uppaywallet</string>
+		<string>uppayx1</string>
+		<string>uppayx2</string>
+		<string>uppayx3</string>
+	</array>
+	<key>requires iPhone envir Application onment</key>
+	<false/>
+	<key>NSAppTransportSecurity</key>
+	<dict>
+		<key>NSAllowsArbitraryLoads</key>
+		<true/>
+	</dict>
+	<key>UILaunchStoryboardName</key>
+	<string>LaunchScreen</string>
+	<key>UIMainStoryboardFile</key>
+	<string>Main</string>
+	<key>UIRequiredDeviceCapabilities</key>
+	<array>
+		<string>armv7</string>
+	</array>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationPortraitUpsideDown</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+</dict>
+</plist>

+ 31 - 0
v5/ios/Demo/Demo/PayOrder.h

@@ -0,0 +1,31 @@
+//
+//  PayOrder.h
+//  Demo
+//
+//  Created by BensonZhang on 15/11/16.
+//  Copyright © 2015年 xunlian. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface PayOrder : NSObject
+@property (strong, nonatomic) NSString *version;
+@property (strong, nonatomic) NSString *charSet;
+@property (strong, nonatomic) NSString *transType;
+@property (strong, nonatomic) NSString *orderNum;
+@property (strong, nonatomic) NSString *orderAmount;
+@property (strong, nonatomic) NSString *orderCurrency;
+@property (strong, nonatomic) NSString *frontURL;
+@property (strong, nonatomic) NSString *backURL;
+@property (strong, nonatomic) NSString *merReserve;
+@property (strong, nonatomic) NSString *merID;
+@property (strong, nonatomic) NSString *acqID;
+@property (strong, nonatomic) NSString *paymentSchema;
+@property (strong, nonatomic) NSString *transTime;
+@property (strong, nonatomic) NSString *signType;
+@property (strong, nonatomic) NSString *signature;
+@property (strong, nonatomic) NSString *OrderDesc;
+@property (strong, nonatomic) NSString *language;
+@property (strong, nonatomic) NSString *customerId;
+@property (strong, nonatomic) NSString *signKey;
+@end

+ 13 - 0
v5/ios/Demo/Demo/PayOrder.m

@@ -0,0 +1,13 @@
+//
+//  PayOrder.m
+//  Demo
+//
+//  Created by BensonZhang on 15/11/16.
+//  Copyright © 2015年 xunlian. All rights reserved.
+//
+
+#import "PayOrder.h"
+
+@implementation PayOrder
+
+@end

+ 16 - 0
v5/ios/Demo/Demo/SignUtil.h

@@ -0,0 +1,16 @@
+//
+//  SignUtil.h
+//  Demo
+//
+//  Created by BensonZhang on 15/11/16.
+//  Copyright © 2015年 xunlian. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "PayOrder.h"
+
+@interface SignUtil : NSObject
+
++(NSString *)getSign:(NSMutableDictionary*)paramDic;
+
+@end

+ 47 - 0
v5/ios/Demo/Demo/SignUtil.m

@@ -0,0 +1,47 @@
+//
+//  SignUtil.m
+//  Demo
+//
+//  Created by BensonZhang on 15/11/16.
+//  Copyright © 2015年 xunlian. All rights reserved.
+//
+
+#import "SignUtil.h"
+#import "AllPayRequest.h"
+
+@implementation SignUtil
+
++(NSString *)getSign:(NSMutableDictionary*)paramDic{
+    
+    return [SignUtil getMD5:[SignUtil getSignStr:paramDic  signkey:@"2f2c77e3718c47cfb47a89a6fbc9d361"]];
+}
+
++(NSString *)getSignStr:(NSMutableDictionary *)paramDic  signkey:(NSString *)key{
+    
+    NSArray *keys = [paramDic allKeys];
+    NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2){
+        return [obj1 compare:obj2 options:NSNumericSearch];
+    }];
+     NSMutableString *signStr=[[NSMutableString alloc]init];
+    int i=0;
+    for (NSString *categoryId in sortedArray) {
+        if(i>0){
+            [signStr appendString:[NSString stringWithFormat:@"&%@=%@",categoryId,[paramDic objectForKey:categoryId]]];
+        }else{
+            [signStr appendString:[NSString stringWithFormat:@"%@=%@",categoryId,[paramDic objectForKey:categoryId]]];
+        }
+        i++;
+    }
+    [signStr appendString:key];
+       return signStr ;
+}
+
++(NSString *)getMD5:(NSString *)signStr{
+    NSLog(@"%@",signStr);
+    return [AllPayRequest md5:signStr];
+   
+
+}
+
+
+@end

+ 15 - 0
v5/ios/Demo/Demo/ViewController.h

@@ -0,0 +1,15 @@
+//
+//  ViewController.h
+//  Demo
+//
+//  Created by BensonZhang on 15/11/20.
+//  Copyright © 2015年 xunlian. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+@interface ViewController : UIViewController
+
+
+@end
+

+ 168 - 0
v5/ios/Demo/Demo/ViewController.m

@@ -0,0 +1,168 @@
+//
+//  ViewController.m
+//  Demo
+//
+//  Created by BensonZhang on 15/11/13.
+//  Copyright © 2015年 xunlian. All rights reserved.
+//
+
+#import "ViewController.h"
+#import "AllPayRequest.h"
+#import "PayOrder.h"
+#import "DateUtil.h"
+#import "SignUtil.h"
+#import "AllPaySDK.h"
+@interface ViewController ()
+
+
+@end
+
+@implementation ViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+   // [self.view setBackgroundColor:[UIColor yellowColor]];
+    UIButton * btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
+    btn1.tag = 2;
+    btn1.frame = CGRectMake(80, 60, 200, 50);
+    [btn1 setTitle:@"微信支付" forState:UIControlStateNormal];
+    [btn1 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];
+    [self.view addSubview:btn1];
+    
+  
+}
+-(void)btnClick:(UIButton *)btn
+{
+    
+    
+    
+    NSMutableDictionary * paramDic=[[NSMutableDictionary alloc]init];
+    [paramDic setObject:@"VER000000005" forKey:@"version"];
+    [paramDic setObject:@"UTF-8" forKey:@"charSet"];
+    [paramDic setObject:@"PURC" forKey:@"transType"];
+    [paramDic setObject:[DateUtil getDate:@"YYYYMMddHHmmss"] forKey:@"orderNum"];
+    [paramDic setObject:@"1" forKey:@"orderAmount"];
+    [paramDic setObject:@"JPY" forKey:@"orderCurrency"];
+    [paramDic setObject:@"nil" forKey:@"frontURL"];
+    [paramDic setObject:@"http://example.com/example" forKey:@"backURL"];
+    [paramDic setObject:@"nil" forKey:@"merReserve"];
+      [paramDic setObject:@"test商品" forKey:@"goodsInfo"];
+    [paramDic setObject:@"000000000000016" forKey:@"merID"];
+    [paramDic setObject:@"99020344" forKey:@"acqID"];
+    [paramDic setObject:[DateUtil getDate:@"YYYYMMddHHmmss"] forKey:@"transTime"];
+    [paramDic setObject:@"MD5" forKey:@"signType"];
+    
+    NSString *detailInfo = @"IFt7Imdvb2RzX25hbWUiOiLkuIDkuKrlj4jlpKflj4jlnIbnmoToi7nmnpwiLCJxdWFudGl0eSI6IjEifSx7Imdvb2RzX25hbWUiOiLljY7kuLpQMjAgcGx1cyIsInF1YW50aXR5IjoiNCJ9XQ==";
+    
+    
+    [paramDic setObject:detailInfo forKey:@"detailInfo"];
+    [paramDic setObject:@"APP" forKey:@"tradeFrom"];
+    
+    
+    if (btn.tag == 2)//微信
+    {
+          [paramDic setObject:@"WX" forKey:@"paymentSchema"];
+        
+    }
+    [self startPay:paramDic];
+    
+}
+
+-(void)startPay:(NSMutableDictionary*)paramDic
+{
+  [paramDic setObject:[SignUtil getSign:paramDic] forKey:@"signature"];
+    
+ NSString *url = @"https://testapi.allpayx.com/api/unifiedorder";
+    
+   //  NSString *url = @"https://api.allpayx.com/api/unifiedorder";
+    
+    
+    [AllPayRequest postRequestWithURL:url paramters:paramDic succeed:^(id finResponseData)
+     {
+         NSError *error;
+         NSDictionary * diction = [NSJSONSerialization JSONObjectWithData:finResponseData options:NSJSONReadingMutableContainers error:&error];
+         if(!error){
+             NSLog(@"-----输出数据---%@",diction);
+             
+          
+             [AllPaySDK pay:[diction objectForKey:@"tn"] mode:NO   scheme:@"com.xxx.xxx"  ViewController:self  onResult: ^(NSDictionary *resultDic) {
+                 NSData  *jsonData = [NSJSONSerialization dataWithJSONObject:resultDic options:NSJSONWritingPrettyPrinted error:nil];
+                 NSString *message =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
+                 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"支付结果" message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
+                 [alert show];
+                 
+             }];
+            
+             
+             
+         }else{
+             NSString * dataString = [[NSString alloc]initWithData:finResponseData encoding:NSUTF8StringEncoding];
+             NSLog(@"参数出错===\n %@",dataString);
+             
+             
+         }
+         
+         
+         
+     } failed:^(id faiResponseData) {
+        
+     }];
+    
+    
+    
+}
+
+- (NSString *)getCurrentLanguage
+{
+    NSArray *languages = [NSLocale preferredLanguages];
+    NSString *currentLanguage = [languages objectAtIndex:0];
+    NSLog( @"%@" , currentLanguage);
+    return currentLanguage;
+}
+
+
+@end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

BIN
v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.bundle/bar@2x.png


BIN
v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.bundle/refresh@2x.png


BIN
v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.bundle/refresh_click@2x.png


BIN
v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.bundle/shutdown@2x.png


BIN
v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.bundle/shutdown_click@2x.png


BIN
v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.framework/AlipaySDK


+ 33 - 0
v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.framework/Headers/APayAuthInfo.h

@@ -0,0 +1,33 @@
+//
+//  APAuthInfo.h
+//  AliSDKDemo
+//
+//  Created by 方彬 on 14-7-18.
+//  Copyright (c) 2014年 Alipay.com. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface APayAuthInfo : NSObject
+
+@property(nonatomic, copy)NSString *appID;
+@property(nonatomic, copy)NSString *pid;
+@property(nonatomic, copy)NSString *redirectUri;
+
+/**
+ *  初始化AuthInfo
+ *
+ *  @param appIDStr     应用ID
+ *  @param productIDStr 产品码 该商户在aboss签约的产品,用户获取pid获取的参数
+ *  @param pidStr       商户ID   可不填
+ *  @param uriStr       授权的应用回调地址  比如:alidemo://auth
+ *
+ *  @return authinfo实例
+ */
+- (id)initWithAppID:(NSString *)appIDStr
+                pid:(NSString *)pidStr
+        redirectUri:(NSString *)uriStr;
+
+- (NSString *)description;
+- (NSString *)wapDescription;
+@end

+ 177 - 0
v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.framework/Headers/AlipaySDK.h

@@ -0,0 +1,177 @@
+//
+//  AlipaySDK.h
+//  AlipaySDK
+//
+//  Created by 方彬 on 14-4-28.
+//  Copyright (c) 2014年 Alipay. All rights reserved.
+//
+
+
+////////////////////////////////////////////////////////
+////////////////version:2.1  motify:2014.12.24//////////
+///////////////////Merry Christmas=。=//////////////////
+////////////////////////////////////////////////////////
+
+
+#import "APayAuthInfo.h"
+typedef enum {
+    ALIPAY_TIDFACTOR_IMEI,
+    ALIPAY_TIDFACTOR_IMSI,
+    ALIPAY_TIDFACTOR_TID,
+    ALIPAY_TIDFACTOR_CLIENTKEY,
+    ALIPAY_TIDFACTOR_VIMEI,
+    ALIPAY_TIDFACTOR_VIMSI,
+    ALIPAY_TIDFACTOR_CLIENTID,
+    ALIPAY_TIDFACTOR_APDID,
+    ALIPAY_TIDFACTOR_MAX
+} AlipayTidFactor;
+
+typedef void(^CompletionBlock)(NSDictionary *resultDic);
+
+@interface AlipaySDK : NSObject
+
+/**
+ *  创建支付单例服务
+ *
+ *  @return 返回单例对象
+ */
++ (AlipaySDK *)defaultService;
+
+/**
+ *  用于设置SDK使用的window,如果没有自行创建window无需设置此接口
+ */
+@property (nonatomic, weak) UIWindow *targetWindow;
+
+/**
+ *  支付接口
+ *
+ *  @param orderStr       订单信息
+ *  @param schemeStr      调用支付的app注册在info.plist中的scheme
+ *  @param compltionBlock 支付结果回调Block,用于wap支付结果回调(非跳转钱包支付)
+ */
+- (void)payOrder:(NSString *)orderStr
+      fromScheme:(NSString *)schemeStr
+        callback:(CompletionBlock)completionBlock;
+
+/**
+ *  处理钱包或者独立快捷app支付跳回商户app携带的支付结果Url
+ *
+ *  @param resultUrl        支付结果url
+ *  @param completionBlock  支付结果回调
+ */
+- (void)processOrderWithPaymentResult:(NSURL *)resultUrl
+                      standbyCallback:(CompletionBlock)completionBlock;
+
+
+
+/**
+ *  获取交易token。
+ *
+ *  @return 交易token,若无则为空。
+ */
+- (NSString *)fetchTradeToken;
+
+/**
+ *  是否已经使用过
+ *
+ *  @return YES为已经使用过,NO反之
+ */
+- (BOOL)isLogined;
+
+/**
+ *  当前版本号
+ *
+ *  @return 当前版本字符串
+ */
+- (NSString *)currentVersion;
+
+/**
+ *  当前版本号
+ *
+ *  @return tid相关信息
+ */
+- (NSString*)queryTidFactor:(AlipayTidFactor)factor;
+
+/**
+ *  測試所用,realse包无效
+ *
+ *  @param url  测试环境
+ */
+- (void)setUrl:(NSString *)url;
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////h5 拦截支付入口///////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  url order 获取接口
+ *
+ *  @param urlStr     拦截的 url string
+ *
+ *  @return 获取到的url order info
+ */
+- (NSString*)fetchOrderInfoFromH5PayUrl:(NSString*)urlStr;
+
+
+/**
+ *  url支付接口
+ *
+ *  @param orderStr       订单信息
+ *  @param schemeStr      调用支付的app注册在info.plist中的scheme
+ *  @param compltionBlock 支付结果回调Block
+ */
+- (void)payUrlOrder:(NSString *)orderStr
+         fromScheme:(NSString *)schemeStr
+           callback:(CompletionBlock)completionBlock;
+
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////授权1.0//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  快登授权
+ *  @param authInfo         需授权信息
+ *  @param completionBlock  授权结果回调,若在授权过程中,调用方应用被系统终止,则此block无效,
+                            需要调用方在appDelegate中调用processAuthResult:standbyCallback:方法获取授权结果
+ */
+- (void)authWithInfo:(APayAuthInfo *)authInfo
+             callback:(CompletionBlock)completionBlock;
+
+
+/**
+ *  处理授权信息Url
+ *
+ *  @param resultUrl        钱包返回的授权结果url
+ *  @param completionBlock  授权结果回调
+ */
+- (void)processAuthResult:(NSURL *)resultUrl
+          standbyCallback:(CompletionBlock)completionBlock;
+
+//////////////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////授权2.0//////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *  快登授权2.0
+ *
+ *  @param infoStr          授权请求信息字符串
+ *  @param schemeStr        调用授权的app注册在info.plist中的scheme
+ *  @param completionBlock  授权结果回调,若在授权过程中,调用方应用被系统终止,则此block无效,
+                            需要调用方在appDelegate中调用processAuth_V2Result:standbyCallback:方法获取授权结果
+ */
+- (void)auth_V2WithInfo:(NSString *)infoStr
+             fromScheme:(NSString *)schemeStr
+               callback:(CompletionBlock)completionBlock;
+
+/**
+ *  处理授权信息Url
+ *
+ *  @param resultUrl        钱包返回的授权结果url
+ *  @param completionBlock  授权结果回调
+ */
+- (void)processAuth_V2Result:(NSURL *)resultUrl
+             standbyCallback:(CompletionBlock)completionBlock;
+
+@end

BIN
v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.framework/Info.plist


BIN
v5/ios/Demo/Demo/allpaysdk/AliModule/AlipaySDK.framework/en.lproj/InfoPlist.strings


BIN
v5/ios/Demo/Demo/allpaysdk/AliModule/libAliModule.a


+ 18 - 0
v5/ios/Demo/Demo/allpaysdk/AllPaySDK.h

@@ -0,0 +1,18 @@
+//
+//  AllPaySDK.h
+//  AllPaySDK
+//
+//  Created by BensonZhang on 15/11/18.
+//  Copyright © 2015年 xunlian. All rights reserved.
+//
+
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+
+@interface AllPaySDK : NSObject
+
++(void)pay:(NSString *)tn  mode:(BOOL)mode    scheme:(NSString *)schemeStr   ViewController:(UIViewController *)viewController     onResult:(void(^)(NSDictionary * resultDic))onResult;
++(void)openURL:(NSURL *)url;
+@end
+

BIN
v5/ios/Demo/Demo/allpaysdk/AppleModule/libAppleModule.a


BIN
v5/ios/Demo/Demo/allpaysdk/UPModule/libUPModule.a


BIN
v5/ios/Demo/Demo/allpaysdk/WXModule/libWXModule.a


BIN
v5/ios/Demo/Demo/allpaysdk/libAllPaySDK.a


+ 16 - 0
v5/ios/Demo/Demo/main.m

@@ -0,0 +1,16 @@
+//
+//  main.m
+//  Demo
+//
+//  Created by BensonZhang on 15/11/20.
+//  Copyright © 2015年 xunlian. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "AppDelegate.h"
+
+int main(int argc, char * argv[]) {
+    @autoreleasepool {
+        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
+    }
+}

+ 148 - 0
v5/ios/iOS端控件支付产品接口规范文档.md

@@ -0,0 +1,148 @@
+# iOS端控件支付产品接口规范文档5.0.0
+
+[上海偶可贝网络科技有限公司](https://www.allpayx.com)
+
+* 版本信息:中文 V5.0.0
+* 更新时间:2019 年3 月
+
+#### 1.概述
+
+AllPay 为基于移动端 APP 支付的客户提供接入插件(下文简称“SDK”),以帮助客户实现快速、安全、集中式的接入支付渠道。
+
+#### 2.交易流程 
+  ![image](https://git.allpayx.com/OpenAPI/b2c/raw/master/images/moble_sdk_flowsheet.png)
+
+#### 3. iOS 客户端接入步骤 
+
+##### 3.1. 接入说明 
+
+商户网关将订单信息发送给 AllPay 网关,由 AllPay 网关进行处理后将交易流水号,即 tn,返回给商户网关,tn 作为调起手机 app 支付控件的参数。[AllPay 网关对接文档](https://git.allpayx.com/OpenAPI/common/src/master/AllPay%20%E5%9C%A8%E7%BA%BF%E6%94%AF%E4%BB%98%E6%8E%A5%E5%85%A5%E8%A7%84%E8%8C%83%E6%96%87%E6%A1%A3.md)地址
+
+启动支付控件的接口,接口定义如下:
+
+```c
+[AllPaySDK pay:[diction objectForKey:@"tn"] mode:NO scheme:@"com.xxx.xxx" ViewController:self onResult: ^(NSDictionary *resultDic) {
+
+//此处处理同步支付结果
+
+}];
+
+
+参数说明
+tn: 是从服务器端获取的流水号; mode:测试环境:NO; 生产环境:YES。
+
+Scheme: 可以为任意值推荐填写成"com.xxx.xxx" 等形式, 有特殊配置的渠道会在渠道专属配置里面说明
+
+ViewController: 调用 SDK 时的 ViewController;
+
+onResult: 接收同步结果通知
+```
+
+
+
+##### 3.2. 添加 SDK 包
+
+
+1. 将  allpaysdk 下的 AllPaySDK.h,libAllPaySDK.a文件add到项目中
+2. 在 APPDelegate.m 类中导入头文件: #import "allpaysdk/AllPaySDK.h" 并添加如下方法
+
+```c
+-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ 
+
+[AllPaySDK openURL:url]; return YES; 
+
+}
+
+-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{ 
+
+[AllPaySDK openURL:url]; return YES; 
+
+} 
+
+-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{ 
+
+[AllPaySDK openURL:url]; return YES; 
+
+}
+```
+
+3. 根据要使用的渠道的专属配置(见第5节),对项目进行配置
+
+##### 3.3 同步结果通知 
+
+```c
+[AllPaySDK pay:[diction objectForKey:@"tn"] mode:NO scheme:@"com.xxx.xxx" ViewController:self onResult: ^(NSDictionary *resultDic) { 
+
+  //此处处理同步支付结果
+
+ }];
+ 
+```
+
+resultDic,转为 json 字符串,格式如下:
+
+{
+  "state": "cancel",
+  "paymentSchema": "YL",
+  "orderNum": "604337497032",
+  "errorDetail": "user cancel operation"
+}
+
+报文说明
+
+| 参数          |                             说明                             |
+| ------------- | :----------------------------------------------------------: |
+| state         | "success"代表成功, "cancel"代表用户取消操作, "fail"代表失败  |
+| paymentSchema | 印度本地支付:"EB", "APMP"代表支付宝,  "WX"代表微信,"APP"代表ApplePay |
+| orderNum      |                            订单号                            |
+| errorDetail   |                           错误详情                           |
+
+
+
+#### 4.渠道专属配置
+
+##### 4.1 WX渠道
+
+- 渠道专属配置:
+
+1. 将allpaysdk/EBModule文件夹下的文件add到项目中
+2. 项目设置APPID
+   商户在微信开放平台申请开发APP应用后,微信开放平台会生成APP的唯一标识APPID。在Xcode中打开项目,设置项目属性中的URL Schemes为您的APPID 如图标红位置所示
+
+  ![image](https://git.allpayx.com/OpenAPI/common/raw/master/images/ios_wx_01.jpg)
+
+1. 导入下面框架和链接库
+
+   ```objective-c
+   Security.framework
+   CoreTelephony.framework
+   SystemConfiguration.framework
+   libc++.tbd
+   libz.tbd
+   libsqlite3.tbd
+   ```
+
+2. 在“Info.plist”中将要使用的 URL Schemes 列为白名单 
+
+   ```xml
+   <key>LSApplicationQueriesSchemes</key>
+   <array>
+   <string>weixin</string>
+   </array>
+   <key>NSAppTransportSecurity</key>
+   <dict>
+   <key>NSAllowsArbitraryLoads</key>
+   <true/>
+   </dict>
+   
+   ```
+
+
+
+#### 5.SDK下载
+
+[iOS SDK下载地址](https://git.allpayx.com/OpenAPI/common/raw/master/v5/ios/sdk.zip)
+
+#### 6.技术支持
+
+如果您在调试时遇到问题,请与我们联系:support@allpayx.com