Commit dfc22a0f6d2a19a175e5f2a8ce5eaefb6322491a

Authored by liushiyu
1 parent 8cfe57b8

0.0.3

CNLivePayCostModule.podspec
... ... @@ -8,7 +8,7 @@
8 8  
9 9 Pod::Spec.new do |s|
10 10 s.name = 'CNLivePayCostModule'
11   - s.version = '0.0.2'
  11 + s.version = '0.0.3'
12 12 s.summary = 'A short description of CNLivePayCostModule.'
13 13  
14 14 # This description is used to generate tags and improve search results.
... ... @@ -30,7 +30,8 @@ TODO: Add long description of the pod here.
30 30  
31 31 s.ios.deployment_target = '10.0'
32 32  
33   - s.source_files = 'CNLivePayCostModule/Classes/**/*'
  33 +# s.source_files = 'CNLivePayCostModule/Classes/**/*' s.public_header_files
  34 + s.source_files = "CNLivePayCostModule/Classes/Core/*.{h,m}","CNLivePayCostModule/Classes/View/*.{h,m}","CNLivePayCostModule/Classes/UMSPosPayOnly/include/*.h","CNLivePayCostModule/Classes/UPPaymentControl/*.h"
34 35  
35 36 s.static_framework = true
36 37  
... ... @@ -39,6 +40,8 @@ TODO: Add long description of the pod here.
39 40 }
40 41  
41 42 # s.public_header_files = 'Pod/Classes/**/*.h'
  43 + s.vendored_libraries = 'CNLivePayCostModule/Classes/UMSPosPayOnly/*.a',"CNLivePayCostModule/Classes/UPPaymentControl/*.a"
  44 +
42 45  
43 46 #基础库导入
44 47 s.frameworks = 'UIKit', 'MapKit'
... ...
CNLivePayCostModule/Assets/CNLivePayCostModule.bundle/ye_zfcg@2x.png 0 → 100644

5.83 KB

CNLivePayCostModule/Assets/CNLivePayCostModule.bundle/ye_zfcg@3x.png 0 → 100644

8.71 KB

CNLivePayCostModule/Classes/Core/CNLivePayCostHeader.h
... ... @@ -17,8 +17,8 @@ typedef enum : NSUInteger {
17 17 CNLivePayCostTypeSweep,//扫码支付
18 18 CNLivePayCostTypeTicke,//门票支付
19 19 CNLivePayCostTypeSHShop,//上海电商支付
20   - CNLivePayCostTypeMall,//商城支付
21   - CNLivePayCostTypeBDMini,//百度小程序支付
  20 + CNLivePayCostTypeMall,//商城支付 未用
  21 + CNLivePayCostTypeBDMini,//百度小程序支付 未用
22 22 CNLivePayCostTypeCommunt,//社区支付
23 23 CNLivePayCostTypeHtml,//网页拉起支付
24 24 } CNLivePayCostType;
... ... @@ -37,7 +37,7 @@ typedef enum {
37 37 } CNLivePayCostPayType;
38 38  
39 39 typedef enum {
40   - CNLivePayCostThreePayTypePayment = 1,//群收款
  40 + CNLivePayCostThreePayTypePayment = 1,//群收款
41 41 CNLivePayCostThreePayTypeOrder = 3, //订单支付
42 42 CNLivePayCostThreePayTypeScren = 2, //扫码支付
43 43 CNLivePayCostThreePayTypeTicke = 4, //门票支付
... ... @@ -96,4 +96,7 @@ typedef enum {
96 96 #import "UMSPPPayUnifyPayPlugin.h"
97 97 //商务全名付 银联
98 98 #import "UPPaymentControl.h"
  99 +//商务全民付 设置
  100 +#import "UMSPPPayPluginSettings.h"
  101 +
99 102 #endif /* CNLivePayCostHeader_h */
... ...
CNLivePayCostModule/Classes/Core/CNLivePayCostModel.h
... ... @@ -11,7 +11,7 @@
11 11 #import "CNLivePayCostContentView.h"
12 12 NS_ASSUME_NONNULL_BEGIN
13 13  
14   -@interface CNLivePayCostModel : NSObject
  14 +@interface CNLivePayCostModel : NSObject<WXApiDelegate>
15 15  
16 16 +(instancetype)sharePayCostModel;
17 17  
... ...
CNLivePayCostModule/Classes/Core/CNLivePayCostModel.m
... ... @@ -32,6 +32,16 @@
32 32 return self;
33 33 }
34 34  
  35 +
  36 +- (void)onResp:(BaseResp*)resp {
  37 + //处理微信分享等功能
  38 + if ([resp isKindOfClass:[WXLaunchMiniProgramResp class]]) {
  39 + NSDictionary * exDict = [((WXLaunchMiniProgramResp *)resp).extMsg mj_JSONObject];
  40 + [[NSNotificationCenter defaultCenter] postNotificationName:@"kCNLiveLaunchMiniResultNotification" object:nil userInfo:exDict];
  41 + }
  42 +
  43 +}
  44 +
35 45 + (NSString *)payCost_getRandomOrderId {
36 46 // appId+渠道+年月日+毫秒数后10位+2位数的随机数
37 47 NSString *randomOrderId = @"";
... ...
CNLivePayCostModule/Classes/Core/CNLivePayCostModule.h
... ... @@ -12,6 +12,8 @@ NS_ASSUME_NONNULL_BEGIN
12 12  
13 13 @interface CNLivePayCostModule : NSObject
14 14  
  15 +/// 启动设置
  16 ++(void)finishLaunchingWithPayPluginSettings;
15 17  
16 18 /// 拉起网家家支付功能
17 19 /// @param paramDict 参数 (详细见.m中参数解释)
... ... @@ -31,6 +33,14 @@ NS_ASSUME_NONNULL_BEGIN
31 33 FromVC:(UIViewController *)formVC
32 34 ResultBlock:(void(^)(CNLivePayCostTypeResult resultType))resultBlock;
33 35  
  36 +/// 拉起电商支付功能
  37 +/// @param paramDict 参数
  38 +/// @param payType 支付界面控制器
  39 +/// @param resultBlock 支付结果
  40 ++(void)showShopPayViwWithParamDict:(NSDictionary *)paramDict
  41 + PayType:(CNLivePayCostPayType)payType
  42 + ResultBlock:(void(^)(CNLivePayCostTypeResult resultType))resultBlock;
  43 +
34 44 @end
35 45  
36 46 NS_ASSUME_NONNULL_END
... ...
CNLivePayCostModule/Classes/Core/CNLivePayCostModule.m
... ... @@ -8,13 +8,23 @@
8 8 #import "CNLivePayCostModule.h"
9 9 #import "CNLivePayCostContentView.h"
10 10 #import "CNLivePayCostModel.h"
  11 +
  12 +
  13 +
11 14 @interface CNLivePayCostModule ()
12 15  
13 16 @end
14 17  
15 18 @implementation CNLivePayCostModule
16 19  
17   -
  20 +/// 启动设置
  21 ++(void)finishLaunchingWithPayPluginSettings
  22 +{
  23 + [UMSPPPayPluginSettings sharedInstance].umspEnviroment = UMSP_PROD;
  24 +
  25 + //注册微信支付
  26 + [UMSPPPayUnifyPayPlugin registerApp:WeiChatAppId_Share universalLink:[NSString stringWithFormat:@"%@/",API_Host]];
  27 +}
18 28  
19 29 /// 拉起网家家支付功能
20 30 /// @param paramDict 参数 (详细见.m中参数解释)
... ... @@ -61,7 +71,8 @@
61 71 payModel.orderId = [paramDict stringValueForKey:@"orderId" default:@""];
62 72 payModel.userId = [paramDict stringValueForKey:@"userId" default:@""];
63 73 payModel.expand = [@{@"fromType":@"1",@"toType":@"3",@"sourceType":@"order"} mj_JSONString];
64   - payModel.descStr = [paramDict stringValueForKey:@"userId" default:@""];
  74 + payModel.descStr = [paramDict stringValueForKey:@"descStr" default:@""];
  75 + payModel.notifyUrl = [paramDict stringValueForKey:@"notifyUrl" default:@""];
65 76 payModel.price = [paramDict floatValueForKey:@"price" default:0.00];
66 77 if ([[paramDict stringValueForKey:@"orderType" default:@""] isEqualToString:@"3"]) payModel.isHiddenWjjpay =YES;
67 78 payModel.payType = payCostType;
... ... @@ -89,14 +100,13 @@
89 100 payModel.payType = payCostType;
90 101 }
91 102 //社区支付
92   - if (payCostType == CNLivePayCostTypeSHShop) {
  103 + if (payCostType == CNLivePayCostTypeCommunt) {
93 104 payModel.orderId = [paramDict stringValueForKey:@"orderId" default:@""];
94 105 payModel.isHiddenWjjpay = YES;
95 106 payModel.price = [paramDict floatValueForKey:@"price" default:1];
96 107 payModel.descStr = [paramDict stringValueForKey:@"body" default:@"网家家"];
97 108 payModel.attach = @{@"plat":@"i"};
98 109 payModel.notifyUrl = [paramDict stringValueForKey:@"notifyUrl" default:@""];
99   -
100 110 }
101 111 //网页支付
102 112 if (payCostType == CNLivePayCostTypeHtml) {
... ... @@ -126,14 +136,23 @@
126 136  
127 137 if ([[CNUserInfoManager manager].userInfoModel.unionUserStatus isEqualToString:@"3"]) payModel.isHiddenWjjpay = YES;
128 138  
129   - CNLivePayCostContentView * payCostView = [[CNLivePayCostContentView alloc] initWithFrame:AppKeyWindow.bounds PayModel:payModel FromVC:formVC CompleterBlock:^(CNLivePayCostType resultType) {
130   - if (resultBlock && resultType == CNLivePayCostTypeResultSucc) resultBlock(CNLivePayCostTypeResultSucc);
  139 + CNLivePayCostContentView * payCostView = [[CNLivePayCostContentView alloc] initWithFrame:AppKeyWindow.bounds PayModel:payModel FromVC:formVC CompleterBlock:^(CNLivePayCostTypeResult resultType) {
  140 + if (resultBlock) resultBlock(resultType);
131 141 }];
132 142 [AppKeyWindow addSubview:payCostView];
133 143 [payCostView show];
134 144  
135   - //支付成功通知回调
136   - [[NSNotificationCenter defaultCenter] addObserver:payCostView selector:@selector(resultPayAction:) name:@"kIMAMSG_ScanPaySuccessNotification" object:nil];
  145 + if (payCostType == CNLivePayCostTypeCommunt) {
  146 + //社区支付结果回调
  147 + [[NSNotificationCenter defaultCenter] addObserver:payCostView selector:@selector(resultPayAction:) name:@"kIMAMSG_CommunityPaySuccessNotification" object:nil];
  148 + }else if (payCostType == CNLivePayCostTypeSweep) {
  149 + //二维码识别结果回调
  150 + [[NSNotificationCenter defaultCenter] addObserver:payCostView selector:@selector(resultPayAction:) name:@"CNLiveContentSweepPaymentNotification" object:nil];
  151 + }else{
  152 + //支付成功通知回调
  153 + [[NSNotificationCenter defaultCenter] addObserver:payCostView selector:@selector(resultPayAction:) name:@"kIMAMSG_ScanPaySuccessNotification" object:nil];
  154 + }
  155 +
137 156 }
138 157  
139 158 /// 拉起苹果支付功能
... ... @@ -182,4 +201,29 @@
182 201 });
183 202 }];
184 203 }
  204 +
  205 +/// 拉起电商支付功能
  206 +/// @param paramDict 参数
  207 +/// @param payType 支付界面控制器
  208 +/// @param resultBlock 支付结果
  209 ++(void)showShopPayViwWithParamDict:(NSDictionary *)paramDict
  210 + PayType:(CNLivePayCostPayType)payType
  211 + ResultBlock:(void(^)(CNLivePayCostTypeResult resultType))resultBlock
  212 +{
  213 + NSString * orderId = [paramDict stringValueForKey:@"orderId" default:@""];
  214 + NSString * body = [paramDict stringValueForKey:@"body" default:@""];
  215 + NSString * price = [paramDict stringValueForKey:@"price" default:@"0.00"];
  216 + NSString * couponFee = [paramDict stringValueForKey:@"coupon_fee" default:@"0.00"];
  217 + NSString * balanceFee = [paramDict stringValueForKey:@"balance_fee" default:@"0.00"];
  218 + NSString * notifyUrl = [paramDict stringValueForKey:@"notifyUrl" default:@""];
  219 + NSString * password = [paramDict stringValueForKey:@"password" default:@""];
  220 +
  221 + NSString * p = [NSString stringWithFormat:@"%d",(NSInteger)([price floatValue]*100)];
  222 +
  223 + [CNLivePayCostNetwork requestWithUMSPayForPrePayWithOrderId:orderId Body:body Price:p CouponFee:couponFee BalanceFee:balanceFee NotifyUrl:notifyUrl Type:payType FrmId:@"debug" PassWord:password CompleterBlcok:^(NSInteger statue) {
  224 + if (resultBlock) {
  225 + if (statue == 0) resultBlock(statue == 0?CNLivePayCostTypeResultSucc:CNLivePayCostTypeResultFail);
  226 + }
  227 + }];
  228 +}
185 229 @end
... ...
CNLivePayCostModule/Classes/Core/CNLivePayCostNetwork.h
... ... @@ -22,6 +22,27 @@ NS_ASSUME_NONNULL_BEGIN
22 22 /// 支付id
23 23 @property (nonatomic, copy) NSString * payId;
24 24  
  25 +/// 调用维金支付之前的预支付订单
  26 +/// @param orderId 订单id
  27 +/// @param body 订单信息
  28 +/// @param price 价格
  29 +/// @param coupon_fee 优惠券金额
  30 +/// @param balance_fee 余额金额
  31 +/// @param notify_url 服务端回调地址
  32 +/// @param type 支付方式 3:支付宝,4:余额,9:云闪付
  33 +/// @param frmId 渠道id
  34 +/// param completerBlock 返回
  35 ++(void)requestWithUMSPayForPrePayWithOrderId:(NSString *)orderId
  36 + Body:(NSString *)body
  37 + Price:(NSString *)price
  38 + CouponFee:(NSString *)coupon_fee
  39 + BalanceFee:(NSString *)balance_fee
  40 + NotifyUrl:(NSString *)notify_url
  41 + Type:(CNLivePayCostPayType)type
  42 + FrmId:(NSString *)frmId
  43 + PassWord:(NSString *)password
  44 + CompleterBlcok:(void(^)(NSInteger statue))completerBlock;
  45 +
25 46 /**
26 47 拉起支付接口,调起支付动作
27 48  
... ... @@ -53,6 +74,8 @@ NS_ASSUME_NONNULL_BEGIN
53 74 @param expand 扩展字段
54 75 @param sourceId 资源 ID
55 76 @param payId 支付 ID
  77 + @param desc 描述
  78 + @param notifyUrl 回调地址
56 79 @param password 支付密码
57 80 @param completerBlock 支付结果返回
58 81 */
... ... @@ -62,6 +85,8 @@ NS_ASSUME_NONNULL_BEGIN
62 85 Expand:(NSString *)expand
63 86 SourceId:(NSString *)sourceId
64 87 PayId:(NSString *)payId
  88 + Desc:(NSString *)desc
  89 + NotifyUrl:(NSString *)notifyUrl
65 90 PassWord:(NSString *)password
66 91 CompleterBlock:(void (^)(NSInteger))completerBlock;
67 92  
... ... @@ -71,6 +96,9 @@ NS_ASSUME_NONNULL_BEGIN
71 96 -(void)requestActiveForPasswordWithLocalAmount:(float)amount
72 97 CompleterBlock:(void(^)(NSInteger isPassword))completerBlock;
73 98  
  99 +// 获取当前活动的navigationcontroller
  100 ++ (UINavigationController *)paycost_navigationViewController;
  101 +
74 102 /// 获取图片
75 103 /// @param imageName 图片名称
76 104 +(UIImage *)payCost_setImageWithName:(NSString *)imageName;
... ...
CNLivePayCostModule/Classes/Core/CNLivePayCostNetwork.m
... ... @@ -7,7 +7,7 @@
7 7  
8 8 #import "CNLivePayCostNetwork.h"
9 9 #import <CNLiveBaseTools/CNLiveTimeTools.h>
10   -
  10 +#import "CNLivePayCostModel.h"
11 11  
12 12 static NSString *const CNLiveWillBecomeActivePaycostForOrderNotification = @"CNLiveWillBecomeActivePaycostForOrderNotification";
13 13 static NSString *const CNLiveWillBecomeActivePaycostForGroupNotification = @"CNLiveWillBecomeActivePaycostForGroupNotification";
... ... @@ -15,6 +15,9 @@ static NSString *const CNLiveWillBecomeActivePaycostForTickeNotification = @&quot;CNL
15 15 static NSString *const CNLiveWillBecomeActivePaycostForScanNotification = @"CNLiveWillBecomeActivePaycostForScanNotification";
16 16 static NSString *const CNLiveWillBecomeActivePaycostForSHShopNotification = @"CNLiveWillBecomeActivePaycostForSHShopNotification";
17 17  
  18 +#define CNUMSPayWithPrePayApiContentURL (@"https://apiumspay.cnlive.com/app/prePay")
  19 +#define CNUMSPayWithBalancePayApiContentURL (@"https://apiumspay.cnlive.com/app/balancePay")
  20 +
18 21 @implementation CNLivePayCostNetwork
19 22  
20 23 +(instancetype)sharePayCostNetWork
... ... @@ -27,6 +30,112 @@ static NSString *const CNLiveWillBecomeActivePaycostForSHShopNotification = @&quot;CN
27 30 return payCostNetWork;
28 31 }
29 32  
  33 +#pragma mark = 生成预支付订单
  34 +
  35 +/// 调用维金支付之前的预支付订单
  36 +/// @param orderId 订单id
  37 +/// @param body 订单信息
  38 +/// @param price 价格
  39 +/// @param coupon_fee 优惠券金额
  40 +/// @param balance_fee 余额金额
  41 +/// @param notify_url 服务端回调地址
  42 +/// @param type 支付方式 3:支付宝,4:余额,9:云闪付
  43 +/// @param frmId 渠道id
  44 +/// @param completerBlock 返回
  45 ++(void)requestWithUMSPayForPrePayWithOrderId:(NSString *)orderId
  46 + Body:(NSString *)body
  47 + Price:(NSString *)price
  48 + CouponFee:(NSString *)coupon_fee
  49 + BalanceFee:(NSString *)balance_fee
  50 + NotifyUrl:(NSString *)notify_url
  51 + Type:(CNLivePayCostPayType)type
  52 + FrmId:(NSString *)frmId
  53 + PassWord:(NSString *)password
  54 + CompleterBlcok:(void(^)(NSInteger statue))completerBlock
  55 +{
  56 + if (type == CNLivePayCostPayTypeWeChatPay) {
  57 + NSString * path = [NSString stringWithFormat:@"pages/pays/pay/pay?appId=%@&body=%@&out_trade_no=%@&user_id=%@&total_fee=%@&notify_url=%@&type=1&&frmId=ios&&page_url=%@&&coupon_fee=0&&balance_fee=0",AppId,body,orderId,CNUserShareModel.uid?CNUserShareModel.uid:@"",price,notify_url,notify_url];
  58 + NSLog(@"===>%@",path);
  59 + WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
  60 + launchMiniProgramReq.userName = @"gh_061b347b32c1"; //拉起的小程序的username
  61 + launchMiniProgramReq.path = path;
  62 + launchMiniProgramReq.miniProgramType = WXMiniProgramTypePreview;
  63 + [WXApi sendReq:launchMiniProgramReq completion:^(BOOL success) {
  64 +
  65 + }];
  66 + }else if (type == CNLivePayCostPayTypeWjjPay) {
  67 +
  68 + NSDictionary * paramDict = @{
  69 + @"appId":AppId,
  70 + @"user_id":CNUserShareModel.uid?CNUserShareModel.uid:@"",
  71 + @"out_trade_no":orderId,
  72 + @"body":body,
  73 + @"coupon_fee":@"0",
  74 + @"balance_fee":price,
  75 + @"notify_url":notify_url,
  76 + @"page_url":@"",
  77 + @"type":@"4",
  78 + @"password":[NSString md5String:password],
  79 + @"frmId":@"ios"
  80 + };
  81 + [CNLiveNetworking setAllowRequestDefaultArgument:YES];
  82 + [CNLiveNetworking setupShowDataResult:YES];
  83 + [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNUMSPayWithBalancePayApiContentURL Param:paramDict CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
  84 + [QMUITips hideAllToastInView:AppKeyWindow animated:YES];
  85 + long errorCode = [responseObject longValueForKey:@"errorCode" default:100];
  86 + NSString * errorMessage = [responseObject stringValueForKey:@"errorMessage" default:@""];
  87 + if (errorCode == 0) {
  88 + if (completerBlock) completerBlock(0);
  89 + }else{
  90 + [QMUITips showError:[errorMessage isNotBlank]?errorMessage:@"支付失败" inView:AppKeyWindow hideAfterDelay:1.5];
  91 + if (completerBlock) {
  92 + if (errorCode == 100011) completerBlock(2);
  93 + if (errorCode != 100011) completerBlock(3);
  94 + }
  95 + }
  96 + }];
  97 +
  98 + }else{
  99 + NSString * index = @"";
  100 + if (type == CNLivePayCostPayTypeAliPay) index = @"3";
  101 + if (type == CNLivePayCostPayTypeUnionPay) index = @"9";
  102 + if (type == CNLivePayCostPayTypeWjjPay) index = @"4";
  103 + NSDictionary * paramDict = @{
  104 + @"appId":AppId,
  105 + @"user_id":CNUserShareModel.uid?CNUserShareModel.uid:@"",
  106 + @"out_trade_no":orderId,
  107 + @"body":body,
  108 + @"total_fee":price,
  109 + @"coupon_fee":coupon_fee,
  110 + @"balance_fee":balance_fee,
  111 + @"notify_url":notify_url,
  112 + @"page_url":@"",
  113 + @"type":index,
  114 + @"frmId":frmId
  115 + };
  116 + [CNLiveNetworking setupShowResult:YES];
  117 + [CNLiveNetworking setupShowDataResult:NO];
  118 + [CNLiveNetworking setAllowRequestDefaultArgument:YES];
  119 + [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNUMSPayWithPrePayApiContentURL Param:paramDict CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
  120 + [CNLivePayCostNetwork payCost_chooseRequestWithResponseObject:responseObject Error:error isData:YES CompleterBlock:^(id responseObject, NSInteger errorCode) {
  121 + if (responseObject) {
  122 + NSString *payDataJsonStr = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:responseObject options:NSJSONWritingPrettyPrinted error:nil] encoding:NSUTF8StringEncoding];
  123 + [UMSPPPayUnifyPayPlugin payWithPayChannel:CHANNEL_ALIMINIPAY payData:payDataJsonStr callbackBlock:^(NSString *resultCode, NSString *resultInfo) {
  124 + if (completerBlock) {
  125 + if ([resultCode isEqualToString:@"0000"]) completerBlock(0);
  126 + if ([resultCode isEqualToString:@"1000"]) completerBlock(3);//余额支付取消支付 code1000
  127 + }
  128 +
  129 + }];
  130 + }
  131 + }];
  132 + }];
  133 + }
  134 +}
  135 +
  136 +
  137 +#pragma mark = 以下为老接口
  138 +
30 139 /**
31 140 拉起支付接口,调起支付动作
32 141  
... ... @@ -49,6 +158,9 @@ static NSString *const CNLiveWillBecomeActivePaycostForSHShopNotification = @&quot;CN
49 158 FormVC:(UIViewController *)formVC
50 159 CompleterBlcok:(void(^)(NSInteger statue))completerBlock
51 160 {
  161 +
  162 +
  163 +
52 164 if ((threeType == CNLivePayCostThreePayTypeTicke //门票
53 165 || threeType == CNLivePayCostThreePayTypeScren
54 166 || threeType == CNLivePayCostThreePayTypeOrder
... ... @@ -59,70 +171,111 @@ static NSString *const CNLiveWillBecomeActivePaycostForSHShopNotification = @&quot;CN
59 171 CNLivePayType type = payType == CNLivePayCostPayTypeWeChatPay ? CNLivePayCostPayTypeWeChatPay : payType == CNLivePayCostPayTypeAliPay ? CNLivePayCostPayTypeAliPay : CNLivePayCostPayTypeUnionPay;
60 172  
61 173 NSString * accountString = payType == CNLivePayCostPayTypeWeChatPay ? WXAccount : payType == CNLivePayCostPayTypeAliPay ? @"ztsx" : @"ztyl";
  174 +
62 175  
63   - float pri = [price floatValue]*100;
64   -
65   - NSString * notifyUrls = jsfy==YES ? CNJSFYNotifyUrl: (payType == CNLivePayCostPayTypeWeChatPay ? CNWeChatPayUrl : payType == CNLivePayCostPayTypeAliPay ? CNAliPayUrl : CNUnionPayUrl);
66   -
67   - //上海电商需要特殊的回调地址
68   - if (!CNLiveStringIsEmpty(notifyUrl)
69   - && threeType == CNLivePayCostThreePayTypeSHSop) notifyUrls = notifyUrl;
70   -
71   - [self requestPayFromWXAndAliPay:type OrderId:groupId Account:accountString PriceId:pri Desc:desc Attach:attach CNLiveActiveGroupThreePayType:threeType NotifyUrl:notifyUrls NetAddUrlSchems:payType == CNLivePayCostPayTypeWeChatPay ? nil : payType == CNLivePayCostPayTypeAliPay ? CNLiveNetAddUrlSchems : CNLiveNetAddUnionPaySchems FormVC:formVC CompleterBlock:^{
72   - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
73   - if (completerBlock) completerBlock(0);
74   - });
75   - }];
76   -
  176 + if ([[CNLivePayCostModel sharePayCostModel].protocol pushActivePaymentNewPaycostWayWithModthod]) {
  177 +
  178 + NSString * p = [NSString stringWithFormat:@"%d",(NSInteger)([price floatValue]*100)];
  179 +
  180 + [CNLivePayCostNetwork requestWithUMSPayForPrePayWithOrderId:groupId Body:desc Price:p CouponFee:@"0" BalanceFee:@"0" NotifyUrl:notifyUrl Type:payType FrmId:@"ios" PassWord:@"" CompleterBlcok:^(NSInteger statue) {
  181 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  182 + if (completerBlock) completerBlock(statue);
  183 + });
  184 + }];
  185 + }else{
  186 + float pri = [price floatValue]*100;
  187 +
  188 + NSString * notifyUrls = jsfy==YES ? CNJSFYNotifyUrl: (payType == CNLivePayCostPayTypeWeChatPay ? CNWeChatPayUrl : payType == CNLivePayCostPayTypeAliPay ? CNAliPayUrl : CNUnionPayUrl);
  189 +
  190 + //上海电商需要特殊的回调地址
  191 + if (!CNLiveStringIsEmpty(notifyUrl)
  192 + && threeType == CNLivePayCostThreePayTypeSHSop) notifyUrls = notifyUrl;
  193 +
  194 + [self requestPayFromWXAndAliPay:type OrderId:groupId Account:accountString PriceId:pri Desc:desc Attach:attach CNLiveActiveGroupThreePayType:threeType NotifyUrl:notifyUrls NetAddUrlSchems:payType == CNLivePayCostPayTypeWeChatPay ? nil : payType == CNLivePayCostPayTypeAliPay ? CNLiveNetAddUrlSchems : CNLiveNetAddUnionPaySchems FormVC:formVC CompleterBlock:^{
  195 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  196 + if (completerBlock) completerBlock(0);
  197 + });
  198 + }];
  199 + }
77 200 }else{
78 201  
79   - __weak typeof(self) weakSelf = self;
80   - NSDictionary * paramDict = @{
81   - @"groupId":groupId,
82   - @"sid":CNUserShareModel.uid,
83   - @"price":price,
84   - @"fundsId":fundsId
85   - };
86   - [CNLiveNetworking setAllowRequestDefaultArgument:YES];
87   - [CNLiveNetworking setupShowDataResult:YES];
88   - [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNPayByGroupMembersUrl Param:paramDict CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
89   -
  202 + if ([[CNLivePayCostModel sharePayCostModel].protocol pushActivePaymentNewPaycostWayWithModthod]) {
  203 +
  204 + NSString * p = [NSString stringWithFormat:@"%d",(NSInteger)([price floatValue]*100)];
  205 +
  206 + NSDictionary * paramDict = @{
  207 + @"appId":AppId,
  208 + @"user_id":CNUserShareModel.uid?CNUserShareModel.uid:@"",
  209 + @"out_trade_no":groupId,
  210 + @"body":desc,
  211 + @"coupon_fee":@"0",
  212 + @"balance_fee":p,
  213 + @"notify_url":notifyUrl,
  214 + @"page_url":@"",
  215 + @"type":@"4",
  216 + @"password":password,
  217 + @"frmId":@"ios"
  218 + };
  219 + [CNLiveNetworking setAllowRequestDefaultArgument:YES];
  220 + [CNLiveNetworking setupShowDataResult:YES];
  221 + [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNUMSPayWithBalancePayApiContentURL Param:paramDict CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
  222 + [CNLivePayCostNetwork payCost_chooseRequestWithResponseObject:responseObject Error:error isData:YES CompleterBlock:^(id responseObject, NSInteger errorCode) {
  223 + if (responseObject) {
  224 + if (completerBlock) completerBlock(0);
  225 + }else{
  226 + if (completerBlock) completerBlock(1);
  227 + }
  228 + }];
  229 + }];
  230 +
  231 + } else {
  232 + __weak typeof(self) weakSelf = self;
  233 + NSDictionary * paramDict = @{
  234 + @"groupId":groupId,
  235 + @"sid":CNUserShareModel.uid,
  236 + @"price":price,
  237 + @"fundsId":fundsId
  238 + };
  239 + [CNLiveNetworking setAllowRequestDefaultArgument:YES];
  240 + [CNLiveNetworking setupShowDataResult:YES];
  241 + [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNPayByGroupMembersUrl Param:paramDict CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
90 242  
91   - if (error == nil && [[responseObject allKeys] containsObject:@"payId"] && responseObject[@"payId"] != nil && ![responseObject[@"payId"] isKindOfClass:[NSNull class]]) {
92   -
93   - if (payType == CNLivePayCostPayTypeWjjPay) {
  243 + if (error == nil && [[responseObject allKeys] containsObject:@"payId"] && responseObject[@"payId"] != nil && ![responseObject[@"payId"] isKindOfClass:[NSNull class]]) {
94 244  
95   - NSString * toid = threeType == CNLivePayCostTypeOrder ? fundsId : groupId;
96   - [self requestActiveGroupWjjPayMentWithFromId:CNUserShareModel.uid Toid:toid Price:[price floatValue] Expand:expand SourceId:[responseObject objectForKey:@"payId"] PayId:responseObject[@"payId"] PassWord:password CompleterBlock:^(NSInteger statue) {
97   - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
98   - if (completerBlock) completerBlock(statue);
99   - });
100   - }];
  245 + if (payType == CNLivePayCostPayTypeWjjPay) {
  246 +
  247 + NSString * toid = threeType == CNLivePayCostTypeOrder ? fundsId : groupId;
  248 + [self requestActiveGroupWjjPayMentWithFromId:CNUserShareModel.uid Toid:toid Price:[price floatValue] Expand:expand SourceId:[responseObject objectForKey:@"payId"] PayId:responseObject[@"payId"] Desc:desc NotifyUrl:notifyUrl PassWord:password CompleterBlock:^(NSInteger statue) {
  249 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  250 + if (completerBlock) completerBlock(statue);
  251 + });
  252 + }];
  253 + }else{
  254 + CNLivePayType type = payType == CNLivePayCostPayTypeWeChatPay ? CNLivePayTypeWeChatPay : payType == CNLivePayCostPayTypeAliPay ? CNLivePayTypeAliPay : CNLivePayTypeUnionpay;
  255 +
  256 + NSString * accountString = payType == CNLivePayCostPayTypeWeChatPay ? WXAccount : payType == CNLivePayCostPayTypeAliPay ? @"ztsx" : @"ztyl";
  257 +
  258 + float price = [responseObject[@"price"] floatValue]*100;
  259 + NSString * notifyUrls = jsfy == YES ? CNJSFYNotifyUrl : (payType == CNLivePayCostPayTypeWeChatPay ? CNWeChatPayUrl : payType == CNLivePayCostPayTypeAliPay ? CNAliPayUrl : CNUnionPayUrl);
  260 +
  261 + if (!CNLiveStringIsEmpty(notifyUrl)) notifyUrls = notifyUrl;
  262 +
  263 + weakSelf.payId = responseObject[@"payId"];
  264 +
  265 + [weakSelf requestPayFromWXAndAliPay:type OrderId:responseObject[@"payId"] Account:accountString PriceId:price Desc:desc Attach:@{} CNLiveActiveGroupThreePayType:threeType NotifyUrl:notifyUrls NetAddUrlSchems:payType == CNLivePayCostPayTypeWeChatPay ? nil : payType == CNLivePayCostPayTypeAliPay ? CNLiveNetAddUrlSchems : CNLiveNetAddUnionPaySchems FormVC:formVC CompleterBlock:^{
  266 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  267 + if (completerBlock) completerBlock(0);
  268 + });
  269 + }];
  270 + }
101 271 }else{
102   - CNLivePayType type = payType == CNLivePayCostPayTypeWeChatPay ? CNLivePayTypeWeChatPay : payType == CNLivePayCostPayTypeAliPay ? CNLivePayTypeAliPay : CNLivePayTypeUnionpay;
103   -
104   - NSString * accountString = payType == CNLivePayCostPayTypeWeChatPay ? WXAccount : payType == CNLivePayCostPayTypeAliPay ? @"ztsx" : @"ztyl";
105   -
106   - float price = [responseObject[@"price"] floatValue]*100;
107   - NSString * notifyUrls = jsfy == YES ? CNJSFYNotifyUrl : (payType == CNLivePayCostPayTypeWeChatPay ? CNWeChatPayUrl : payType == CNLivePayCostPayTypeAliPay ? CNAliPayUrl : CNUnionPayUrl);
108   -
109   - if (!CNLiveStringIsEmpty(notifyUrl)) notifyUrls = notifyUrl;
110   -
111   - weakSelf.payId = responseObject[@"payId"];
112   -
113   - [weakSelf requestPayFromWXAndAliPay:type OrderId:responseObject[@"payId"] Account:accountString PriceId:price Desc:desc Attach:@{} CNLiveActiveGroupThreePayType:threeType NotifyUrl:notifyUrls NetAddUrlSchems:payType == CNLivePayCostPayTypeWeChatPay ? nil : payType == CNLivePayCostPayTypeAliPay ? CNLiveNetAddUrlSchems : CNLiveNetAddUnionPaySchems FormVC:formVC CompleterBlock:^{
114   - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
115   - if (completerBlock) completerBlock(0);
116   - });
117   - }];
  272 + [QMUITips hideAllToastInView:AppKeyWindow animated:YES];
  273 + [QMUITips showError:@"预支付失败" inView:AppKeyWindow hideAfterDelay:1.5];
118 274 }
119   - }else{
120   - [QMUITips hideAllToastInView:AppKeyWindow animated:YES];
121   - [QMUITips showError:@"预支付失败" inView:AppKeyWindow hideAfterDelay:1.5];
122   - }
123   -
124   - if (error) [QMUITips showError:[error.userInfo objectForKey:NSLocalizedDescriptionKey] inView:AppKeyWindow hideAfterDelay:1.5];
125   - }];
  275 +
  276 + if (error) [QMUITips showError:[error.userInfo objectForKey:NSLocalizedDescriptionKey] inView:AppKeyWindow hideAfterDelay:1.5];
  277 + }];
  278 + }
126 279 }
127 280 }
128 281 #pragma mark - 网加加余额支付&连带生成预订单
... ... @@ -145,72 +298,88 @@ static NSString *const CNLiveWillBecomeActivePaycostForSHShopNotification = @&quot;CN
145 298 Expand:(NSString *)expand
146 299 SourceId:(NSString *)sourceId
147 300 PayId:(NSString *)payId
  301 + Desc:(NSString *)desc
  302 + NotifyUrl:(NSString *)notifyUrl
148 303 PassWord:(NSString *)password
149 304 CompleterBlock:(void (^)(NSInteger))completerBlock
150 305 {
151   - [self requestActiveForPrivateKeyWithCompleterBlock:^(NSDictionary * dict) {
152 306  
153   - NSDictionary * signDict = @{
154   - @"userId":CNUserShareModel.uid,
155   - @"platFormId":[[NSBundle mainBundle] bundleIdentifier],
156   - @"timestamp":[NSString stringWithFormat:@"%ld",(long)[CNLiveTimeTools getNow10NumTimestamp]],
157   - @"fromId":fromId,
158   - @"toId":toId,
159   - @"price":[NSString stringWithFormat:@"%.2f",price],
160   - @"expand":expand,
161   - @"sourceId":sourceId
162   - };
  307 + if ([[CNLivePayCostModel sharePayCostModel].protocol pushActivePaymentNewPaycostWayWithModthod]) {
163 308  
164   - NSMutableDictionary * param = [[CNLiveEncryptManager manager] validationEncryptWithParams:signDict preValiDic:dict].mutableCopy;
  309 + NSString * p = [NSString stringWithFormat:@"%d",(NSInteger)(price*100)];
165 310  
166   - [param addEntriesFromDictionary:@{@"appId":AppId}];
  311 + [CNLivePayCostNetwork requestWithUMSPayForPrePayWithOrderId:payId Body:desc Price:p CouponFee:@"0" BalanceFee:@"0" NotifyUrl:notifyUrl Type:CNLivePayCostPayTypeWjjPay FrmId:@"ios" PassWord:password CompleterBlcok:^(NSInteger statue) {
  312 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  313 + if (completerBlock) completerBlock(statue);
  314 + });
  315 + }];
167 316  
168   - [CNLiveNetworking setupShowDataResult:NO];
169   - [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNGroupWjjPayWjjPrePaySourceUrl Param:param CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
  317 + } else {
  318 +
  319 + [self requestActiveForPrivateKeyWithCompleterBlock:^(NSDictionary * dict) {
170 320  
171   - if (error) {
172   - [QMUITips hideAllToastInView:AppKeyWindow animated:YES];
173   - if(error.code != 406) [QMUITips showError:[error.userInfo objectForKey:NSLocalizedDescriptionKey] inView:AppKeyWindow hideAfterDelay:2];
174   - if (error.code == 406) completerBlock(1);
175   - return;;
176   - }
177   -
178   - [CNLivePayCostNetwork payCost_chooseRequestWithResponseObject:responseObject Error:error isData:YES CompleterBlock:^(id responseObject, NSInteger errorCode) {
  321 + NSDictionary * signDict = @{
  322 + @"userId":CNUserShareModel.uid,
  323 + @"platFormId":[[NSBundle mainBundle] bundleIdentifier],
  324 + @"timestamp":[NSString stringWithFormat:@"%ld",(long)[CNLiveTimeTools getNow10NumTimestamp]],
  325 + @"fromId":fromId,
  326 + @"toId":toId,
  327 + @"price":[NSString stringWithFormat:@"%.2f",price],
  328 + @"expand":expand,
  329 + @"sourceId":sourceId
  330 + };
  331 +
  332 + NSMutableDictionary * param = [[CNLiveEncryptManager manager] validationEncryptWithParams:signDict preValiDic:dict].mutableCopy;
  333 +
  334 + [param addEntriesFromDictionary:@{@"appId":AppId}];
  335 +
  336 + [CNLiveNetworking setupShowDataResult:NO];
  337 + [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNGroupWjjPayWjjPrePaySourceUrl Param:param CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
179 338  
180   - if (responseObject) {
181   - NSDictionary * subParamDic = @{
182   - @"userId":CNUserShareModel.uid,
183   - @"platFormId":[[NSBundle mainBundle] bundleIdentifier],
184   - @"timestamp":[NSString stringWithFormat:@"%ld",(long)[CNLiveTimeTools getNow10NumTimestamp]],
185   - @"preId":[responseObject objectForKey:@"preId"],
186   - @"password":[NSString md5String:password],
187   - };
188   -
189   - NSMutableDictionary * subParam = [[CNLiveEncryptManager manager] validationEncryptWithParams:subParamDic preValiDic:dict].mutableCopy;
190   -
191   - [subParam addEntriesFromDictionary:@{@"appId":AppId}];
  339 + if (error) {
  340 + [QMUITips hideAllToastInView:AppKeyWindow animated:YES];
  341 + if(error.code != 406) [QMUITips showError:[error.userInfo objectForKey:NSLocalizedDescriptionKey] inView:AppKeyWindow hideAfterDelay:2];
  342 + if (error.code == 406) completerBlock(1);
  343 + return;;
  344 + }
  345 +
  346 + [CNLivePayCostNetwork payCost_chooseRequestWithResponseObject:responseObject Error:error isData:YES CompleterBlock:^(id responseObject, NSInteger errorCode) {
192 347  
193   - [CNLiveNetworking setupShowResult:YES];
194   - [CNLiveNetworking setupShowDataResult:YES];
195   - [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNGroupWjjPayWjjSourceUrl Param:subParam CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
  348 + if (responseObject) {
  349 + NSDictionary * subParamDic = @{
  350 + @"userId":CNUserShareModel.uid,
  351 + @"platFormId":[[NSBundle mainBundle] bundleIdentifier],
  352 + @"timestamp":[NSString stringWithFormat:@"%ld",(long)[CNLiveTimeTools getNow10NumTimestamp]],
  353 + @"preId":[responseObject objectForKey:@"preId"],
  354 + @"password":[NSString md5String:password],
  355 + };
  356 +
  357 + NSMutableDictionary * subParam = [[CNLiveEncryptManager manager] validationEncryptWithParams:subParamDic preValiDic:dict].mutableCopy;
196 358  
197   - [QMUITips hideAllToastInView:AppKeyWindow animated:YES];
  359 + [subParam addEntriesFromDictionary:@{@"appId":AppId}];
198 360  
199   - if (error == nil) {
  361 + [CNLiveNetworking setupShowResult:YES];
  362 + [CNLiveNetworking setupShowDataResult:YES];
  363 + [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodPOST URLString:CNGroupWjjPayWjjSourceUrl Param:subParam CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
200 364  
201   - completerBlock(0);
  365 + [QMUITips hideAllToastInView:AppKeyWindow animated:YES];
202 366  
203   - }else{
204   - if (error.code != 414) [QMUITips showError:[error.userInfo objectForKey:NSLocalizedDescriptionKey] inView:AppKeyWindow hideAfterDelay:1.5];
205   - if (error.code == 414) completerBlock(2);
206   - }
207   - }];
208   - }else{
209   - [QMUITips hideAllTipsInView:AppKeyWindow];
210   - }
  367 + if (error == nil) {
  368 +
  369 + completerBlock(0);
  370 +
  371 + }else{
  372 + if (error.code != 414) [QMUITips showError:[error.userInfo objectForKey:NSLocalizedDescriptionKey] inView:AppKeyWindow hideAfterDelay:1.5];
  373 + if (error.code == 414) completerBlock(2);
  374 + }
  375 + }];
  376 + }else{
  377 + [QMUITips hideAllTipsInView:AppKeyWindow];
  378 + }
  379 + }];
211 380 }];
212 381 }];
213   - }];
  382 + }
214 383 }
215 384  
216 385 #pragma mark - 获取相关的公钥及随机秘钥
... ... @@ -466,10 +635,18 @@ static NSString *const CNLiveWillBecomeActivePaycostForSHShopNotification = @&quot;CN
466 635 && ((NSDictionary *)responseObject[@"data"]).allValues.count > 0) {
467 636 if (completerBlock) completerBlock(responseObject[@"data"],0);
468 637 }else{
469   - [QMUITips showError:@"请求失败" inView:AppKeyWindow hideAfterDelay:1.5];
470   - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
471   - if (completerBlock) completerBlock(nil,-500);
472   - });
  638 + NSString * errorMessage = [responseObject stringValueForKey:@"errorMessage" default:@""];
  639 + if ([errorMessage length] > 0) {
  640 + [QMUITips showError:errorMessage inView:AppKeyWindow hideAfterDelay:1.5];
  641 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  642 + if (completerBlock) completerBlock(nil,-500);
  643 + });
  644 + }else{
  645 + [QMUITips showError:@"请求失败" inView:AppKeyWindow hideAfterDelay:1.5];
  646 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  647 + if (completerBlock) completerBlock(nil,-500);
  648 + });
  649 + }
473 650 }
474 651 }else{
475 652 if (completerBlock) completerBlock(responseObject,0);
... ...
CNLivePayCostModule/Classes/Core/CNLivePayCostProtocol.h
... ... @@ -15,6 +15,10 @@ NS_ASSUME_NONNULL_BEGIN
15 15 /// @param isChangePassword 是否是设置密码界面
16 16 -(void)pushActivePaymentResultViewModthodChangePassword:(BOOL)isChangePassword;
17 17  
  18 +
  19 +/// 改变支付调用方法
  20 +-(BOOL)pushActivePaymentNewPaycostWayWithModthod;
  21 +
18 22 @end
19 23  
20 24 NS_ASSUME_NONNULL_END
... ...
CNLivePayCostModule/Classes/View/CNLivePayCostContentView.h
... ... @@ -12,7 +12,7 @@
12 12  
13 13 NS_ASSUME_NONNULL_BEGIN
14 14  
15   -typedef void(^CompleterBlock)(CNLivePayCostType resultType);
  15 +typedef void(^CompleterBlock)(CNLivePayCostTypeResult resultType);
16 16  
17 17 @interface CNLivePayCostContentView : UIView
18 18  
... ...
CNLivePayCostModule/Classes/View/CNLivePayCostContentView.m
... ... @@ -62,6 +62,8 @@ static NSString *const CNActiveContentPayViewIdentifier = @&quot;CNActiveContentPayVi
62 62  
63 63 //进入app的成功回调
64 64 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(standardBecomeActive) name:UIApplicationWillEnterForegroundNotification object:nil];
  65 +
  66 + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(launchMiniResultAction:) name:@"kCNLiveLaunchMiniResultNotification" object:nil];
65 67 // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateGroupNoticeSuccess:) name:kIMAMSG_UpdateGroupInfoNotification object:nil];
66 68 }
67 69 return self;
... ... @@ -70,6 +72,18 @@ static NSString *const CNActiveContentPayViewIdentifier = @&quot;CNActiveContentPayVi
70 72 {
71 73 if (self) [self dismissAction:NULL];
72 74 }
  75 +-(void)launchMiniResultAction:(NSNotification *)note
  76 +{
  77 + NSDictionary * paramDict = (NSDictionary *)note.userInfo;
  78 + NSString * code = [paramDict stringValueForKey:@"code" default:@""];
  79 + NSString * message = [paramDict stringValueForKey:@"message" default:@""];
  80 + NSString * orderId = [paramDict stringValueForKey:@"out_trade_no" default:@""];
  81 + if ([orderId isEqualToString:self.payModel.orderId]) {
  82 + if ([code isEqualToString:@"0"] && self.completerBlock)self.completerBlock(CNLivePayCostTypeResultSucc);
  83 + if ([code isEqualToString:@"1"] && self.completerBlock)self.completerBlock(CNLivePayCostTypeResultUnknow);
  84 + if ([code isEqualToString:@"2"] && self.completerBlock)self.completerBlock(CNLivePayCostTypeResultFail);
  85 + }
  86 +}
73 87 -(void)resultPayAction:(NSNotification *)note
74 88 {
75 89 __weak typeof(self) weakSelf = self;
... ... @@ -79,6 +93,11 @@ static NSString *const CNActiveContentPayViewIdentifier = @&quot;CNActiveContentPayVi
79 93 NSDictionary * systemPayData = [paramDict dictionaryForKey:@"systemPayData"];
80 94 NSString * type = [systemPayData stringValueForKey:@"text" default:@"0"];
81 95 if (weakSelf.completerBlock) weakSelf.completerBlock([type isEqualToString:@"2"]?CNLivePayCostTypeResultSucc:CNLivePayCostTypeResultFail);
  96 + }else if ([note.name isEqualToString:@"CNLiveContentSweepPaymentNotification"]) {
  97 + NSDictionary * paramDict = (NSDictionary *)note.object;
  98 + if ([[paramDict stringValueForKey:@"payType" default:@""] isEqualToString:@"0"]) {
  99 + if (weakSelf.completerBlock) weakSelf.completerBlock(CNLivePayCostTypeResultSucc);
  100 + }
82 101 }else{
83 102 if (weakSelf.completerBlock) weakSelf.completerBlock(CNLivePayCostTypeResultSucc);
84 103 }
... ... @@ -170,6 +189,7 @@ static NSString *const CNActiveContentPayViewIdentifier = @&quot;CNActiveContentPayVi
170 189 if (indexPath.row == 0) cell.textLabel.textAlignment = NSTextAlignmentCenter;
171 190 NSDictionary * dict = [self.dataArray objectAtIndex:indexPath.row];
172 191 cell.textLabel.text = [dict objectForKey:@"text"];
  192 + cell.textLabel.textColor = [UIColor blackColor];
173 193 UIImage * image = [CNLivePayCostNetwork payCost_setImageWithName:[dict objectForKey:@"image"]];
174 194 cell.imageView.image = image;
175 195 cell.accessoryView = [self setSelectView];
... ... @@ -232,13 +252,13 @@ static NSString *const CNActiveContentPayViewIdentifier = @&quot;CNActiveContentPayVi
232 252 [button startButtonActivityIndicatorView:UIActivityIndicatorViewStyleWhite];
233 253  
234 254 if (self.payModel.payType == CNLivePayCostTypeGroup) {
235   -
  255 +
236 256 [[CNLivePayCostNetwork sharePayCostNetWork] requestActiveGroupPayInfoWithGroupId:self.payModel.orderId CNLiveActiveGroupPayType:type CNLiveActiveGroupThreePayType:CNLivePayCostThreePayTypePayment PriceId:[NSString stringWithFormat:@"%.2f",self.payModel.price] Desc:self.payModel.descStr Expand:@"" NotifyUrl:self.payModel.notifyUrl jsfy:NO PassWord:_headerView.passwordView.textField.text FundsId:self.payModel.fundsId Attach:nil FormVC:self.fromVC CompleterBlcok:^(NSInteger statue) {
237 257 [weakSelf showPayStatue:statue];
238 258 }];
239 259 }
240 260 if (self.payModel.payType == CNLivePayCostTypeOrder || self.payModel.payType == CNLivePayCostTypeSHShop || self.payModel.payType == CNLivePayCostTypeCommunt || self.payModel.payType == CNLivePayCostTypeHtml) {
241   -
  261 +
242 262 NSString * priceString = [NSString stringWithFormat:@"%.2f",self.payModel.price];
243 263 CNLivePayCostThreePayType payType = self.payModel.payType == CNLivePayCostTypeOrder?CNLivePayCostThreePayTypeOrder:CNLivePayCostThreePayTypeSHSop;
244 264 [[CNLivePayCostNetwork sharePayCostNetWork] requestActiveGroupPayInfoWithGroupId:self.payModel.orderId CNLiveActiveGroupPayType:type CNLiveActiveGroupThreePayType:payType PriceId:priceString Desc:self.payModel.descStr Expand:@"" NotifyUrl:self.payModel.notifyUrl jsfy:NO PassWord:_headerView.passwordView.textField.text FundsId:nil Attach:self.payModel.payType == CNLivePayCostTypeSHShop || self.payModel.payType == CNLivePayCostTypeHtml ?self.payModel.attach:nil FormVC:self.fromVC CompleterBlcok:^(NSInteger statue) {
... ... @@ -247,15 +267,13 @@ static NSString *const CNActiveContentPayViewIdentifier = @&quot;CNActiveContentPayVi
247 267 }
248 268 if (self.payModel.payType == CNLivePayCostTypeSweep
249 269 || self.payModel.payType == CNLivePayCostTypeTicke) {
250   -
  270 +
251 271 [[CNLivePayCostNetwork sharePayCostNetWork] requestActiveGroupPayInfoWithGroupId:self.payModel.orderId CNLiveActiveGroupPayType:type CNLiveActiveGroupThreePayType:self.payModel.payType == CNLivePayCostTypeTicke ? CNLivePayCostThreePayTypeTicke : CNLivePayCostThreePayTypeScren PriceId:[NSString stringWithFormat:@"%.2f",self.payModel.price] Desc:self.payModel.payType == CNLivePayCostTypeSweep?@"扫码支付":self.payModel.descStr Expand:@"" NotifyUrl:self.payModel.notifyUrl jsfy:self.payModel.payType == CNLivePayCostTypeTicke PassWord:_headerView.passwordView.textField.text FundsId:@"" Attach:nil FormVC:self.fromVC CompleterBlcok:^(NSInteger statue) {
252 272 [weakSelf showPayStatue:statue];
253 273 }];
254 274  
255 275 }
256   - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
257   - [weakSelf dismissAction:NULL];
258   - });
  276 +// [self dismissAction:NULL];
259 277 }
260 278 }
261 279 -(void)payAction:(NSString *)password
... ... @@ -270,27 +288,27 @@ static NSString *const CNActiveContentPayViewIdentifier = @&quot;CNActiveContentPayVi
270 288 }
271 289 if (self.payModel.payType == CNLivePayCostTypeOrder) {
272 290  
273   - [[CNLivePayCostNetwork sharePayCostNetWork] requestActiveGroupWjjPayMentWithFromId:CNUserShareModel.uid Toid:self.payModel.userId Price:self.payModel.price Expand:self.payModel.expand SourceId:self.payModel.orderId PayId:self.payModel.orderId PassWord:password CompleterBlock:^(NSInteger statue) {
  291 + [[CNLivePayCostNetwork sharePayCostNetWork] requestActiveGroupWjjPayMentWithFromId:CNUserShareModel.uid Toid:self.payModel.userId Price:self.payModel.price Expand:self.payModel.expand SourceId:self.payModel.orderId PayId:self.payModel.orderId Desc:self.payModel.descStr NotifyUrl:self.payModel.notifyUrl PassWord:password CompleterBlock:^(NSInteger statue) {
274 292 [weakSelf showPayStatue:statue];
275 293 }];
276 294 }
277 295 if (self.payModel.payType == CNLivePayCostTypeSweep) {
278   - [[CNLivePayCostNetwork sharePayCostNetWork] requestActiveGroupWjjPayMentWithFromId:CNUserShareModel.uid Toid:self.payModel.toId Price:self.payModel.price Expand:self.payModel.expand SourceId:self.payModel.orderId PayId:self.payModel.orderId PassWord:password CompleterBlock:^(NSInteger statue) {
  296 + [[CNLivePayCostNetwork sharePayCostNetWork] requestActiveGroupWjjPayMentWithFromId:CNUserShareModel.uid Toid:self.payModel.toId Price:self.payModel.price Expand:self.payModel.expand SourceId:self.payModel.orderId PayId:self.payModel.orderId Desc:self.payModel.descStr NotifyUrl:self.payModel.notifyUrl PassWord:password CompleterBlock:^(NSInteger statue) {
279 297 [weakSelf showPayStatue:statue];
280 298 }];
281 299 }
282 300 if (self.payModel.payType == CNLivePayCostTypeTicke) {
283   - [[CNLivePayCostNetwork sharePayCostNetWork] requestActiveGroupWjjPayMentWithFromId:CNUserShareModel.uid Toid:self.payModel.toId Price:self.payModel.price Expand:self.payModel.expand SourceId:self.payModel.orderId PayId:self.payModel.orderId PassWord:password CompleterBlock:^(NSInteger statue) {
  301 + [[CNLivePayCostNetwork sharePayCostNetWork] requestActiveGroupWjjPayMentWithFromId:CNUserShareModel.uid Toid:self.payModel.toId Price:self.payModel.price Expand:self.payModel.expand SourceId:self.payModel.orderId PayId:self.payModel.orderId Desc:self.payModel.descStr NotifyUrl:self.payModel.notifyUrl PassWord:password CompleterBlock:^(NSInteger statue) {
284 302 [weakSelf showPayStatue:statue];
285 303 }];
286 304 }
287 305 if (self.payModel.payType == CNLivePayCostTypeSHShop) {
288   - [[CNLivePayCostNetwork sharePayCostNetWork] requestActiveGroupWjjPayMentWithFromId:CNUserShareModel.uid Toid:self.payModel.toId Price:self.payModel.price Expand:self.payModel.expand SourceId:self.payModel.orderId PayId:self.payModel.orderId PassWord:password CompleterBlock:^(NSInteger statue) {
  306 + [[CNLivePayCostNetwork sharePayCostNetWork] requestActiveGroupWjjPayMentWithFromId:CNUserShareModel.uid Toid:self.payModel.toId Price:self.payModel.price Expand:self.payModel.expand SourceId:self.payModel.orderId PayId:self.payModel.orderId Desc:self.payModel.descStr NotifyUrl:self.payModel.notifyUrl PassWord:password CompleterBlock:^(NSInteger statue) {
289 307 [weakSelf showPayStatue:statue];
290 308 }];
291 309 }
292 310 if (self.payModel.payType == CNLivePayCostTypeHtml) {
293   - [[CNLivePayCostNetwork sharePayCostNetWork] requestActiveGroupWjjPayMentWithFromId:CNUserShareModel.uid Toid:self.payModel.toId Price:self.payModel.price Expand:self.payModel.expand SourceId:self.payModel.orderId PayId:self.payModel.orderId PassWord:password CompleterBlock:^(NSInteger statue) {
  311 + [[CNLivePayCostNetwork sharePayCostNetWork] requestActiveGroupWjjPayMentWithFromId:CNUserShareModel.uid Toid:self.payModel.toId Price:self.payModel.price Expand:self.payModel.expand SourceId:self.payModel.orderId PayId:self.payModel.orderId Desc:self.payModel.descStr NotifyUrl:self.payModel.notifyUrl PassWord:password CompleterBlock:^(NSInteger statue) {
294 312 [weakSelf showPayStatue:statue];
295 313 }];
296 314 }
... ... @@ -310,12 +328,12 @@ static NSString *const CNActiveContentPayViewIdentifier = @&quot;CNActiveContentPayVi
310 328 resultView.moneryString = [NSString stringWithFormat:@"%.2f",weakSelf.payModel.price];
311 329 resultView.fromVC = weakSelf.fromVC;
312 330 resultView.remark = weakSelf.payModel.remark;
313   - [weakSelf.viewController.navigationController pushViewController:resultView animated:YES];
  331 + [[CNLivePayCostNetwork paycost_navigationViewController] pushViewController:resultView animated:YES];
314 332 }else if (weakSelf.payModel.payType == CNLivePayCostTypeGroup
315 333 || weakSelf.payModel.payType == CNLivePayCostTypeOrder) {
316 334 CNLivePayCostResultViewController * payResultVC = [[CNLivePayCostResultViewController alloc] init];
317 335 payResultVC.fromVC = weakSelf.fromVC;
318   - [weakSelf.viewController.navigationController pushViewController:payResultVC animated:YES];
  336 + [[CNLivePayCostNetwork paycost_navigationViewController] pushViewController:payResultVC animated:YES];
319 337 }else{
320 338 if (weakSelf.completerBlock) weakSelf.completerBlock(CNLivePayCostTypeResultSucc);
321 339 }
... ... @@ -352,6 +370,10 @@ static NSString *const CNActiveContentPayViewIdentifier = @&quot;CNActiveContentPayVi
352 370 [alertController addAction:actionSetting];
353 371 [alertController showWithAnimated:YES];
354 372 if (self.completerBlock) self.completerBlock(CNLivePayCostTypeResultFail);
  373 + }else if (statue == 3) {
  374 + [self dismiss:^{
  375 + if (weakSelf.completerBlock) weakSelf.completerBlock(CNLivePayCostTypeResultFail);
  376 + }];
355 377 }
356 378 }
357 379 -(void)checkWjjPayPasswordWithCompleterBlock:(void(^)(void))completerBlock
... ... @@ -438,6 +460,13 @@ static NSString *const CNActiveContentPayViewIdentifier = @&quot;CNActiveContentPayVi
438 460 }
439 461 return NO;
440 462 }
  463 +-(void)closeBtnAction
  464 +{
  465 + self.indexPath = [NSIndexPath indexPathForRow:2 inSection:0];
  466 + [self.headerView.passwordView clearUpPassword];
  467 + [self.headerView.passwordView.textField resignFirstResponder];
  468 + [self.mainView setContentOffset:CGPointMake(0, 0) animated:YES];
  469 +}
441 470 #pragma mark - Lazy
442 471 -(NSMutableArray *)dataArray
443 472 {
... ... @@ -535,6 +564,7 @@ static NSString *const CNActiveContentPayViewIdentifier = @&quot;CNActiveContentPayVi
535 564 [weakSelf payAction:password];
536 565 }
537 566 };
  567 + [_headerView.closeBtn addTarget:self action:@selector(closeBtnAction) forControlEvents:UIControlEventTouchUpInside];
538 568 }
539 569 return _headerView;
540 570 }
... ...
CNLivePayCostModule/Classes/View/CNLivePayCostPasswordView.m
... ... @@ -118,8 +118,8 @@
118 118 {
119 119 if (!_closeBtn) {
120 120 _closeBtn = [UIButton buttonWithType:UIButtonTypeCustom];
121   - [_closeBtn setImage:[UIImage imageNamed:@"tsq_guanbi"] forState:UIControlStateNormal];
122   - [_closeBtn setImage:[UIImage imageNamed:@"tsq_guanbi"] forState:UIControlStateHighlighted];
  121 + [_closeBtn setImage:[CNLivePayCostNetwork payCost_setImageWithName:@"gz_shanchu"] forState:UIControlStateNormal];
  122 + [_closeBtn setImage:[CNLivePayCostNetwork payCost_setImageWithName:@"gz_shanchu"] forState:UIControlStateHighlighted];
123 123 }
124 124 return _closeBtn;
125 125 }
... ... @@ -130,6 +130,7 @@
130 130 _nameLabel.font = [UIFont systemFontOfSize:16];
131 131 _nameLabel.textAlignment = NSTextAlignmentCenter;
132 132 _nameLabel.text = @"请输入支付密码";
  133 + _nameLabel.textColor = [UIColor blackColor];
133 134 }
134 135 return _nameLabel;
135 136 }
... ...
CNLivePayCostModule/Classes/View/CNLivePayCostResultViewController.m
... ... @@ -60,14 +60,15 @@
60 60 -(void)backRootView
61 61 {
62 62 self.navigationController.navigationBarHidden = NO;
63   - for (UIViewController * vc in self.navigationController.viewControllers) {
64   -
65   - if ([vc isKindOfClass:[_fromVC class]]) {
66   - [self.navigationController pushViewController:vc animated:YES];
67   - return;
68   - }
69   - }
70   - [self.navigationController popToRootViewControllerAnimated:YES];
  63 +// for (UIViewController * vc in self.navigationController.viewControllers) {
  64 +//
  65 +// if ([vc isKindOfClass:[_fromVC class]]) {
  66 +// [[CNLivePayCostNetwork paycost_navigationViewController] pushViewController:vc animated:YES];
  67 +// return;
  68 +// }
  69 +// }
  70 +// [[CNLivePayCostNetwork paycost_navigationViewController] popToRootViewControllerAnimated:YES];
  71 + [[CNLivePayCostNetwork paycost_navigationViewController] popViewControllerAnimated:YES];
71 72 }
72 73 -(void)setFromVC:(UIViewController *)fromVC
73 74 {
... ... @@ -89,8 +90,8 @@
89 90 _stutaButton.titleLabel.font = [UIFont fontWithName:@"PingFangSC-Regular" size:20.0f];
90 91 [_stutaButton setTitle:@"支付成功!" forState:UIControlStateNormal];
91 92 [_stutaButton setTitle:@"支付成功!" forState: UIControlStateHighlighted];
92   - [_stutaButton setImage:UIImageMake(@"ye_zfcg") forState:UIControlStateNormal];
93   - [_stutaButton setImage:UIImageMake(@"ye_zfcg") forState:UIControlStateHighlighted];
  93 + [_stutaButton setImage:[CNLivePayCostNetwork payCost_setImageWithName:@"ye_zfcg"] forState:UIControlStateNormal];
  94 + [_stutaButton setImage:[CNLivePayCostNetwork payCost_setImageWithName:@"ye_zfcg"] forState:UIControlStateHighlighted];
94 95 }
95 96 return _stutaButton;
96 97 }
... ...
CNLivePayCostModule/Classes/View/CNLivePayCostScanResultViewController.m
... ... @@ -90,13 +90,14 @@
90 90 -(void)backAction:(UIButton *)backBtn
91 91 {
92 92 self.navigationController.navigationBarHidden = NO;
93   - for (UIViewController * vc in self.navigationController.viewControllers) {
94   - if ([vc isKindOfClass:[_fromVC class]]) {
95   - [self.navigationController popToViewController:vc animated:YES];
96   - return;
97   - }
98   - }
99   - [self.navigationController popToRootViewControllerAnimated:YES];
  93 +// for (UIViewController * vc in self.navigationController.viewControllers) {
  94 +// if ([vc isKindOfClass:[_fromVC class]]) {
  95 +// [[CNLivePayCostNetwork paycost_navigationViewController] popToViewController:vc animated:YES];
  96 +// return;
  97 +// }
  98 +// }
  99 +// [[CNLivePayCostNetwork paycost_navigationViewController] popToRootViewControllerAnimated:YES];
  100 + [[CNLivePayCostNetwork paycost_navigationViewController] popViewControllerAnimated:YES];
100 101 }
101 102 - (void)setFromVC:(UIViewController *)fromVC
102 103 {
... ... @@ -118,8 +119,8 @@
118 119 [_successButton setTitleColor:CNLiveColorWithHexString(@"#333333") forState:UIControlStateNormal];
119 120 [_successButton setTitleColor:CNLiveColorWithHexString(@"#333333") forState:UIControlStateHighlighted];
120 121 [_successButton setTitle:@"支付成功!" forState: UIControlStateNormal];
121   - [_successButton setImage:UIImageMake(@"ye_zfcg") forState:UIControlStateNormal];
122   - [_successButton setImage:UIImageMake(@"ye_zfcg") forState:UIControlStateHighlighted];
  122 + [_successButton setImage:[CNLivePayCostNetwork payCost_setImageWithName:@"ye_zfcg"] forState:UIControlStateNormal];
  123 + [_successButton setImage:[CNLivePayCostNetwork payCost_setImageWithName:@"ye_zfcg"] forState:UIControlStateHighlighted];
123 124 }
124 125 return _successButton;
125 126 }
... ...
Example/CNLivePayCostModule.xcodeproj/project.pbxproj
... ... @@ -23,6 +23,13 @@
23 23 6003F5BC195388D20070C39A /* Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5BB195388D20070C39A /* Tests.m */; };
24 24 71719F9F1E33DC2100824A3D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 71719F9D1E33DC2100824A3D /* LaunchScreen.storyboard */; };
25 25 7938ECBD2846EE480008FB99 /* CNLivePayCostProtocolImpl.m in Sources */ = {isa = PBXBuildFile; fileRef = 7938ECBC2846EE480008FB99 /* CNLivePayCostProtocolImpl.m */; };
  26 + 797F2D6328519B4000D5736C /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 797F2D6228519B2F00D5736C /* libc++.tbd */; };
  27 + 797F2D6528519B5400D5736C /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 797F2D6428519B4900D5736C /* libz.tbd */; };
  28 + 797F2D6728519B6000D5736C /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 797F2D6628519B6000D5736C /* SystemConfiguration.framework */; };
  29 + 797F2D6828519B6C00D5736C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; };
  30 + 797F2D6928519B7B00D5736C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; };
  31 + 797F2D6B28519B8800D5736C /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 797F2D6A28519B8800D5736C /* WebKit.framework */; };
  32 + 797F2D6D28519B9F00D5736C /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 797F2D6C28519B9F00D5736C /* CFNetwork.framework */; };
26 33 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; };
27 34 F530AB2539E63072C2E93C4E /* Pods_CNLivePayCostModule_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76A434486911C088D57DDC70 /* Pods_CNLivePayCostModule_Tests.framework */; };
28 35 /* End PBXBuildFile section */
... ... @@ -64,6 +71,12 @@
64 71 76A434486911C088D57DDC70 /* Pods_CNLivePayCostModule_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CNLivePayCostModule_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
65 72 7938ECBB2846EE480008FB99 /* CNLivePayCostProtocolImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CNLivePayCostProtocolImpl.h; sourceTree = "<group>"; };
66 73 7938ECBC2846EE480008FB99 /* CNLivePayCostProtocolImpl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CNLivePayCostProtocolImpl.m; sourceTree = "<group>"; };
  74 + 797F2D6228519B2F00D5736C /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
  75 + 797F2D6428519B4900D5736C /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
  76 + 797F2D6628519B6000D5736C /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
  77 + 797F2D6A28519B8800D5736C /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
  78 + 797F2D6C28519B9F00D5736C /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
  79 + 797F2D6E2851F67400D5736C /* CNLivePayCostModule_Example.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = CNLivePayCostModule_Example.entitlements; sourceTree = "<group>"; };
67 80 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
68 81 8DA7B240CDBA39A46D4DFA95 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
69 82 A7C061FED03823CC85737DA1 /* Pods-CNLivePayCostModule_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLivePayCostModule_Example.debug.xcconfig"; path = "Target Support Files/Pods-CNLivePayCostModule_Example/Pods-CNLivePayCostModule_Example.debug.xcconfig"; sourceTree = "<group>"; };
... ... @@ -77,7 +90,14 @@
77 90 isa = PBXFrameworksBuildPhase;
78 91 buildActionMask = 2147483647;
79 92 files = (
  93 + 797F2D6B28519B8800D5736C /* WebKit.framework in Frameworks */,
  94 + 797F2D6D28519B9F00D5736C /* CFNetwork.framework in Frameworks */,
80 95 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */,
  96 + 797F2D6728519B6000D5736C /* SystemConfiguration.framework in Frameworks */,
  97 + 797F2D6528519B5400D5736C /* libz.tbd in Frameworks */,
  98 + 797F2D6928519B7B00D5736C /* CoreGraphics.framework in Frameworks */,
  99 + 797F2D6328519B4000D5736C /* libc++.tbd in Frameworks */,
  100 + 797F2D6828519B6C00D5736C /* CoreGraphics.framework in Frameworks */,
81 101 6003F592195388D20070C39A /* UIKit.framework in Frameworks */,
82 102 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */,
83 103 01C8E1692AE74160B42E3059 /* Pods_CNLivePayCostModule_Example.framework in Frameworks */,
... ... @@ -112,6 +132,7 @@
112 132 6003F581195388D10070C39A = {
113 133 isa = PBXGroup;
114 134 children = (
  135 + 797F2D6E2851F67400D5736C /* CNLivePayCostModule_Example.entitlements */,
115 136 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */,
116 137 6003F593195388D20070C39A /* Example for CNLivePayCostModule */,
117 138 6003F5B5195388D20070C39A /* Tests */,
... ... @@ -133,6 +154,11 @@
133 154 6003F58C195388D20070C39A /* Frameworks */ = {
134 155 isa = PBXGroup;
135 156 children = (
  157 + 797F2D6C28519B9F00D5736C /* CFNetwork.framework */,
  158 + 797F2D6A28519B8800D5736C /* WebKit.framework */,
  159 + 797F2D6628519B6000D5736C /* SystemConfiguration.framework */,
  160 + 797F2D6428519B4900D5736C /* libz.tbd */,
  161 + 797F2D6228519B2F00D5736C /* libc++.tbd */,
136 162 6003F58D195388D20070C39A /* Foundation.framework */,
137 163 6003F58F195388D20070C39A /* CoreGraphics.framework */,
138 164 6003F591195388D20070C39A /* UIKit.framework */,
... ... @@ -574,12 +600,13 @@
574 600 baseConfigurationReference = A7C061FED03823CC85737DA1 /* Pods-CNLivePayCostModule_Example.debug.xcconfig */;
575 601 buildSettings = {
576 602 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  603 + CODE_SIGN_ENTITLEMENTS = CNLivePayCostModule_Example.entitlements;
577 604 DEVELOPMENT_TEAM = 94X49GG3ZW;
578 605 GCC_PRECOMPILE_PREFIX_HEADER = YES;
579 606 GCC_PREFIX_HEADER = "CNLivePayCostModule/CNLivePayCostModule-Prefix.pch";
580 607 INFOPLIST_FILE = "CNLivePayCostModule/CNLivePayCostModule-Info.plist";
581 608 MODULE_NAME = ExampleApp;
582   - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
  609 + PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.CNLiveNetAdd.debug;
583 610 PRODUCT_NAME = "$(TARGET_NAME)";
584 611 SWIFT_VERSION = 4.0;
585 612 WRAPPER_EXTENSION = app;
... ... @@ -591,12 +618,13 @@
591 618 baseConfigurationReference = 3F31B47D5821EBC8F4E235F1 /* Pods-CNLivePayCostModule_Example.release.xcconfig */;
592 619 buildSettings = {
593 620 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  621 + CODE_SIGN_ENTITLEMENTS = CNLivePayCostModule_Example.entitlements;
594 622 DEVELOPMENT_TEAM = 94X49GG3ZW;
595 623 GCC_PRECOMPILE_PREFIX_HEADER = YES;
596 624 GCC_PREFIX_HEADER = "CNLivePayCostModule/CNLivePayCostModule-Prefix.pch";
597 625 INFOPLIST_FILE = "CNLivePayCostModule/CNLivePayCostModule-Info.plist";
598 626 MODULE_NAME = ExampleApp;
599   - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier}";
  627 + PRODUCT_BUNDLE_IDENTIFIER = com.cnlive.CNLiveNetAdd.debug;
600 628 PRODUCT_NAME = "$(TARGET_NAME)";
601 629 SWIFT_VERSION = 4.0;
602 630 WRAPPER_EXTENSION = app;
... ...
Example/CNLivePayCostModule/CNLIVEAppDelegate.m
... ... @@ -7,14 +7,103 @@
7 7 //
8 8  
9 9 #import "CNLIVEAppDelegate.h"
10   -
  10 +#import "CNLIVEViewController.h"
  11 +#import <CNLivePayCostModule/CNLivePayCostHeader.h>
  12 +#import <CNLivePayCostModule/CNLivePayCostModel.h>
11 13 @implementation CNLIVEAppDelegate
12 14  
13 15 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
14 16 {
15 17 // Override point for customization after application launch.
  18 + [CNLivePayCostModule finishLaunchingWithPayPluginSettings];
  19 +
  20 + [CNUserInfoManager manager].userInfoModel.uid = @"10458139";
  21 +
  22 + UINavigationController *navCtrl = [[UINavigationController alloc] initWithRootViewController:[[CNLIVEViewController alloc] init]];
  23 +
  24 + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  25 + self.window.rootViewController = navCtrl;
  26 + self.window.backgroundColor = [UIColor whiteColor];
  27 + [self.window makeKeyAndVisible];
  28 +
  29 + [self setParamNet];
  30 +
16 31 return YES;
17 32 }
  33 +-(void)setParamNet
  34 +{
  35 + NSMutableDictionary * mDict = [[NSMutableDictionary alloc] init];
  36 + [mDict setValue:[CNUserInfoManager manager].userInfoModel.uid forKey:@"loginSid"];
  37 + [mDict setValue:@"com.cnlive.CNLiveNetAdd.debug" forKey:@"platform_id"];
  38 + [mDict setValue:[[[[UIDevice currentDevice] identifierForVendor] UUIDString] stringByReplacingOccurrencesOfString:@"-" withString:@""] forKey:@"uuid"];
  39 + [mDict setValue:@"i" forKey:@"plat"];
  40 + [mDict setValue:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] forKey:@"ver"];
  41 + [mDict setObject:AppId forKey:@"appId"];
  42 + [mDict setObject:[CNUserInfoManager manager].userInfoModel.uid forKey:@"sid"];
  43 + [CNLiveNetworking setupDefaultParam:mDict];
  44 + [CNLiveNetworking setupShowResult:NO];
  45 + [CNLiveNetworking setupSignKey:APPKey];
  46 + [CNLiveNetworking setAllowRequestDefaultArgument:YES];
  47 + [CNLiveNetworking setResponseSerializerType:CNLiveResponseSerializerJSON];
  48 +}
  49 +
  50 +
  51 +- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
  52 +{
  53 + NSString *string =[url absoluteString];
  54 + if ([string hasPrefix:@"unifyPayDemo://"])
  55 + {
  56 + return [UMSPPPayUnifyPayPlugin cloudPayHandleOpenURL:url];
  57 + }
  58 + return [UMSPPPayUnifyPayPlugin handleOpenURL:url otherDelegate:[CNLivePayCostModel sharePayCostModel]];
  59 +}
  60 +
  61 +- (BOOL)application:(UIApplication *)application
  62 + openURL:(NSURL *)url
  63 + sourceApplication:(NSString *)sourceApplication
  64 + annotation:(id)annotation {
  65 +
  66 + NSString *string =[url absoluteString];
  67 + if ([string hasPrefix:@"unifyPayDemo://"])
  68 + {
  69 + return [UMSPPPayUnifyPayPlugin cloudPayHandleOpenURL:url];
  70 + }
  71 +
  72 + return [UMSPPPayUnifyPayPlugin handleOpenURL:url otherDelegate:[CNLivePayCostModel sharePayCostModel]];
  73 +}
  74 +
  75 +
  76 +- (BOOL)application:(UIApplication *)app
  77 + openURL:(NSURL *)url
  78 + options:(NSDictionary<NSString *,id> *)options{
  79 +
  80 + NSString *string =[url absoluteString];
  81 + if ([string hasPrefix:@"unifyPayDemo://"])
  82 + {
  83 + return [UMSPPPayUnifyPayPlugin cloudPayHandleOpenURL:url];
  84 + }
  85 + else if ([string hasPrefix:@"qmfpppay://"])
  86 + {
  87 + [UMSPPPayUnifyPayPlugin aliMiniPayHandleOpenURL:url];
  88 + return YES;
  89 +
  90 + }
  91 + [UMSPPPayUnifyPayPlugin aliMiniPayHandleOpenURL:url];
  92 + [WXApi handleOpenURL:url delegate:[CNLivePayCostModel sharePayCostModel]];
  93 + return [UMSPPPayUnifyPayPlugin handleOpenURL:url otherDelegate:[CNLivePayCostModel sharePayCostModel]];
  94 +};
  95 +
  96 +- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler API_AVAILABLE(ios(8.0)){
  97 + if (@available(iOS 8.0, *)) {
  98 + [WXApi handleOpenUniversalLink:userActivity delegate:[CNLivePayCostModel sharePayCostModel]];
  99 + return [UMSPPPayUnifyPayPlugin handleOpenUniversalLink:userActivity otherDelegate:[CNLivePayCostModel sharePayCostModel]];
  100 + } else {
  101 + // Fallback on earlier versions
  102 + return YES;
  103 + }
  104 +
  105 +}
  106 +
18 107  
19 108 - (void)applicationWillResignActive:(UIApplication *)application
20 109 {
... ...
Example/CNLivePayCostModule/CNLIVEViewController.m
... ... @@ -8,6 +8,8 @@
8 8  
9 9 #import "CNLIVEViewController.h"
10 10 #import <CNLivePayCostModule/CNLivePayCostModule.h>
  11 +#import "WXApi.h"
  12 +
11 13 @interface CNLIVEViewController ()
12 14  
13 15 @end
... ... @@ -18,18 +20,111 @@
18 20 {
19 21 [super viewDidLoad];
20 22 // Do any additional setup after loading the view, typically from a nib.
  23 +
  24 + CGFloat kWidth = [UIScreen mainScreen].bounds.size.width;
  25 +
  26 + UIButton * requestBtn = [UIButton buttonWithType:UIButtonTypeSystem];
  27 + requestBtn.frame = CGRectMake(0, 100, kWidth, 70);
  28 + requestBtn.backgroundColor = [UIColor cyanColor];
  29 + [requestBtn setTitle:@"拉起支付" forState: UIControlStateNormal];
  30 + [requestBtn setTitle:@"拉起支付" forState: UIControlStateHighlighted];
  31 + [requestBtn addTarget:self action:@selector(requestAction) forControlEvents:UIControlEventTouchUpInside];
  32 + [self.view addSubview:requestBtn];
  33 +
  34 + UIButton * batchBtn = [UIButton buttonWithType:UIButtonTypeSystem];
  35 + batchBtn.frame = CGRectMake(0, CGRectGetMaxY(requestBtn.frame)+5, kWidth, 70);
  36 + batchBtn.backgroundColor = [UIColor cyanColor];
  37 + [batchBtn setTitle:@"支付宝支付" forState: UIControlStateNormal];
  38 + [batchBtn setTitle:@"支付宝支付" forState: UIControlStateHighlighted];
  39 + [batchBtn addTarget:self action:@selector(batchRequestAction) forControlEvents:UIControlEventTouchUpInside];
  40 + [self.view addSubview:batchBtn];
  41 +}
  42 +-(void)requestAction
  43 +{
  44 +// [CNLivePayCostNetwork requestWithUMSPayForPrePayWithOrderId:[self generateTradeNO] Body:@"测试" Price:@"1" CouponFee:@"0" BalanceFee:@"0" NotifyUrl:@"http://unifypay.cnlive.com/test/notify_url" Type:CNLivePayCostPayTypeWeChatPay FrmId:@"debug"];
  45 + NSDictionary * paramDict = @{
  46 + @"orderId":[self generateTradeNO],
  47 + @"userId":@"10458139",
  48 + @"descStr":@"测试",
  49 + @"price":@0.01,
  50 + @"orderType":@"1",
  51 + @"notifyUrl":@"http://unifypay.cnlive.com/test/notify_url"
  52 + };
  53 + [CNLivePayCostModule showDefaultPayViwWithParamDict:paramDict PayCostType:CNLivePayCostTypeOrder FromVC:self ResultBlock:^(CNLivePayCostTypeResult resultType) {
  54 + UIAlertView *alert = [[UIAlertView alloc] initWithTitle:resultType == CNLivePayCostTypeResultSucc?@"支付成功":@"支付失败" message:nil delegate:self cancelButtonTitle:@"确认" otherButtonTitles:nil, nil];
  55 + [alert show];
  56 + }];
  57 +
  58 +}
  59 +-(void)batchRequestAction
  60 +{
  61 +// [CNLivePayCostNetwork requestWithUMSPayForPrePayWithOrderId:[self generateTradeNO] Body:@"测试" Price:@"1" CouponFee:@"0" BalanceFee:@"0" NotifyUrl:@"http://unifypay.cnlive.com/test/notify_url" Type:CNLivePayCostPayTypeAliPay FrmId:@"debug" PassWord:@"" CompleterBlcok:^(NSInteger statue) {
  62 +//
  63 +// }];
  64 +
  65 + NSDictionary * paramDict = @{
  66 + @"orderId":[self generateTradeNO],
  67 + @"userId":@"10458139",
  68 + @"descStr":@"测试",
  69 + @"price":@0.01,
  70 + @"orderType":@"1",
  71 + @"notifyUrl":@"http://unifypay.cnlive.com/test/notify_url",
  72 + @"password":@"123456"
  73 + };
  74 + [CNLivePayCostModule showShopPayViwWithParamDict:paramDict PayType:CNLivePayCostPayTypeWeChatPay ResultBlock:^(CNLivePayCostTypeResult resultType) {
  75 + UIAlertView *alert = [[UIAlertView alloc] initWithTitle:resultType == CNLivePayCostTypeResultSucc?@"支付成功":@"支付失败" message:nil delegate:self cancelButtonTitle:@"确认" otherButtonTitles:nil, nil];
  76 + [alert show];
  77 + }];
21 78 }
22 79 -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
23 80 {
24 81 [super touchesBegan:touches withEvent:event];
25   - [CNLivePayCostModule showDefaultPayViwWithParamDict:@{} PayCostType:CNLivePayCostTypeHtml FromVC:self ResultBlock:^(CNLivePayCostTypeResult resultType) {
26   -
27   - }];
  82 +// if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"alipays://"]]) {
  83 +// [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"alipays://"]];
  84 +// }
  85 +
  86 +// NSDictionary * paramDict = @{
  87 +// @"miniuser": @"2019010762862511",
  88 +// @"msgType": @"trade.appPreOrder",
  89 +// @"package": @"Sign=ALI",
  90 +// @"minipath": @"pages/appPay/test/test",
  91 +// @"appScheme": @"iOS:qmfpppay;Android:qmfpppay",
  92 +// @"sign": @"C8E269942EB13494ED6B9F81956606E7",
  93 +// @"prepayid": @"ori=101720220609570858884356",
  94 +// @"noncestr": @"VnwtNeidfwbGmNGlinLLBBSBmDmNxKnf",
  95 +// @"timestamp": @"20220609144445"
  96 +// };
  97 +// NSString *payDataJsonStr = [[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:paramDict options:NSJSONWritingPrettyPrinted error:nil] encoding:NSUTF8StringEncoding];
  98 +// [UMSPPPayUnifyPayPlugin payWithPayChannel:CHANNEL_ALIPAY payData:payDataJsonStr callbackBlock:^(NSString *resultCode, NSString *resultInfo) {
  99 +//
  100 +// }];
28 101 }
29 102 - (void)didReceiveMemoryWarning
30 103 {
31 104 [super didReceiveMemoryWarning];
32 105 // Dispose of any resources that can be recreated.
33 106 }
  107 +- (NSString *)generateTradeNO
  108 +{
  109 + static int kNumber = 15;
  110 +
  111 + NSString *sourceStr = @"0123456789";
  112 +
  113 + NSMutableString *resultStr = [[NSMutableString alloc] init];
  114 +
  115 + srand((unsigned)time(0));
  116 +
  117 + for (int i = 0; i < kNumber; i++) {
  118 +
  119 + unsigned index = rand() % [sourceStr length];
34 120  
  121 + NSString *oneStr = [sourceStr substringWithRange:NSMakeRange(index, 1)];
  122 +
  123 + [resultStr appendString:oneStr];
  124 +
  125 + }
  126 +
  127 + return resultStr;
  128 +
  129 +}
35 130 @end
... ...
Example/CNLivePayCostModule/CNLivePayCostModule-Info.plist
... ... @@ -20,8 +20,60 @@
20 20 <string>1.0</string>
21 21 <key>CFBundleSignature</key>
22 22 <string>????</string>
  23 + <key>CFBundleURLTypes</key>
  24 + <array>
  25 + <dict>
  26 + <key>CFBundleTypeRole</key>
  27 + <string>Editor</string>
  28 + <key>CFBundleURLName</key>
  29 + <string>微信测试</string>
  30 + <key>CFBundleURLSchemes</key>
  31 + <array>
  32 + <string>wx9b7f9443a8ccf15a</string>
  33 + </array>
  34 + </dict>
  35 + <dict>
  36 + <key>CFBundleTypeRole</key>
  37 + <string>Editor</string>
  38 + <key>CFBundleURLName</key>
  39 + <string>微信正式</string>
  40 + <key>CFBundleURLSchemes</key>
  41 + <array>
  42 + <string>wxed528fc749b7ee88</string>
  43 + </array>
  44 + </dict>
  45 + <dict>
  46 + <key>CFBundleTypeRole</key>
  47 + <string>Editor</string>
  48 + <key>CFBundleURLSchemes</key>
  49 + <array>
  50 + <string>qmfpppay</string>
  51 + </array>
  52 + </dict>
  53 + <dict>
  54 + <key>CFBundleTypeRole</key>
  55 + <string>Editor</string>
  56 + <key>CFBundleURLSchemes</key>
  57 + <array>
  58 + <string>netpppay</string>
  59 + </array>
  60 + </dict>
  61 + </array>
23 62 <key>CFBundleVersion</key>
24 63 <string>1.0</string>
  64 + <key>LSApplicationQueriesSchemes</key>
  65 + <array>
  66 + <string>weixinULAPI</string>
  67 + <string>weixin</string>
  68 + <string>wechat</string>
  69 + <string>alipays</string>
  70 + <string>alipay</string>
  71 + <string>uppaysdk</string>
  72 + <string>uppaywallet</string>
  73 + <string>uppayx1</string>
  74 + <string>uppayx2</string>
  75 + <string>uppayx3</string>
  76 + </array>
25 77 <key>LSRequiresIPhoneOS</key>
26 78 <true/>
27 79 <key>UILaunchStoryboardName</key>
... ...
Example/CNLivePayCostModule/CNLivePayCostProtocolImpl.m
... ... @@ -18,4 +18,10 @@
18 18 //[[AppDelegate sharedAppDelegate] pushViewController:payCenterVC withBackTitle:@" "];
19 19 }
20 20  
  21 +/// 改变支付调用方法
  22 +-(BOOL)pushActivePaymentNewPaycostWayWithModthod
  23 +{
  24 + return YES;
  25 +}
  26 +
21 27 @end
... ...
Example/CNLivePayCostModule/main.m
... ... @@ -8,10 +8,11 @@
8 8  
9 9 @import UIKit;
10 10 #import "CNLIVEAppDelegate.h"
11   -
  11 +#import <CNLiveEnvironment/CNLiveEnvironmentManager.h>
12 12 int main(int argc, char * argv[])
13 13 {
14 14 @autoreleasepool {
  15 + [CNLiveEnvironmentManager setAppType:CNLiveAppTypeUser environmentType:CNLiveDebugAppStore];//CNLiveProductionAppStore//CNLiveDebugAppStore];
15 16 return UIApplicationMain(argc, argv, nil, NSStringFromClass([CNLIVEAppDelegate class]));
16 17 }
17 18 }
... ...
Example/CNLivePayCostModule_Example.entitlements 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>com.apple.developer.associated-domains</key>
  6 + <array>
  7 + <string>applinks:apiwjjtest.cnlive.com</string>
  8 + <string>applinks:applelinkstest.cnlive.com</string>
  9 + <string>applinks:apiwjj.cnlive.com</string>
  10 + </array>
  11 +</dict>
  12 +</plist>
... ...