Commit d15437f29c790ae91ee492ab9484ee67db2b6d75
1 parent
c7912647
修改
Showing
13 changed files
with
236 additions
and
434 deletions
CNLivePaySDKDemo.xcodeproj/project.pbxproj
| @@ -8,10 +8,6 @@ | @@ -8,10 +8,6 @@ | ||
| 8 | 8 | ||
| 9 | /* Begin PBXBuildFile section */ | 9 | /* Begin PBXBuildFile section */ |
| 10 | D2362F8D1EB3299300823BF5 /* PayMoneyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D2362F8C1EB3299300823BF5 /* PayMoneyTableViewCell.m */; }; | 10 | D2362F8D1EB3299300823BF5 /* PayMoneyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D2362F8C1EB3299300823BF5 /* PayMoneyTableViewCell.m */; }; |
| 11 | - D2362FBD1EB8267F00823BF5 /* CNLivePaySDK.m in Sources */ = {isa = PBXBuildFile; fileRef = D2362FBA1EB8267F00823BF5 /* CNLivePaySDK.m */; }; | ||
| 12 | - D2362FBE1EB8267F00823BF5 /* CNLivePayArg.m in Sources */ = {isa = PBXBuildFile; fileRef = D2362FBC1EB8267F00823BF5 /* CNLivePayArg.m */; }; | ||
| 13 | - D2362FC41EB8269E00823BF5 /* CNLivePayNetworkManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D2362FC11EB8269E00823BF5 /* CNLivePayNetworkManager.m */; }; | ||
| 14 | - D2362FC51EB8269E00823BF5 /* CNLivePayURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = D2362FC31EB8269E00823BF5 /* CNLivePayURLRequestSerialization.m */; }; | ||
| 15 | D2362FDF1EB827B500823BF5 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D2362FDE1EB827B500823BF5 /* libc++.tbd */; }; | 11 | D2362FDF1EB827B500823BF5 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D2362FDE1EB827B500823BF5 /* libc++.tbd */; }; |
| 16 | D2362FE11EB827C000823BF5 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D2362FE01EB827C000823BF5 /* libz.tbd */; }; | 12 | D2362FE11EB827C000823BF5 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = D2362FE01EB827C000823BF5 /* libz.tbd */; }; |
| 17 | D2362FE31EB827C700823BF5 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2362FE21EB827C700823BF5 /* SystemConfiguration.framework */; }; | 13 | D2362FE31EB827C700823BF5 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2362FE21EB827C700823BF5 /* SystemConfiguration.framework */; }; |
| @@ -29,7 +25,7 @@ | @@ -29,7 +25,7 @@ | ||
| 29 | D236300D1EB8817400823BF5 /* libWeChatSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D23630081EB8817400823BF5 /* libWeChatSDK.a */; }; | 25 | D236300D1EB8817400823BF5 /* libWeChatSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D23630081EB8817400823BF5 /* libWeChatSDK.a */; }; |
| 30 | D236300E1EB8817400823BF5 /* README.txt in Resources */ = {isa = PBXBuildFile; fileRef = D23630091EB8817400823BF5 /* README.txt */; }; | 26 | D236300E1EB8817400823BF5 /* README.txt in Resources */ = {isa = PBXBuildFile; fileRef = D23630091EB8817400823BF5 /* README.txt */; }; |
| 31 | D265E5321ECAFA88006AE8B6 /* PayTypeTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D265E5311ECAFA88006AE8B6 /* PayTypeTableViewCell.m */; }; | 27 | D265E5321ECAFA88006AE8B6 /* PayTypeTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D265E5311ECAFA88006AE8B6 /* PayTypeTableViewCell.m */; }; |
| 32 | - D27934AD1EC1A3940028F26F /* CNLivePayResult.m in Sources */ = {isa = PBXBuildFile; fileRef = D27934AC1EC1A3940028F26F /* CNLivePayResult.m */; }; | 28 | + D2868FE01EE8F6260037DECF /* CNLivePaySDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2868FDF1EE8F6260037DECF /* CNLivePaySDK.framework */; }; |
| 33 | D28B45AE1EB1CC1000ED24B5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D28B45AD1EB1CC1000ED24B5 /* main.m */; }; | 29 | D28B45AE1EB1CC1000ED24B5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = D28B45AD1EB1CC1000ED24B5 /* main.m */; }; |
| 34 | D28B45B11EB1CC1000ED24B5 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D28B45B01EB1CC1000ED24B5 /* AppDelegate.m */; }; | 30 | D28B45B11EB1CC1000ED24B5 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = D28B45B01EB1CC1000ED24B5 /* AppDelegate.m */; }; |
| 35 | D28B45B41EB1CC1000ED24B5 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D28B45B31EB1CC1000ED24B5 /* ViewController.m */; }; | 31 | D28B45B41EB1CC1000ED24B5 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D28B45B31EB1CC1000ED24B5 /* ViewController.m */; }; |
| @@ -41,14 +37,6 @@ | @@ -41,14 +37,6 @@ | ||
| 41 | /* Begin PBXFileReference section */ | 37 | /* Begin PBXFileReference section */ |
| 42 | D2362F8B1EB3299300823BF5 /* PayMoneyTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PayMoneyTableViewCell.h; sourceTree = "<group>"; }; | 38 | D2362F8B1EB3299300823BF5 /* PayMoneyTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PayMoneyTableViewCell.h; sourceTree = "<group>"; }; |
| 43 | D2362F8C1EB3299300823BF5 /* PayMoneyTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PayMoneyTableViewCell.m; sourceTree = "<group>"; }; | 39 | D2362F8C1EB3299300823BF5 /* PayMoneyTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PayMoneyTableViewCell.m; sourceTree = "<group>"; }; |
| 44 | - D2362FB91EB8267F00823BF5 /* CNLivePaySDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CNLivePaySDK.h; path = ../../CNLivePaySDK/CNLivePaySDK/CNLivePaySDK.h; sourceTree = "<group>"; }; | ||
| 45 | - D2362FBA1EB8267F00823BF5 /* CNLivePaySDK.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CNLivePaySDK.m; path = ../../CNLivePaySDK/CNLivePaySDK/CNLivePaySDK.m; sourceTree = "<group>"; }; | ||
| 46 | - D2362FBB1EB8267F00823BF5 /* CNLivePayArg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CNLivePayArg.h; path = ../../CNLivePaySDK/CNLivePaySDK/CNLivePayArg.h; sourceTree = "<group>"; }; | ||
| 47 | - D2362FBC1EB8267F00823BF5 /* CNLivePayArg.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CNLivePayArg.m; path = ../../CNLivePaySDK/CNLivePaySDK/CNLivePayArg.m; sourceTree = "<group>"; }; | ||
| 48 | - D2362FC01EB8269E00823BF5 /* CNLivePayNetworkManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLivePayNetworkManager.h; sourceTree = "<group>"; }; | ||
| 49 | - D2362FC11EB8269E00823BF5 /* CNLivePayNetworkManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLivePayNetworkManager.m; sourceTree = "<group>"; }; | ||
| 50 | - D2362FC21EB8269E00823BF5 /* CNLivePayURLRequestSerialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNLivePayURLRequestSerialization.h; sourceTree = "<group>"; }; | ||
| 51 | - D2362FC31EB8269E00823BF5 /* CNLivePayURLRequestSerialization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNLivePayURLRequestSerialization.m; sourceTree = "<group>"; }; | ||
| 52 | D2362FDE1EB827B500823BF5 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; | 40 | D2362FDE1EB827B500823BF5 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; |
| 53 | D2362FE01EB827C000823BF5 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; | 41 | D2362FE01EB827C000823BF5 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; |
| 54 | D2362FE21EB827C700823BF5 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; | 42 | D2362FE21EB827C700823BF5 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; |
| @@ -70,8 +58,7 @@ | @@ -70,8 +58,7 @@ | ||
| 70 | D236300C1EB8817400823BF5 /* WXApiObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXApiObject.h; sourceTree = "<group>"; }; | 58 | D236300C1EB8817400823BF5 /* WXApiObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WXApiObject.h; sourceTree = "<group>"; }; |
| 71 | D265E5301ECAFA88006AE8B6 /* PayTypeTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PayTypeTableViewCell.h; sourceTree = "<group>"; }; | 59 | D265E5301ECAFA88006AE8B6 /* PayTypeTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PayTypeTableViewCell.h; sourceTree = "<group>"; }; |
| 72 | D265E5311ECAFA88006AE8B6 /* PayTypeTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PayTypeTableViewCell.m; sourceTree = "<group>"; }; | 60 | D265E5311ECAFA88006AE8B6 /* PayTypeTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PayTypeTableViewCell.m; sourceTree = "<group>"; }; |
| 73 | - D27934AB1EC1A3940028F26F /* CNLivePayResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CNLivePayResult.h; path = ../../CNLivePaySDK/CNLivePaySDK/CNLivePayResult.h; sourceTree = "<group>"; }; | ||
| 74 | - D27934AC1EC1A3940028F26F /* CNLivePayResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CNLivePayResult.m; path = ../../CNLivePaySDK/CNLivePaySDK/CNLivePayResult.m; sourceTree = "<group>"; }; | 61 | + D2868FDF1EE8F6260037DECF /* CNLivePaySDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = CNLivePaySDK.framework; sourceTree = "<group>"; }; |
| 75 | D28B45A91EB1CC1000ED24B5 /* CNLivePaySDKDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CNLivePaySDKDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; | 62 | D28B45A91EB1CC1000ED24B5 /* CNLivePaySDKDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CNLivePaySDKDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; |
| 76 | D28B45AD1EB1CC1000ED24B5 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; | 63 | D28B45AD1EB1CC1000ED24B5 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; }; |
| 77 | D28B45AF1EB1CC1000ED24B5 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; | 64 | D28B45AF1EB1CC1000ED24B5 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; }; |
| @@ -89,6 +76,7 @@ | @@ -89,6 +76,7 @@ | ||
| 89 | isa = PBXFrameworksBuildPhase; | 76 | isa = PBXFrameworksBuildPhase; |
| 90 | buildActionMask = 2147483647; | 77 | buildActionMask = 2147483647; |
| 91 | files = ( | 78 | files = ( |
| 79 | + D2868FE01EE8F6260037DECF /* CNLivePaySDK.framework in Frameworks */, | ||
| 92 | D236300D1EB8817400823BF5 /* libWeChatSDK.a in Frameworks */, | 80 | D236300D1EB8817400823BF5 /* libWeChatSDK.a in Frameworks */, |
| 93 | D23630071EB8725500823BF5 /* libsqlite3.0.tbd in Frameworks */, | 81 | D23630071EB8725500823BF5 /* libsqlite3.0.tbd in Frameworks */, |
| 94 | D2362FF31EB8280400823BF5 /* CoreMotion.framework in Frameworks */, | 82 | D2362FF31EB8280400823BF5 /* CoreMotion.framework in Frameworks */, |
| @@ -109,17 +97,6 @@ | @@ -109,17 +97,6 @@ | ||
| 109 | /* End PBXFrameworksBuildPhase section */ | 97 | /* End PBXFrameworksBuildPhase section */ |
| 110 | 98 | ||
| 111 | /* Begin PBXGroup section */ | 99 | /* Begin PBXGroup section */ |
| 112 | - D2362FBF1EB8269E00823BF5 /* CNLiveNetworking */ = { | ||
| 113 | - isa = PBXGroup; | ||
| 114 | - children = ( | ||
| 115 | - D2362FC01EB8269E00823BF5 /* CNLivePayNetworkManager.h */, | ||
| 116 | - D2362FC11EB8269E00823BF5 /* CNLivePayNetworkManager.m */, | ||
| 117 | - D2362FC21EB8269E00823BF5 /* CNLivePayURLRequestSerialization.h */, | ||
| 118 | - D2362FC31EB8269E00823BF5 /* CNLivePayURLRequestSerialization.m */, | ||
| 119 | - ); | ||
| 120 | - path = CNLiveNetworking; | ||
| 121 | - sourceTree = "<group>"; | ||
| 122 | - }; | ||
| 123 | D2362FDD1EB827B500823BF5 /* Frameworks */ = { | 100 | D2362FDD1EB827B500823BF5 /* Frameworks */ = { |
| 124 | isa = PBXGroup; | 101 | isa = PBXGroup; |
| 125 | children = ( | 102 | children = ( |
| @@ -180,7 +157,7 @@ | @@ -180,7 +157,7 @@ | ||
| 180 | D28B45AB1EB1CC1000ED24B5 /* CNLivePaySDKDemo */ = { | 157 | D28B45AB1EB1CC1000ED24B5 /* CNLivePaySDKDemo */ = { |
| 181 | isa = PBXGroup; | 158 | isa = PBXGroup; |
| 182 | children = ( | 159 | children = ( |
| 183 | - D2362FBF1EB8269E00823BF5 /* CNLiveNetworking */, | 160 | + D2868FDF1EE8F6260037DECF /* CNLivePaySDK.framework */, |
| 184 | D2362FF91EB8516500823BF5 /* Alipay */, | 161 | D2362FF91EB8516500823BF5 /* Alipay */, |
| 185 | D2362FFE1EB85BB800823BF5 /* WXApi */, | 162 | D2362FFE1EB85BB800823BF5 /* WXApi */, |
| 186 | D28B45AF1EB1CC1000ED24B5 /* AppDelegate.h */, | 163 | D28B45AF1EB1CC1000ED24B5 /* AppDelegate.h */, |
| @@ -191,12 +168,6 @@ | @@ -191,12 +168,6 @@ | ||
| 191 | D2362F8C1EB3299300823BF5 /* PayMoneyTableViewCell.m */, | 168 | D2362F8C1EB3299300823BF5 /* PayMoneyTableViewCell.m */, |
| 192 | D265E5301ECAFA88006AE8B6 /* PayTypeTableViewCell.h */, | 169 | D265E5301ECAFA88006AE8B6 /* PayTypeTableViewCell.h */, |
| 193 | D265E5311ECAFA88006AE8B6 /* PayTypeTableViewCell.m */, | 170 | D265E5311ECAFA88006AE8B6 /* PayTypeTableViewCell.m */, |
| 194 | - D2362FB91EB8267F00823BF5 /* CNLivePaySDK.h */, | ||
| 195 | - D2362FBA1EB8267F00823BF5 /* CNLivePaySDK.m */, | ||
| 196 | - D2362FBB1EB8267F00823BF5 /* CNLivePayArg.h */, | ||
| 197 | - D2362FBC1EB8267F00823BF5 /* CNLivePayArg.m */, | ||
| 198 | - D27934AB1EC1A3940028F26F /* CNLivePayResult.h */, | ||
| 199 | - D27934AC1EC1A3940028F26F /* CNLivePayResult.m */, | ||
| 200 | D28B45B51EB1CC1000ED24B5 /* Main.storyboard */, | 171 | D28B45B51EB1CC1000ED24B5 /* Main.storyboard */, |
| 201 | D28B45B81EB1CC1000ED24B5 /* Assets.xcassets */, | 172 | D28B45B81EB1CC1000ED24B5 /* Assets.xcassets */, |
| 202 | D28B45BA1EB1CC1000ED24B5 /* LaunchScreen.storyboard */, | 173 | D28B45BA1EB1CC1000ED24B5 /* LaunchScreen.storyboard */, |
| @@ -288,14 +259,9 @@ | @@ -288,14 +259,9 @@ | ||
| 288 | isa = PBXSourcesBuildPhase; | 259 | isa = PBXSourcesBuildPhase; |
| 289 | buildActionMask = 2147483647; | 260 | buildActionMask = 2147483647; |
| 290 | files = ( | 261 | files = ( |
| 291 | - D2362FBE1EB8267F00823BF5 /* CNLivePayArg.m in Sources */, | ||
| 292 | - D27934AD1EC1A3940028F26F /* CNLivePayResult.m in Sources */, | ||
| 293 | - D2362FBD1EB8267F00823BF5 /* CNLivePaySDK.m in Sources */, | ||
| 294 | D28B45B41EB1CC1000ED24B5 /* ViewController.m in Sources */, | 262 | D28B45B41EB1CC1000ED24B5 /* ViewController.m in Sources */, |
| 295 | D265E5321ECAFA88006AE8B6 /* PayTypeTableViewCell.m in Sources */, | 263 | D265E5321ECAFA88006AE8B6 /* PayTypeTableViewCell.m in Sources */, |
| 296 | - D2362FC41EB8269E00823BF5 /* CNLivePayNetworkManager.m in Sources */, | ||
| 297 | D28B45B11EB1CC1000ED24B5 /* AppDelegate.m in Sources */, | 264 | D28B45B11EB1CC1000ED24B5 /* AppDelegate.m in Sources */, |
| 298 | - D2362FC51EB8269E00823BF5 /* CNLivePayURLRequestSerialization.m in Sources */, | ||
| 299 | D28B45AE1EB1CC1000ED24B5 /* main.m in Sources */, | 265 | D28B45AE1EB1CC1000ED24B5 /* main.m in Sources */, |
| 300 | D2362F8D1EB3299300823BF5 /* PayMoneyTableViewCell.m in Sources */, | 266 | D2362F8D1EB3299300823BF5 /* PayMoneyTableViewCell.m in Sources */, |
| 301 | ); | 267 | ); |
| @@ -421,6 +387,7 @@ | @@ -421,6 +387,7 @@ | ||
| 421 | FRAMEWORK_SEARCH_PATHS = ( | 387 | FRAMEWORK_SEARCH_PATHS = ( |
| 422 | "$(inherited)", | 388 | "$(inherited)", |
| 423 | "$(PROJECT_DIR)/CNLivePaySDKDemo/Alipay", | 389 | "$(PROJECT_DIR)/CNLivePaySDKDemo/Alipay", |
| 390 | + "$(PROJECT_DIR)/CNLivePaySDKDemo", | ||
| 424 | ); | 391 | ); |
| 425 | INFOPLIST_FILE = CNLivePaySDKDemo/Info.plist; | 392 | INFOPLIST_FILE = CNLivePaySDKDemo/Info.plist; |
| 426 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; | 393 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; |
| @@ -444,6 +411,7 @@ | @@ -444,6 +411,7 @@ | ||
| 444 | FRAMEWORK_SEARCH_PATHS = ( | 411 | FRAMEWORK_SEARCH_PATHS = ( |
| 445 | "$(inherited)", | 412 | "$(inherited)", |
| 446 | "$(PROJECT_DIR)/CNLivePaySDKDemo/Alipay", | 413 | "$(PROJECT_DIR)/CNLivePaySDKDemo/Alipay", |
| 414 | + "$(PROJECT_DIR)/CNLivePaySDKDemo", | ||
| 447 | ); | 415 | ); |
| 448 | INFOPLIST_FILE = CNLivePaySDKDemo/Info.plist; | 416 | INFOPLIST_FILE = CNLivePaySDKDemo/Info.plist; |
| 449 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; | 417 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; |
CNLivePaySDKDemo/AppDelegate.m
| @@ -8,7 +8,7 @@ | @@ -8,7 +8,7 @@ | ||
| 8 | 8 | ||
| 9 | #import "AppDelegate.h" | 9 | #import "AppDelegate.h" |
| 10 | #import "ViewController.h" | 10 | #import "ViewController.h" |
| 11 | -#import "CNLivePaySDK.h" | 11 | +#import <CNLivePaySDK/CNLivePaySDK.h> |
| 12 | 12 | ||
| 13 | #define WXAppId @"wxbcb43c2700c2e6b3" | 13 | #define WXAppId @"wxbcb43c2700c2e6b3" |
| 14 | #define BundleId @"com.cnlive.shipinzhongguo" | 14 | #define BundleId @"com.cnlive.shipinzhongguo" |
CNLivePaySDKDemo/CNLiveNetworking/CNLivePayNetworkManager.h deleted
100644 → 0
| 1 | -// | ||
| 2 | -// CNLiveNetworkManager.h | ||
| 3 | -// CNLiveHttpRequestDemo | ||
| 4 | -// | ||
| 5 | -// Created by Android on 16/7/26. | ||
| 6 | -// Copyright © 2016年 Android. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import <Foundation/Foundation.h> | ||
| 10 | - | ||
| 11 | -@interface CNLivePayNetworkManager : NSObject | ||
| 12 | - | ||
| 13 | -/** | ||
| 14 | - * 设置超时时间 | ||
| 15 | - */ | ||
| 16 | -@property (nonatomic, assign) NSTimeInterval timeoutInterval; | ||
| 17 | - | ||
| 18 | -/** | ||
| 19 | - * 缓存策略 | ||
| 20 | - */ | ||
| 21 | -@property (nonatomic, assign) NSURLRequestCachePolicy cachePolicy; | ||
| 22 | - | ||
| 23 | -+ (nonnull CNLivePayNetworkManager *)manager; | ||
| 24 | - | ||
| 25 | -/** | ||
| 26 | - * GET 请求 | ||
| 27 | - * @param URL url | ||
| 28 | - * @param parameters 上传参数 | ||
| 29 | - * @param success 请求成功回调 | ||
| 30 | - * @param failure 请求失败回调 | ||
| 31 | - */ | ||
| 32 | -- (void)requestGetURL:(nullable NSString *)URL | ||
| 33 | - parameters:(nullable NSDictionary *)parameters | ||
| 34 | - success:(nullable void (^)(NSURLResponse *_Nullable response, id _Nullable responseObject))success | ||
| 35 | - failure :(nullable void (^)(NSURLResponse *_Nullable response, NSError *_Nullable error))failure; | ||
| 36 | - | ||
| 37 | -/** | ||
| 38 | - * POST 请求 | ||
| 39 | - * @param URL url | ||
| 40 | - * @param parameters 上传参数 | ||
| 41 | - * @param success 请求成功回调 | ||
| 42 | - * @param failure 请求失败回调 | ||
| 43 | - */ | ||
| 44 | -- (void)requestPostURL:(nullable NSString *)URL | ||
| 45 | - parameters:(nullable NSDictionary *)parameters | ||
| 46 | - success:(nullable void (^)(NSURLResponse *_Nullable response, id _Nullable responseObject))success | ||
| 47 | - failure :(nullable void (^)(NSURLResponse *_Nullable response, NSError *_Nullable error))failure; | ||
| 48 | - | ||
| 49 | - | ||
| 50 | - | ||
| 51 | -@end |
CNLivePaySDKDemo/CNLiveNetworking/CNLivePayNetworkManager.m deleted
100644 → 0
| 1 | -// | ||
| 2 | -// CNLiveNetworkManager.m | ||
| 3 | -// CNLiveHttpRequestDemo | ||
| 4 | -// | ||
| 5 | -// Created by Android on 16/7/26. | ||
| 6 | -// Copyright © 2016年 Android. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "CNLivePayNetworkManager.h" | ||
| 10 | -#import "CNLivePayURLRequestSerialization.h" | ||
| 11 | - | ||
| 12 | -/** | ||
| 13 | - * 网络超时时间 默认 60 | ||
| 14 | - */ | ||
| 15 | -static NSTimeInterval TimeoutInterval = 30.0 ; | ||
| 16 | - | ||
| 17 | -/** | ||
| 18 | - * 缓存策略 | ||
| 19 | - * NSURLRequestUseProtocolCachePolicy // 默认的缓存策略(取决于协议) | ||
| 20 | - * NSURLRequestReloadIgnoringLocalCacheData // 忽略缓存,重新请求 | ||
| 21 | - * NSURLRequestReloadIgnoringLocalAndRemoteCacheData // 未实现 | ||
| 22 | - * NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData // 忽略缓存,重新请求 | ||
| 23 | - * NSURLRequestReturnCacheDataElseLoad// 有缓存就用缓存,忽略过期时间!没有缓存就重新请求 | ||
| 24 | - * NSURLRequestReturnCacheDataDontLoad// 有缓存就用缓存,没有缓存就不发请求,当做请求出错处理(用于离线模式) | ||
| 25 | - * NSURLRequestReloadRevalidatingCacheData // 未实现 | ||
| 26 | - */ | ||
| 27 | -static NSURLRequestCachePolicy CachePolicy = NSURLRequestUseProtocolCachePolicy; | ||
| 28 | - | ||
| 29 | -@implementation CNLivePayNetworkManager | ||
| 30 | - | ||
| 31 | -+ (CNLivePayNetworkManager *)manager | ||
| 32 | -{ | ||
| 33 | - static CNLivePayNetworkManager *manager = nil; | ||
| 34 | - | ||
| 35 | - static dispatch_once_t predicate; | ||
| 36 | - | ||
| 37 | - dispatch_once(&predicate, ^{ | ||
| 38 | - | ||
| 39 | - manager = [[CNLivePayNetworkManager alloc] init]; | ||
| 40 | - | ||
| 41 | - }); | ||
| 42 | - | ||
| 43 | - manager.cachePolicy = CachePolicy; | ||
| 44 | - | ||
| 45 | - manager.timeoutInterval = TimeoutInterval; | ||
| 46 | - | ||
| 47 | - return manager; | ||
| 48 | -} | ||
| 49 | - | ||
| 50 | --(void)requestGetURL:(NSString *)URL | ||
| 51 | - parameters:(NSDictionary *)parameters | ||
| 52 | - success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success | ||
| 53 | - failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure | ||
| 54 | -{ | ||
| 55 | - NSURLSessionDataTask *task = [self dataTaskWithRequestMethod:@"GET" URLString:URL parameters:parameters success:success failure:failure]; | ||
| 56 | - [task resume]; | ||
| 57 | -} | ||
| 58 | - | ||
| 59 | -- (void)requestPostURL:(NSString *)URL | ||
| 60 | - parameters:(NSDictionary *)parameters | ||
| 61 | - success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success | ||
| 62 | - failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure | ||
| 63 | -{ | ||
| 64 | - NSURLSessionDataTask *task = [self dataTaskWithRequestMethod:@"POST" URLString:URL parameters:parameters success:success failure:failure]; | ||
| 65 | - [task resume]; | ||
| 66 | -} | ||
| 67 | - | ||
| 68 | -- (NSURLSessionDataTask *)dataTaskWithRequestMethod:(NSString *)method | ||
| 69 | - URLString:(NSString *)URLString | ||
| 70 | - parameters:(NSDictionary *)parameters | ||
| 71 | - success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success | ||
| 72 | - failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure | ||
| 73 | -{ | ||
| 74 | - | ||
| 75 | - if (![URLString isKindOfClass:[NSString class]]) { | ||
| 76 | - NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey : @"please enter a valid url"}]; | ||
| 77 | - failure(nil, error); | ||
| 78 | - return nil; | ||
| 79 | - } | ||
| 80 | - | ||
| 81 | - NSString *newURLString; | ||
| 82 | - if ([method isEqualToString:@"GET"]) { | ||
| 83 | - if (parameters) { | ||
| 84 | - newURLString = [[URLString stringByAppendingString:@"?"] stringByAppendingString:[CNLivePayURLRequestSerialization | ||
| 85 | - CNQueryStringFromParameters:parameters]]; | ||
| 86 | - }else{ | ||
| 87 | - newURLString = URLString; | ||
| 88 | - } | ||
| 89 | - }else{ | ||
| 90 | - newURLString = URLString; | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | - NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:newURLString] cachePolicy:self.cachePolicy timeoutInterval:self.timeoutInterval]; | ||
| 94 | - | ||
| 95 | - request.HTTPMethod = method; | ||
| 96 | - | ||
| 97 | - if([method isEqual:@"POST"]){ | ||
| 98 | - [request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; | ||
| 99 | - request.HTTPBody =[[CNLivePayURLRequestSerialization CNQueryStringFromParameters:parameters] dataUsingEncoding:NSUTF8StringEncoding]; | ||
| 100 | - } | ||
| 101 | - | ||
| 102 | - NSURLSessionDataTask *task = [self dataTaskWithRequest:request success:success failure:failure]; | ||
| 103 | - | ||
| 104 | - return task; | ||
| 105 | -} | ||
| 106 | - | ||
| 107 | -- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request | ||
| 108 | - success:(void (^)(NSURLResponse * _Nullable, id _Nullable))success | ||
| 109 | - failure:(void (^)(NSURLResponse * _Nullable, NSError * _Nullable))failure | ||
| 110 | -{ | ||
| 111 | - NSURLSession *session = [NSURLSession sharedSession]; | ||
| 112 | - NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { | ||
| 113 | - | ||
| 114 | - dispatch_async(dispatch_get_main_queue(), ^{ | ||
| 115 | - if (error) { | ||
| 116 | - failure(response,error); | ||
| 117 | - }else{ | ||
| 118 | - if ([response isKindOfClass:[NSHTTPURLResponse class]]) { | ||
| 119 | - NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; | ||
| 120 | - if (httpResponse.statusCode < 400) { | ||
| 121 | - id jsonObj = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; | ||
| 122 | - success(httpResponse,jsonObj); | ||
| 123 | - } else { | ||
| 124 | - NSError *failureError = [NSError errorWithDomain:NSURLErrorDomain code:httpResponse.statusCode userInfo:httpResponse.allHeaderFields]; | ||
| 125 | - failure(httpResponse,failureError); | ||
| 126 | - } | ||
| 127 | - } else { | ||
| 128 | - failure(response,error); | ||
| 129 | - } | ||
| 130 | - } | ||
| 131 | - }); | ||
| 132 | - }]; | ||
| 133 | - | ||
| 134 | - return task; | ||
| 135 | -} | ||
| 136 | - | ||
| 137 | -- (NSURL *)formatURLString:(NSString *)url | ||
| 138 | -{ | ||
| 139 | - NSURL *urlString = [NSURL URLWithString:[url stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]]; | ||
| 140 | - return urlString; | ||
| 141 | -} | ||
| 142 | - | ||
| 143 | -@end |
CNLivePaySDKDemo/CNLiveNetworking/CNLivePayURLRequestSerialization.h deleted
100644 → 0
| 1 | -// | ||
| 2 | -// CNLiveURLRequestSerialization.h | ||
| 3 | -// CNLiveHttpRequestDemo | ||
| 4 | -// | ||
| 5 | -// Created by Android on 16/7/26. | ||
| 6 | -// Copyright © 2016年 Android. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import <Foundation/Foundation.h> | ||
| 10 | - | ||
| 11 | -@interface CNLivePayURLRequestSerialization : NSObject | ||
| 12 | - | ||
| 13 | -+ (nullable NSString *)CNQueryStringFromParameters:(nullable NSDictionary *)parameters; | ||
| 14 | - | ||
| 15 | -@end |
CNLivePaySDKDemo/CNLiveNetworking/CNLivePayURLRequestSerialization.m deleted
100644 → 0
| 1 | -// | ||
| 2 | -// CNLiveURLRequestSerialization.m | ||
| 3 | -// CNLiveHttpRequestDemo | ||
| 4 | -// | ||
| 5 | -// Created by Android on 16/7/26. | ||
| 6 | -// Copyright © 2016年 Android. All rights reserved. | ||
| 7 | -// | ||
| 8 | - | ||
| 9 | -#import "CNLivePayURLRequestSerialization.h" | ||
| 10 | - | ||
| 11 | -@interface CNLivePayURLRequestSerialization () | ||
| 12 | - | ||
| 13 | -@property (readwrite, nonatomic, strong) id value; | ||
| 14 | - | ||
| 15 | -@property (readwrite, nonatomic, strong) id field; | ||
| 16 | - | ||
| 17 | -@end | ||
| 18 | - | ||
| 19 | -@implementation CNLivePayURLRequestSerialization | ||
| 20 | - | ||
| 21 | -- (id)initWithField:(id)field value:(id)value | ||
| 22 | -{ | ||
| 23 | - self = [super init]; | ||
| 24 | - | ||
| 25 | - if (self) { | ||
| 26 | - | ||
| 27 | - self.field = field; | ||
| 28 | - | ||
| 29 | - self.value = value; | ||
| 30 | - } | ||
| 31 | - | ||
| 32 | - return self; | ||
| 33 | - | ||
| 34 | -} | ||
| 35 | - | ||
| 36 | -#pragma mark - | ||
| 37 | - | ||
| 38 | -FOUNDATION_EXPORT NSArray * CNQueryStringPairsFromDictionary(NSDictionary *dictionary); | ||
| 39 | -FOUNDATION_EXPORT NSArray * CNQueryStringPairsFromKeyAndValue(NSString *key, id value); | ||
| 40 | - | ||
| 41 | -+ (NSString *)CNQueryStringFromParameters:(NSDictionary *)parameters | ||
| 42 | -{ | ||
| 43 | - NSMutableArray *mutablePairs = [NSMutableArray array]; | ||
| 44 | - for (CNLivePayURLRequestSerialization *pair in CNQueryStringPairsFromDictionary(parameters)) { | ||
| 45 | - [mutablePairs addObject:[pair URLEncodedStringValue]]; | ||
| 46 | - } | ||
| 47 | - return [mutablePairs componentsJoinedByString:@"&"]; | ||
| 48 | -} | ||
| 49 | - | ||
| 50 | -NSArray * CNQueryStringPairsFromDictionary(NSDictionary *dictionary) | ||
| 51 | -{ | ||
| 52 | - return CNQueryStringPairsFromKeyAndValue(nil, dictionary); | ||
| 53 | -} | ||
| 54 | - | ||
| 55 | -/** | ||
| 56 | - * 处理上传参数 | ||
| 57 | - */ | ||
| 58 | -NSArray * CNQueryStringPairsFromKeyAndValue(NSString *key, id value) | ||
| 59 | -{ | ||
| 60 | - NSMutableArray *mutableQueryStringComponents = [NSMutableArray array]; | ||
| 61 | - | ||
| 62 | - //排序方式 | ||
| 63 | - NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES selector:@selector(compare:)]; | ||
| 64 | - | ||
| 65 | - if ([value isKindOfClass:[NSDictionary class]]) { //字典 | ||
| 66 | - NSDictionary *dictionary = value; | ||
| 67 | - for (id nestedKey in [dictionary.allKeys sortedArrayUsingDescriptors:@[sortDescriptor]]) { | ||
| 68 | - id nestedValue = dictionary[nestedKey]; | ||
| 69 | - if (nestedKey) { | ||
| 70 | - [mutableQueryStringComponents addObjectsFromArray:CNQueryStringPairsFromKeyAndValue((key ? [NSString stringWithFormat:@"%@[%@]", key, nestedKey] : nestedKey), nestedValue)]; | ||
| 71 | - } | ||
| 72 | - } | ||
| 73 | - } | ||
| 74 | - | ||
| 75 | - else if ([value isKindOfClass:[NSArray class]]){ //数组 | ||
| 76 | - NSArray *array = value; | ||
| 77 | - for (id nestedValue in array) { | ||
| 78 | - [mutableQueryStringComponents addObjectsFromArray:CNQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[]", key], nestedValue)]; | ||
| 79 | - } | ||
| 80 | - }else if ([value isKindOfClass:[NSSet class]]){ //集合 | ||
| 81 | - NSSet *set = value; | ||
| 82 | - for (id obj in [set sortedArrayUsingDescriptors:@[ sortDescriptor ]]) { | ||
| 83 | - [mutableQueryStringComponents addObjectsFromArray:CNQueryStringPairsFromKeyAndValue(key, obj)]; | ||
| 84 | - } | ||
| 85 | - }else{ //其他类型 | ||
| 86 | - [mutableQueryStringComponents addObject:[[CNLivePayURLRequestSerialization alloc] initWithField:key value:value]]; | ||
| 87 | - } | ||
| 88 | - | ||
| 89 | - return mutableQueryStringComponents; | ||
| 90 | -} | ||
| 91 | - | ||
| 92 | -static NSString * CNPercentEscapedStringFromString(NSString *string) { | ||
| 93 | - static NSString * const kCNCharactersGeneralDelimitersToEncode = @":#[]@"; // does not include "?" or "/" due to RFC 3986 - Section 3.4 | ||
| 94 | - static NSString * const kCNCharactersSubDelimitersToEncode = @"!$&'()*+,;="; | ||
| 95 | - | ||
| 96 | - NSMutableCharacterSet * allowedCharacterSet = [[NSCharacterSet URLQueryAllowedCharacterSet] mutableCopy]; | ||
| 97 | - [allowedCharacterSet removeCharactersInString:[kCNCharactersGeneralDelimitersToEncode stringByAppendingString:kCNCharactersSubDelimitersToEncode]]; | ||
| 98 | - | ||
| 99 | - | ||
| 100 | - static NSUInteger const batchSize = 50; | ||
| 101 | - | ||
| 102 | - NSUInteger index = 0; | ||
| 103 | - NSMutableString *escaped = @"".mutableCopy; | ||
| 104 | - | ||
| 105 | - while (index < string.length) { | ||
| 106 | -#pragma GCC diagnostic push | ||
| 107 | -#pragma GCC diagnostic ignored "-Wgnu" | ||
| 108 | - NSUInteger length = MIN(string.length - index, batchSize); | ||
| 109 | -#pragma GCC diagnostic pop | ||
| 110 | - NSRange range = NSMakeRange(index, length); | ||
| 111 | - | ||
| 112 | - range = [string rangeOfComposedCharacterSequencesForRange:range]; | ||
| 113 | - | ||
| 114 | - NSString *substring = [string substringWithRange:range]; | ||
| 115 | - NSString *encoded = [substring stringByAddingPercentEncodingWithAllowedCharacters:allowedCharacterSet]; | ||
| 116 | - [escaped appendString:encoded]; | ||
| 117 | - | ||
| 118 | - index += range.length; | ||
| 119 | - } | ||
| 120 | - | ||
| 121 | - return escaped; | ||
| 122 | -} | ||
| 123 | - | ||
| 124 | -- (NSString *)URLEncodedStringValue { | ||
| 125 | - if (!self.value || [self.value isEqual:[NSNull null]]) { | ||
| 126 | - return CNPercentEscapedStringFromString([self.field description]); | ||
| 127 | - } else { | ||
| 128 | - return [NSString stringWithFormat:@"%@=%@", CNPercentEscapedStringFromString([self.field description]), CNPercentEscapedStringFromString([self.value description])]; | ||
| 129 | - } | ||
| 130 | -} | ||
| 131 | - | ||
| 132 | - | ||
| 133 | -@end |
CNLivePaySDKDemo/CNLivePaySDK.framework/CNLivePaySDK
0 → 100644
No preview for this file type
CNLivePaySDKDemo/CNLivePaySDK.framework/Headers/CNLivePayArg.h
0 → 100644
| 1 | +// | ||
| 2 | +// CNLivePayArg.h | ||
| 3 | +// CNLivePaySDK | ||
| 4 | +// | ||
| 5 | +// Created by cnliveJunBo on 17/5/2. | ||
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | +// | ||
| 8 | + | ||
| 9 | +#import <Foundation/Foundation.h> | ||
| 10 | + | ||
| 11 | +typedef enum { | ||
| 12 | + CNLivePayTypeWeChatPay = 1, | ||
| 13 | + CNLivePayTypeAliPay = 3, | ||
| 14 | + CNLivePayTypeInAppPurchase = 1001 | ||
| 15 | +} CNLivePayType; | ||
| 16 | + | ||
| 17 | +@interface CNLivePayArg : NSObject | ||
| 18 | + | ||
| 19 | +/** | ||
| 20 | + 视讯云平台获得的第三方平台帐号; | ||
| 21 | + */ | ||
| 22 | +@property (nonatomic, copy) NSString * account; | ||
| 23 | + | ||
| 24 | + | ||
| 25 | +/** | ||
| 26 | + 支付类型(微信, 支付宝, 内购) | ||
| 27 | + */ | ||
| 28 | +@property (nonatomic, assign) CNLivePayType type; | ||
| 29 | + | ||
| 30 | + | ||
| 31 | +/** | ||
| 32 | + 唯一业务系统中的订单号 | ||
| 33 | + */ | ||
| 34 | +@property (nonatomic, copy) NSString *out_trade_no; | ||
| 35 | + | ||
| 36 | + | ||
| 37 | +/** | ||
| 38 | + 商品价格,以分为单位,只能是整数; | ||
| 39 | + */ | ||
| 40 | +@property (nonatomic, assign) int total_fee; | ||
| 41 | + | ||
| 42 | + | ||
| 43 | +/** | ||
| 44 | + 用户付款通知业务系统接收地址;不能有参数; | ||
| 45 | + */ | ||
| 46 | +@property (nonatomic, copy) NSString *notify_url; | ||
| 47 | + | ||
| 48 | + | ||
| 49 | +/** | ||
| 50 | + 订单信息 | ||
| 51 | + */ | ||
| 52 | +@property (nonatomic, copy) NSString *body; | ||
| 53 | + | ||
| 54 | + | ||
| 55 | +/** | ||
| 56 | + 业务回传参数,传递参数用于给 notify_url 用户付款通知业务系统接收地址拼接参数; | ||
| 57 | + 业务回传参数可以使用多个参数,由业务系统自行使用。但有长度限制,所有attach 的总字符长度不能超过300。 例如: attach.phone=13523455432 attach.others=o … | ||
| 58 | + */ | ||
| 59 | +@property (nonatomic, strong) NSDictionary *attach; | ||
| 60 | + | ||
| 61 | + | ||
| 62 | +/** | ||
| 63 | + 业务系统用户ID | ||
| 64 | + */ | ||
| 65 | +@property (nonatomic, copy) NSString *user_id; | ||
| 66 | + | ||
| 67 | +@end |
CNLivePaySDKDemo/CNLivePaySDK.framework/Headers/CNLivePayResult.h
0 → 100644
| 1 | +// | ||
| 2 | +// CNLivePayResult.h | ||
| 3 | +// CNLivePaySDKDemo | ||
| 4 | +// | ||
| 5 | +// Created by cnliveJunBo on 17/5/3. | ||
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | +// | ||
| 8 | + | ||
| 9 | +#import <Foundation/Foundation.h> | ||
| 10 | + | ||
| 11 | +/** | ||
| 12 | + * 返回值详解 | ||
| 13 | + */ | ||
| 14 | +typedef NS_ENUM(NSUInteger, CNLiveBackExplain) { | ||
| 15 | + | ||
| 16 | + CNLive_CODE_SUCCESS = 2000, /**< 成功*/ | ||
| 17 | + CNLive_CODE_FAIL_CANCEL = 4004, /**< 用户取消支付*/ | ||
| 18 | + CNLive_CODE_ERROR_DEAL = 4201, /**< 处理中*/ | ||
| 19 | + CNLive_CODE_Failure = 4005, /**< 失败*/ | ||
| 20 | + CNLive_CODE_ERROR_CONNECT = 4202, /**< 网络错误*/ | ||
| 21 | + CNLive_CODE_ERROR_INSIDE = 4006, /**< SDK内部错误*/ | ||
| 22 | + CNLive_CODE_ERROR_NOTADDSDK = 4007, /**< 缺少相关SDK*/ | ||
| 23 | + CNLive_CODE_ERROR_WX_NOT_INSTALL = 4101, /**< 未安装微信*/ | ||
| 24 | + CNLive_CODE_ERROR_WX_NOT_SUPPORT_PAY = 4102, /**< 微信不支持OpenApi*/ | ||
| 25 | + CNLive_CODE_ERROR_WX_SENTFAIL = 4103, /**< 微信发送失败*/ | ||
| 26 | + CNLive_CODE_ERROR_WX_AUTHDENY = 4104, /**< 微信授权失败*/ | ||
| 27 | + CNLive_CODE_ChannelWrong = 4003, /**< 渠道信息错误*/ | ||
| 28 | + CNLive_CODE_ERROR_CHARGE_PARAMETER = 4002 /**< 参数信息错误*/ | ||
| 29 | +}; | ||
| 30 | + | ||
| 31 | +@interface CNLivePayResult : NSObject | ||
| 32 | + | ||
| 33 | +/** | ||
| 34 | + * 枚举详解 | ||
| 35 | + */ | ||
| 36 | +@property (assign, nonatomic) CNLiveBackExplain explain; | ||
| 37 | +/** | ||
| 38 | + * 错误描述 | ||
| 39 | + */ | ||
| 40 | +@property (copy, nonatomic) NSString *backDescription; | ||
| 41 | +/** | ||
| 42 | + * 支付渠道返回的错误码 | ||
| 43 | + */ | ||
| 44 | +@property (copy, nonatomic) NSString *channelBackCode; | ||
| 45 | +/** | ||
| 46 | + * 支付渠道 | ||
| 47 | + */ | ||
| 48 | +@property (copy, nonatomic) NSString *channel; | ||
| 49 | +/** | ||
| 50 | + * 支付渠道返回的信息 | ||
| 51 | + */ | ||
| 52 | +@property (strong, nonatomic) NSString *channelBackInfo; | ||
| 53 | + | ||
| 54 | +@end |
CNLivePaySDKDemo/CNLivePaySDK.framework/Headers/CNLivePaySDK.h
0 → 100644
| 1 | +// | ||
| 2 | +// CNLivePaySDK.h | ||
| 3 | +// CNLivePaySDK | ||
| 4 | +// | ||
| 5 | +// Created by cnliveJunBo on 17/5/1. | ||
| 6 | +// Copyright © 2017年 cnlive. All rights reserved. | ||
| 7 | +// | ||
| 8 | + | ||
| 9 | +#import <Foundation/Foundation.h> | ||
| 10 | +#import "CNLivePayArg.h" | ||
| 11 | +#import "CNLivePayResult.h" | ||
| 12 | + | ||
| 13 | +typedef void(^CNLCompletionBlock)(CNLivePayResult *cnlivePayResult); | ||
| 14 | + | ||
| 15 | +@interface CNLivePaySDK : NSObject | ||
| 16 | + | ||
| 17 | +/** | ||
| 18 | + 获取SDK当前版本号 | ||
| 19 | + | ||
| 20 | + @return 返回SDK当前版本号 | ||
| 21 | + */ | ||
| 22 | ++ (NSString *)getVersion; | ||
| 23 | + | ||
| 24 | + | ||
| 25 | +/** | ||
| 26 | + 获取支付核心类单例 | ||
| 27 | + | ||
| 28 | + @return 返回支付核心类单例 | ||
| 29 | + */ | ||
| 30 | ++ (instancetype)sharedCNLivePayManager; | ||
| 31 | + | ||
| 32 | + | ||
| 33 | +/** | ||
| 34 | + 注册支付SDK | ||
| 35 | + | ||
| 36 | + @param appid 从视讯云平台获取到的appId | ||
| 37 | + @param appkey 从视讯云平台获取到的appKey | ||
| 38 | + @warning 必须传参数 appid appkey | ||
| 39 | + @discussion 您在使用支付SDK所有功能之前,您必须先调用此方法初始化SDK。在App整个生命周期中,您只需要执行一次初始化。 | ||
| 40 | + | ||
| 41 | + @return 是否注册成功 | ||
| 42 | + */ | ||
| 43 | +- (BOOL) registerApp:(NSString *)appid AppKey:(NSString *)appkey; | ||
| 44 | + | ||
| 45 | + | ||
| 46 | +/** | ||
| 47 | + 注册微信支付(只有使用了微信支付才会使用到此方法) | ||
| 48 | + | ||
| 49 | + @param wxAppId 微信平台申请到的appId | ||
| 50 | + | ||
| 51 | + @return 是否注册成功 | ||
| 52 | + */ | ||
| 53 | +- (BOOL) registerWXApiWithWXAppId:(NSString *)wxAppId; | ||
| 54 | + | ||
| 55 | + | ||
| 56 | +/** | ||
| 57 | + 支付方法(微信, 支付宝) | ||
| 58 | + | ||
| 59 | + @param payArg 支付所需参数结构体; | ||
| 60 | + @param schemeStr 支付宝支付时需要的appScheme,需要与info配置的scheme对应;其他支付不需要可填nil; | ||
| 61 | + @param completionBlock 支付结果回调; | ||
| 62 | + @discussion 支付宝 客户端, 网页 支付结果回调都在此方法中的block回调中; | ||
| 63 | + 微信客户端支付结果回调在此方法中的block回调中; | ||
| 64 | + */ | ||
| 65 | +- (void)pay:(CNLivePayArg *)payArg appScheme:(NSString *)schemeStr completion:(CNLCompletionBlock)completionBlock; | ||
| 66 | + | ||
| 67 | + | ||
| 68 | +/** | ||
| 69 | + 支付方法(内购) | ||
| 70 | + | ||
| 71 | + @param payArg 支付所需参数结构体; | ||
| 72 | + @param isDebug 是否是测试环境,上线时务必改成NO;开发环境请填YES,内购支付会到沙盒环境下验证支付结果,验证成功才算支付成功,并且会给用户付款通知业务系统接收地址异步通知时返回参数 sandbox=1 后台可以此作为标记判断加不加商品;真实环境请填NO,内购支付会到真实环境下验证支付结果,验证成功才算支付成功; | ||
| 73 | + @param productId 内购时商品的ID,只有内购时用到,其他支付可传nil; | ||
| 74 | + @param completionBlock 支付结果回调; | ||
| 75 | + @discussion 内购支付结果回调在此方法中的block回调中; | ||
| 76 | + */ | ||
| 77 | +- (void)pay:(CNLivePayArg *)payArg isDebug:(BOOL)isDebug productId:(NSString *)productId completion:(CNLCompletionBlock)completionBlock; | ||
| 78 | + | ||
| 79 | + | ||
| 80 | +/** | ||
| 81 | + 处理支付渠道通过URL启动App时传递的数据 | ||
| 82 | + 在 appdelegate | ||
| 83 | + iOS 8.0 以前 | ||
| 84 | + - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation; | ||
| 85 | + iOS 9.0及以后 | ||
| 86 | + - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options; | ||
| 87 | + 中实现此方法,否则支付结果回调无法实现; | ||
| 88 | + | ||
| 89 | + @param url 支付渠道在启动第三方应用时传递过来的URL | ||
| 90 | + | ||
| 91 | + @return 成功返回YES,失败返回NO; | ||
| 92 | + */ | ||
| 93 | +- (BOOL)handleOpenURL:(NSURL *)url; | ||
| 94 | + | ||
| 95 | +@end |
CNLivePaySDKDemo/CNLivePaySDK.framework/Info.plist
0 → 100644
No preview for this file type
CNLivePaySDKDemo/CNLivePaySDK.framework/Modules/module.modulemap
0 → 100644
CNLivePaySDKDemo/ViewController.m
| @@ -7,11 +7,9 @@ | @@ -7,11 +7,9 @@ | ||
| 7 | // | 7 | // |
| 8 | 8 | ||
| 9 | #import "ViewController.h" | 9 | #import "ViewController.h" |
| 10 | -#import "CNLivePaySDK.h" | 10 | +#import <CNLivePaySDK/CNLivePaySDK.h> |
| 11 | #import "PayMoneyTableViewCell.h" | 11 | #import "PayMoneyTableViewCell.h" |
| 12 | #import "PayTypeTableViewCell.h" | 12 | #import "PayTypeTableViewCell.h" |
| 13 | -#import <CommonCrypto/CommonDigest.h> | ||
| 14 | -#import "CNLivePayNetworkManager.h" | ||
| 15 | 13 | ||
| 16 | #define bSWidth self.view.bounds.size.width | 14 | #define bSWidth self.view.bounds.size.width |
| 17 | #define bSheight self.view.bounds.size.height | 15 | #define bSheight self.view.bounds.size.height |
| @@ -50,66 +48,22 @@ static NSString *payTypeCellId = @"payTypeCellId"; | @@ -50,66 +48,22 @@ static NSString *payTypeCellId = @"payTypeCellId"; | ||
| 50 | self.automaticallyAdjustsScrollViewInsets = NO; | 48 | self.automaticallyAdjustsScrollViewInsets = NO; |
| 51 | } | 49 | } |
| 52 | 50 | ||
| 53 | -#pragma mark - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| 54 | -#pragma mark 签名机制 | ||
| 55 | - | ||
| 56 | -- (NSString *)sortParameters:(NSDictionary*)parameters | ||
| 57 | -{ | ||
| 58 | - //对所有传入参数按照字段名的 ASCII 码从小到大排序 | ||
| 59 | - NSArray *keyArr=[parameters allKeys]; | ||
| 60 | - NSArray *arr = [keyArr sortedArrayUsingSelector:@selector(compare:)]; | ||
| 61 | - | ||
| 62 | - NSMutableString *string1 = [[NSMutableString alloc]init]; | ||
| 63 | - for (int i=0; i<arr.count; i++) { | ||
| 64 | - | ||
| 65 | - NSString *parametersString = parameters[[arr objectAtIndex:i]]; | ||
| 66 | - if (parametersString.length > 0) { | ||
| 67 | - [string1 appendString:[NSString stringWithFormat:@"%@=%@&",[arr objectAtIndex:i],parameters[[arr objectAtIndex:i]]]]; | ||
| 68 | - } | ||
| 69 | - } | ||
| 70 | - | ||
| 71 | - if (string1.length > 0) { | ||
| 72 | - [string1 deleteCharactersInRange:NSMakeRange(string1.length-1, 1)]; | ||
| 73 | - } | ||
| 74 | - | ||
| 75 | - return string1; | ||
| 76 | -} | ||
| 77 | - | ||
| 78 | - | ||
| 79 | -#pragma mark SHA1加密 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| 80 | - | ||
| 81 | -- (NSString*)sha1:(NSString *)string | ||
| 82 | -{ | ||
| 83 | - NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; | ||
| 84 | - | ||
| 85 | - uint8_t digest[CC_SHA1_DIGEST_LENGTH]; | ||
| 86 | - | ||
| 87 | - CC_SHA1(data.bytes, (unsigned int)data.length, digest); | ||
| 88 | - | ||
| 89 | - NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2]; | ||
| 90 | - | ||
| 91 | - for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) | ||
| 92 | - [output appendFormat:@"%02x", digest[i]]; | ||
| 93 | - | ||
| 94 | - while ([[output substringToIndex:1] isEqualToString:@"0"]) { | ||
| 95 | - output = [[NSMutableString alloc] initWithString:[output substringFromIndex:1]]; | ||
| 96 | - } | ||
| 97 | - | ||
| 98 | - return output; | ||
| 99 | -} | ||
| 100 | - | ||
| 101 | #pragma mark - Pay !!!!!!!!!!!!!!!!!!!!!! | 51 | #pragma mark - Pay !!!!!!!!!!!!!!!!!!!!!! |
| 102 | - (void)pay { | 52 | - (void)pay { |
| 103 | 53 | ||
| 104 | self.button.selected = YES; | 54 | self.button.selected = YES; |
| 105 | [_button setUserInteractionEnabled:NO]; | 55 | [_button setUserInteractionEnabled:NO]; |
| 106 | 56 | ||
| 57 | + int total_fee = [_moneyCell.textField.text floatValue] * 100; | ||
| 58 | + if (total_fee == 0) { | ||
| 59 | + total_fee = 1; | ||
| 60 | + } | ||
| 107 | if (_payType == 0) { | 61 | if (_payType == 0) { |
| 108 | CNLivePayArg *arg = [[CNLivePayArg alloc] init]; | 62 | CNLivePayArg *arg = [[CNLivePayArg alloc] init]; |
| 109 | arg.account = @"ztsx"; | 63 | arg.account = @"ztsx"; |
| 110 | arg.type = CNLivePayTypeAliPay; | 64 | arg.type = CNLivePayTypeAliPay; |
| 111 | arg.out_trade_no = [self produceRandomNumber]; | 65 | arg.out_trade_no = [self produceRandomNumber]; |
| 112 | - arg.total_fee = [_moneyCell.textField.text floatValue] * 100; | 66 | + arg.total_fee = total_fee; |
| 113 | arg.notify_url = @"http://unifypay.cnlive.com/test/notify_url"; | 67 | arg.notify_url = @"http://unifypay.cnlive.com/test/notify_url"; |
| 114 | arg.body = @"您购买了一头猪"; | 68 | arg.body = @"您购买了一头猪"; |
| 115 | NSDictionary *dict = @{@"a":@"1",@"b":@"2",@"c":@"3"}; | 69 | NSDictionary *dict = @{@"a":@"1",@"b":@"2",@"c":@"3"}; |
| @@ -130,7 +84,7 @@ static NSString *payTypeCellId = @"payTypeCellId"; | @@ -130,7 +84,7 @@ static NSString *payTypeCellId = @"payTypeCellId"; | ||
| 130 | arg.account = @"liveshow"; | 84 | arg.account = @"liveshow"; |
| 131 | arg.type = CNLivePayTypeWeChatPay; | 85 | arg.type = CNLivePayTypeWeChatPay; |
| 132 | arg.out_trade_no = [self produceRandomNumber]; | 86 | arg.out_trade_no = [self produceRandomNumber]; |
| 133 | - arg.total_fee = [_moneyCell.textField.text floatValue] * 100; | 87 | + arg.total_fee = total_fee; |
| 134 | arg.notify_url = @"http://unifypay.cnlive.com/test/notify_url"; | 88 | arg.notify_url = @"http://unifypay.cnlive.com/test/notify_url"; |
| 135 | arg.body = @"您购买了一头牛"; | 89 | arg.body = @"您购买了一头牛"; |
| 136 | 90 |