>  기사  >  위챗 애플릿  >  IOS WeChat 결제 개발 단계에 대한 자세한 설명

IOS WeChat 결제 개발 단계에 대한 자세한 설명

Y2J
Y2J원래의
2017-04-27 14:18:391792검색

서문: 다음은 WeChat 결제 개발 과정을 사진과 텍스트로 자세히 소개합니다. 제 에세이 과정을 따라가면 코드를 살펴볼 수 있습니다. WeChat을 통해 결제하는 방법도 배웠습니다. 그리고 면접에서도 결제 관련 자주 묻는 질문이 있습니다.

텍스트:

1. 먼저 WeChat 결제를 사용하기 전에 개발자가 알아야 할 사항이 있습니다. 아래 링크를 엽니다. :

pay.weixin.qq.com/wiki/doc/api/app.php?chapter=3_1 

위챗 결제 가맹점 개발 페이지는 다음과 같습니다. 플랫폼 문서를 참조하면 WeChat SDK 결제 기능을 개발하고 사용할 때 문제가 발생하면 여기에서 관련 정보를 찾을 수도 있습니다.

 

그런 다음 독자들에게 이 개발 문서에서 "결제 계정>결제 계정"을 클릭한 다음 현재 페이지를 맨 아래로 스크롤하여 APPID를 확인하라고 안내합니다:

 

참고: 이 APPID는 개발 중 WeChat 결제를 사용하는 데 필요하며, 이 APPID는 판매자가 WeChat 결제 플랫폼에 등록하고, 300위안을 지출하고, 많은 관련 중요 정보를 입력하고, APPID를 취득하기 위해서는 사업자등록증 업로드 및 기타 필요한 절차가 필요합니다.

상용 앱 애플리케이션의 경우, 고객이 WeChat 앱을 사용하여 구매를 하면 프로그램이 이 고유한 APPID를 기반으로 가맹점을 찾아 소비자의 금액을 가맹점의 계좌로 이체합니다.

 

개발자를 위한 이점: WeChat 결제 플랫폼은 개발자를 위해 테스트용 데모를 제공하고 데모 소스 코드에서도 유용한 기능을 제공합니다. 테스트 코드의. 이러한 방식으로 개발자는 APPID를 구매하기 위해 300위안을 지출할 필요가 없습니다.

2. 독자들이 본 위챗 SDK의 사용과정을 좀 더 편리하고 구체적으로 학습할 수 있도록 일반 프로젝트를 생성하고, 그 위에 직접 위챗 SDK를 사용해 위챗 결제를 완료하겠습니다.

pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

SDK를 클릭하여 다운로드하고 데모도 다운로드할 수 있습니다. 소스 코드를 참조로 사용하는 방법을 배우거나 나중에 추가 탐색을 위해 저장할 수 있습니다.

 

새 프로젝트에서는 다운로드한 SDK를 드래그합니다. 다운로드한 SDK 파일에 5개의 파일이 있습니다. 원하는 대로 프로젝트에 read_me.txt를 보관할 필요는 없지만 내부의 프롬프트 정보를 열고 읽을 수 있습니다.

 

먼저 read_me.txt 파일을 열어보겠습니다. 실제로 최근 여러 버전의 업데이트에서 해결된 문제와 SDK 사용 시 주의사항에 대해 설명하고 있습니다. 따라서 이 read_me 파일은 매우 중요합니다.

 

3. 자, read_me.txt에 따라 필요한 과정을 진행하겠습니다.

Xcode 7 버전 이후에는 프레임워크와 링크 라이브러리를 가져와야 합니다. :

 

XCode 7 이전이라면 Foundation.framework, UIKit.framework 및 기타 프레임워크를 수동으로 가져와야 할 수도 있습니다.

그런 다음 read_me.txt의 프롬프트에 따라 plist 코드를 info.plist 파일에 복사합니다.


1 <key>LSApplicationQueriesSchemes</key>2 <array>3 <string>weixin</string>4 </array>5 <key>NSAppTransportSecurity</key>6 <dict>7 <key>NSAllowsArbitraryLoads</key>8 <true/>9 </dict>

그런 다음 info.plist를 추가합니다. 파일을 속성 목록 표시 보기로 전환하면 두 가지 항목이 더 표시됩니다.

 

iOS9에서는 제한이 있으므로 XCode7 이후 개발 중에 앱 전송 보안 설정을 수동으로 추가해야 합니다. 기본적으로 http 프로토콜에 액세스합니다.

LSApplicationQueriesSchemes는 현재 애플리케이션이 WeChat의 관련 기능(공유, 수집, 결제, 로그인 등)을 사용할 수 있도록 사용할 URL 체계를 화이트리스트에 추가할 수 있습니다.

WeChat 결제에 사용되는 APPID를 URL Schemes [English skiːm]으로 설정하는 마지막 작업이 있습니다.

 

4. 이제 코드 입력을 시작할 수 있습니다.

WeChat 결제 플랫폼에서 다운로드한 데모 프로그램을 열고 소스 코드를 찾을 수 있습니다. AppDelegate 테스트용 APPID 찾기:

  

  然后回到自己建立的工程中,写下了微信支付的流程:

  

  既然要注册微信,那么我们先到微信SDK的头文件中查看一下,发现只提供了两个注册方法,注释也写的很清楚:

  

  然后我们导入这个头文件之后,直接根据已经有的APPID进行注册:

  

  好,其实步骤:1、导入微信支付SDK,注册微信支付。然后2、设置微信APPID为URL Schemes前面已经做好了。

  然后我们需要进行3、发起支付,调其微信支付,在这之前,我们直接看看微信官方提供给我们的Demo:

  

  

  最后我们找到了Demo中完整的可以直接用的这部分发起微信支付的源码:

  

  将这段直接拷贝到我的工程中,有那么一点经验的开发者就会注意到一些,比如Demo源码使用了MRC的autorelease,你可以手动去掉,类方法可以换成实例方法,根据你的实际项目开发需求:


 1 - (NSString *)jumpToBizPay { 2  3 //============================================================ 4     // V3&V4支付流程实现 5     // 注意:参数配置请查看服务器端Demo 6     // 更新时间:2015年11月20日 7     //============================================================ 8     NSString *urlString   = @"http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=ios"; 9     //解析服务端返回json数据10     NSError *error;11     //加载一个NSURL对象12     NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];13     //将请求的url数据放到NSData对象中14     NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];15     if ( response != nil) {16         NSMutableDictionary *dict = NULL;17         //IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中18         dict = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];19         20         NSLog(@"url:%@",urlString);21         if(dict != nil){22             NSMutableString *retcode = [dict objectForKey:@"retcode"];23             if (retcode.intValue == 0){24                 NSMutableString *stamp  = [dict objectForKey:@"timestamp"];25                 26                 //调起微信支付27                 PayReq* req             = [[PayReq alloc] init];28                 req.partnerId           = [dict objectForKey:@"partnerid"];29                 req.prepayId            = [dict objectForKey:@"prepayid"];30                 req.nonceStr            = [dict objectForKey:@"noncestr"];31                 req.timeStamp           = stamp.intValue;32                 req.package             = [dict objectForKey:@"package"];33                 req.sign                = [dict objectForKey:@"sign"];34                 [WXApi sendReq:req];35                 //日志输出36                 NSLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",[dict objectForKey:@"appid"],req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign );37                 return @"";38             }else{39                 return [dict objectForKey:@"retmsg"];40             }41         }else{42             return @"服务器返回错误,未获取到json对象";43         }44     }else{45         return @"服务器返回错误";46     }47 }

  哦,对了,还有一个很简单但很必要的操作忘记展示出来了:

  

  进一步,我们在微信的SDK源码头文件中,可以找到两个很有用的方法,你也可以在微信支付平台打开开发者文档找到这两个方法的介绍:

  

  然后我将其运用在我的工程中

  

  好,就这样,步骤:3、发起微信支付,调起微信 到这里就完成了。

  最后还需要做的就是,处理返回微信支付返回信息,使用了微信知否功能,不管是支付成功和失败,甚至还是用户自己取消支付,都会需要返回当前应用,并返回相关的信息。

  这里就需要用到微信SDK的处理返回信息的代理协议和代理方法了:

  

  在微信SDK的头文件中,我们可以找到protocol协议:

  

  好,我们也官方Demo中看看它是如何使用的:

  

  

  而我们只需要使用下面红色框框起来的部分代码,直接拷贝拿来使用:

  

  回到我的简易工程中,直接粘贴在里面用:

  

  那么这里面的返回信息中主要就有两个东西:resp.errCode错误码 和 resp.errStr错误原因,这两个东西在实际开发中经常遇到,所以也是面试会问到的一个细节。

  接着你可以通过点进连接:pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_5 可以在官方开发文档中找到:

    

  然后,根据实际开发需求,我们可能还需要回传微信app的相关信息:

  在当前AppDelegate.m文件添加一个代理方法:

  

5. 이제 전체 WeChat 결제 사용 프로세스가 완료되었습니다. 시뮬레이터에서는 WeChat을 설치하기 어렵기 때문에 이제 실제 기기를 사용하여 테스트할 수 있습니다.

전재할 경우 출처를 명시하세요: www.cnblogs.com/goodboy-heyang/p/5255818.html, 노동.

마지막으로 마스터 github에도 WeChat 설명과 소스 코드가 있다는 것을 우연히 발견했습니다.

github.com/renzifeng/WXPay

하지만 여기서도 배울 수 있습니다. , 없으신 분들을 위해 99달러에 개발자 계정을 구입했습니다. GitHub에서 다운로드한 소스 코드는 실제 머신에서 직접 테스트할 수 없습니다. 그 이유는 그 당시 XCode가 비교적 일찍 생성되었기 때문입니다. 개발자 계정이 없으면 실제 머신을 지원하지 않습니다.

위 내용은 IOS WeChat 결제 개발 단계에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.