Commit dfc22a0f6d2a19a175e5f2a8ce5eaefb6322491a
1 parent
8cfe57b8
0.0.3
Showing
23 changed files
with
763 additions
and
168 deletions
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
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 = @"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 = @"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=%@¬ify_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 = @"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 = @"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 = @"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 = @"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
CNLivePayCostModule/Classes/View/CNLivePayCostContentView.m
| ... | ... | @@ -62,6 +62,8 @@ static NSString *const CNActiveContentPayViewIdentifier = @"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 = @"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 = @"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 = @"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 = @"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 = @"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 = @"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 = @"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 = @"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 = @"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 = @"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
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> | ... | ... |