實踐 越獄開發 之 【調用內部方法】 支付寶 支付鏈接壓縮

//壓縮前數據
TextField_get.text = @"service=\"alipay.fund.stdtrustee.order.create.pay\"&partner=\"2088401309894080\"&_input_charset=\"utf-8\"&notify_url=\"https://wwhongbao.taobao.com/callback/alipay/notifyPaySuccess.do\"&out_order_no=\"23743001583595538_8daa2b6a58da7263bd4140857b561a19_2\"&out_request_no=\"23743001583595538_8daa2b6a58da7263bd4140857b561a19_2_p\"&product_code=\"SOCIAL_RED_PACKETS\"&scene_code=\"MERCHANT_COUPON\"&amount=\"1.00\"&pay_strategy=\"CASHIER_PAYMENT\"&receipt_strategy=\"INNER_ACCOUNT_RECEIPTS\"&platform=\"DEFAULT\"&channel=\"APP\"&order_title=\"淘寶現金紅包\"&master_order_no=\"2020030710002001220523637686\"&order_type=\"DEDUCT_ORDER\"&extra_param=\"{\"payeeShowName\":\"淘寶現金紅包\"}\"&pay_timeout=\"30m\"&order_expired_time=\"360d\"&sign=\"VstICnt0tJFkBhE2VVlUCnWCp%2F3lRgpIbDV7XZ3Mt1yYppGwicQ55sVASZk5F9xwpzZPEjvAXuGf15pWHInyqZRO1yAl0ZFfCaGu21b%2FzTYS860aZ%2BAQWHcQlFLIc%2FZEk9wp0wfon%2F6ySkiDOMo5YDZSAyCyJlPBUPMHsQrVuGnK4aEb%2BW4i2MsXAl3UubrYqZXW0mmHEa%2BsCmcknXWTLQ0ecOBhzLYD2kuAr73K3GAZWav%2BmGWh0pnIu9VZSixLvK7n1TpkDgD6aPK7X4vmY0F%2BdVDUowcfnZBepVyTtvWstTKPIL%2B1UA4awCQjWwYbLT6SNwNO3SFqxPjlw8fMEw%3D%3D\"&sign_type=\"RSA\"&bizcontext=\"{\"av\":\"4.6.7\",\"ty\":\"ios_lite\",\"appkey\":\"2014052600006128\",\"sv\":\"h.a.3.1.0\",\"an\":\"com.taobao.iteam.ios.aliwangwang2\"}";


//分析到原方法
//- (void)processOrder:(id)arg1 callback:(CDUnknownBlockType)arg2;
    NSString*str = TextField_get.text;
    
//開始壓縮
    [[NSClassFromString(@"APayProcessor") alloc] processOrder:str callback:^(NSDictionary *resultDic) {
        
//        [0]    (null)    @"command" : @"wappay"
//        [1]    (null)    @"url" : @"https://mclient.alipay.com/cashierRoutePay.htm?route_pay_from=h5&init_from=SDKLite&session=RZ54Pr4p1wmUKKXrkED6PULU13oKXHmobilecashierRZ54&utdid=XmPLAf5frpIDAKH4r2PKKQzh&service=alipay.fund.stdtrustee.order.create.pay&tid=6bebfd5ecd3aaac7f0ea621b0102b5135ed5fa1b9e115be0a352325126a65be8&cc=y"

        //            [0]    (null)    @"error" : domain: @"系統繁忙,請稍後再試" - code: 1000

        NSString*command = resultDic[@"command"];//wappay
        NSString*result = resultDic[@"url"];
        
        NSString *error = resultDic[@"error"];
        
        NSLog(@"%@",resultDic);
        
        if(result){
            
            NSDictionary*dic = [xddCode dictionaryOfURLQuery:result];

            NSString *authCode = dic[@"session"];
            NSLog(@"壓縮結果 authCode = %@", authCode?:@"");
            TextField_set.text = authCode;
        }else if( error != nil){
            TextField_set.text = [NSString stringWithFormat:@"%@",error];
            
        }

        //內部方法-
//        [[NSClassFromString(@"APayLoadView") alloc] dismissLoading];//-

        //外部方法+
        [NSClassFromString(@"APayLoadView") dismissLoading];//+
        
    }];
    
+(NSDictionary*) dictionaryOfURLQuery:(NSString*)str
{
    NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
    
    NSRange range = [str rangeOfString:@"?"];
    NSString *query = @"";
    
    if (range.location == NSNotFound){
        
        if([str rangeOfString:@"&"].location != NSNotFound && [str rangeOfString:@"="].location != NSNotFound){
            query = str;
        }else{
            return params;
        }
    }else{
        query = [str substringFromIndex:range.location + 1];
    }
    
    for (NSString *param in [query componentsSeparatedByString:@"&"]) {
        NSArray *elts = [param componentsSeparatedByString:@"="];
        if([elts count] < 2) continue;
        [params setObject:[[elts lastObject] stringByRemovingPercentEncoding]
                   forKey:[[elts firstObject] stringByRemovingPercentEncoding]];
    }
    
    return params;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章