iOS 알 리 페 이,위 챗,은 련 결제 통합 패키지 호출(상)

1.통합 알 리 페 이 결제
알 리 페 이 통합 공식 튜 토리 얼https://docs.open.alipay.com/204/105295/
알 리 페 이 통합 공식 demohttps://docs.open.alipay.com/54/104509/
1.SDK 가 져 오기 및 의존 라 이브 러 리 추가
IDE(예 를 들 어 Xcode)를 시작 하여 iOS 패키지 의 압축 파일 중 아래 파일 을 프로젝트 폴 더 에 복사 하고 프로젝트 프로젝트 프로젝트 에 가 져 옵 니 다.
  • AlipaySDK.bundle
  • AlipaySDK.framework
  • Build Phases 옵션 의 Link Binary With Libraries 에서 다음 의존 도 를 증가 시 킵 니 다.

    2.Appdelegate 에 코드 추가
    도입 헤더 파일
    
    #import <AlipaySDK/AlipaySDK.h>
    지불 리 셋 방법 추가
    
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    {
     if ([url.host isEqualToString:@"safepay"]) {
      //              ,      
      [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
       NSLog(@"result = %@",resultDic);
      }];
      
      //              ,      
      [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
       NSLog(@"result = %@",resultDic);
       //    auth code
       NSString *result = resultDic[@"result"];
       NSString *authCode = nil;
       if (result.length>0) {
        NSArray *resultArr = [result componentsSeparatedByString:@"&"];
        for (NSString *subResult in resultArr) {
         if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
          authCode = [subResult substringFromIndex:10];
          break;
         }
        }
       }
       NSLog(@"     authCode = %@", authCode?:@"");
      }];
     }
    //       
     if ([url.scheme isEqualToString:@"wxf6e443649d826e8e"])
     {
      return [WXApi handleOpenURL:url delegate:(id<WXApiDelegate>)self];
     }
     return YES;
    }
    
    // NOTE: 9.0     API  
    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
    {
     if ([url.host isEqualToString:@"safepay"]) {
      //              ,      
      [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
       NSLog(@"result = %@",resultDic);
      }];
      
      //              ,      
      [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
       NSLog(@"result = %@",resultDic);
       //    auth code
       NSString *result = resultDic[@"result"];
       NSString *authCode = nil;
       if (result.length>0) {
        NSArray *resultArr = [result componentsSeparatedByString:@"&"];
        for (NSString *subResult in resultArr) {
         if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
          authCode = [subResult substringFromIndex:10];
          break;
         }
        }
       }
       NSLog(@"     authCode = %@", authCode?:@"");
      }];
     }
    //       
     if ([url.scheme isEqualToString:@"wxf6e443649d826e8e"])
     {
      return [WXApi handleOpenURL:url delegate:(id<WXApiDelegate>)self];
     }
     return YES;
    }
    3.URL 구성 추가
    Targets->Info 에서 마지막 으로 URL Scheme 을 찾 습 니 다.
    'Info'옵션 을 클릭 하고'URL Types'옵션 에서'+'를 클릭 합 니 다.

    4.결제 하 는 곳 에 알 리 페 이 를 들 어 올 리 는 방법 추가
    도입 헤더 파일
    
    #import <AlipaySDK/AlipaySDK.h>
    지불 장소 에서 알 리 페 이 코드 를 추가 합 니 다.
    
    [[AlipaySDK defaultService] payOrder:@"               " fromScheme:@"           URL Scheme" callback:^(NSDictionary *resultDic) {
       NSLog(@"=====%@",resultDic);
       if ([resultDic[@"resultStatus"]intValue] == 9000) {
        NSLog(@"  ");
       } else {
        NSLog(@"  ");
       }
      }];
    통합 위 챗 결제
    위 챗 결제 통합 공식 문서https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5
    위 챗 통합 공식 demohttps://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
    1:SDK 가 져 오기 및 의존 라 이브 러 리 추가

    이 두 가지 설정 을 추가 하 세 요.

    2:APPDLEgate 에 코드 추가
    도입 헤더 파일
    
    #import <WXApi.h>
           
    @interface AppDelegate ()<WXApiDelegate>
    등록
    -(BOOL)application:(UIapplication*)application didFinishLaunching WithOptions:(NSDictionary*)launchOptions{[WXApi registerApp:@"신청 한 appid 작성"];returnYES; }
    결제 리 셋 방법 을 추가 합 니 다.위 에 알 리 페 이 통합 코드 에 있 는 똑 같은 코드 입 니 다.
    
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    {
     if ([url.host isEqualToString:@"safepay"]) {
      //              ,      
      [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
       NSLog(@"result = %@",resultDic);
      }];
      
      //              ,      
      [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
       NSLog(@"result = %@",resultDic);
       //    auth code
       NSString *result = resultDic[@"result"];
       NSString *authCode = nil;
       if (result.length>0) {
        NSArray *resultArr = [result componentsSeparatedByString:@"&"];
        for (NSString *subResult in resultArr) {
         if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
          authCode = [subResult substringFromIndex:10];
          break;
         }
        }
       }
       NSLog(@"     authCode = %@", authCode?:@"");
      }];
     }
    //       
     if ([url.scheme isEqualToString:@"wxf6e443649d826e8e"])
     {
      return [WXApi handleOpenURL:url delegate:(id<WXApiDelegate>)self];
     }
     return YES;
    }
    
    // NOTE: 9.0     API  
    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
    {
     if ([url.host isEqualToString:@"safepay"]) {
      //              ,      
      [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
       NSLog(@"result = %@",resultDic);
      }];
      
      //              ,      
      [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
       NSLog(@"result = %@",resultDic);
       //    auth code
       NSString *result = resultDic[@"result"];
       NSString *authCode = nil;
       if (result.length>0) {
        NSArray *resultArr = [result componentsSeparatedByString:@"&"];
        for (NSString *subResult in resultArr) {
         if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
          authCode = [subResult substringFromIndex:10];
          break;
         }
        }
       }
       NSLog(@"     authCode = %@", authCode?:@"");
      }];
     }
    //       
     if ([url.scheme isEqualToString:@"wxf6e443649d826e8e"])
     {
      return [WXApi handleOpenURL:url delegate:(id<WXApiDelegate>)self];
     }
     return YES;
    }
    위 챗 결제 리 셋 에이전트 추가
    
    //    ,               
    - (void)onResp:(BaseResp *)resp
    {
     //       
     if([resp isKindOfClass:[PayResp class]]){
      switch (resp.errCode) {
       case WXSuccess:{
        //      ,                  
        NSNotification *notification = [NSNotification notificationWithName:@"ORDER_PAY_NOTIFICATION" object:@"success"];
        [[NSNotificationCenter defaultCenter] postNotification:notification];
        
        break;
       }
       default:{
        NSNotification *notification = [NSNotification notificationWithName:@"ORDER_PAY_NOTIFICATION"object:@"fail"];
        [[NSNotificationCenter defaultCenter] postNotification:notification];
        break;
       }
      }
     }
    }
    3.URL 구성 추가
    Targets->Info 에서 마지막 으로 URL Scheme 을 찾 습 니 다.
    'Info'옵션 을 클릭 하고'URL Types'옵션 에서'+'를 클릭 합 니 다 APPId위 와 같다
    4.결제 처 에 위 챗 방법 추가
    도입 헤더 파일
    
    #import <WXApi.h>
    지불 장소 에 위 챗 코드 추가
    
     if ([WXApi isWXAppInstalled]) {
    NSLog(@" ...");

    // ,
    }else{

    }

    #pragma mark

    - (void)WXPayWithAppid:(NSString *)appid partnerid:(NSString *)partnerid prepayid:(NSString *)prepayid package:(NSString *)package noncestr:(NSString *)noncestr timestamp:(NSString *)timestamp sign:(NSString *)sign{

    //
    PayReq *req = [[PayReq alloc] init];
    // AppID ,
    req.openID = appid;
    // id,
    req.partnerId = partnerid;
    // , ,
    req.prepayId = prepayid;
    //
    req.package = package;
    // , ,
    req.nonceStr = noncestr;
    // , ,
    NSString * stamp = timestamp;
    req.timeStamp = stamp.intValue;
    //
    req.sign = sign;
    if ([WXApi sendReq:req]) { // , onResp
    NSLog(@" ...");
    }else{
    NSLog(@" ...");
    }
    }
    3.은 련 지불 집성
    은 련 핸드폰 컨트롤 결제https://link.jianshu.com/?t=https://open.unionpay.com/ajweb/index
    은 련 홈 페이지
    필요 한 라 이브 러 리 파일 을 자신의 프로젝트 에 끌 어 다 놓 습 니 다.SDK 파일 이 있 는 디 렉 터 리 upmp아이 폰/payment control,UPPayment Control.h,libPayment Control.a 두 파일(오래된 버 전 은 세 개,이 점 은 다르다)을 포함 합 니 다.

    방법 에 필요 한 몇 가지 매개 변수 문서 에 모두 쓰 여 있 습 니 다.tn 은 거래 흐름 번호 입 니 다.서버 에서 전 달 된 것 입 니 다.우리 클 라 이언 트 는 이 매개 변수 로 만 결제 컨트롤 을 호출 하여 지불 할 수 있 습 니 다.
    여기까지:제3자 결제 통합 은 대체적으로 통합 되 었 습 니 다.다음 글 은 세 가지 통합 호출 패 키 징 코드 를 기대 하 십시오.
    다음은 우리 가 공유 하 는 iOS 알 리 페 이,위 챗,은 련 결제 통합 패키지 호출(하)입 니 다.
    https://www.aliyun.com/jiaocheng/349377.html

    좋은 웹페이지 즐겨찾기