iOS開發(fā)(OC)——微信支付

1、首先在微信開放平臺上創(chuàng)建應(yīng)用,并按照開放平臺上的步驟把SDK接入,配置環(huán)境(這些步驟微信開放平臺寫的很清楚,下面我主要寫一些開放平臺沒有,或者需要注意的地方)
2、導(dǎo)入頭文件#import "WXApi.h"(如果報錯,則是缺少某些類庫或者靜態(tài)庫和頭文件路徑?jīng)]有設(shè)置好,請仔細查看并按照開放平臺的步驟檢查
3、注冊

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [WXApi registerApp:@"此處是你在微信開放平臺上創(chuàng)建的app的appid"];
}

4、iOS 8.0以下重寫下面兩個方法

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
    if([url.scheme isEqualToString:@"此處是上面開放平臺步驟中的URL scheme的值"]){
        return [WXApi handleOpenURL:url delegate:self];
    }
    return YES;
}
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
    if([url.scheme isEqualToString:@"此處是上面開放平臺步驟中的URL scheme的值"]){
        return [WXApi handleOpenURL:url delegate:self];
    }
    return YES;
}

5、iOS 9.0以上實現(xiàn)下面的方法(也就是說,如果app要兼容iOS 8.0以上,則步驟4的兩個方法和這個方法都要實現(xiàn))

//iOS9.0以上使用
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
    if ([url.scheme isEqualToString:@"URL scheme 的值"]) {
        return [WXApi handleOpenURL:url delegate:self];
    }
    return YES;
}

6、微信代理方法的實現(xiàn)

//發(fā)起支付請求回調(diào)
-(void)onReq:(BaseReq *)req{
    
}
//支付結(jié)果回調(diào)
-(void)onResp:(BaseResp *)resp{
    if ([resp isKindOfClass:[PayResp class]]){
        PayResp *response = (PayResp*)resp;
        //response.errCode
//        WXSuccess           = 0,    /**< 成功    */
//        WXErrCodeCommon     = -1,   /**< 普通錯誤類型    */
//        WXErrCodeUserCancel = -2,   /**< 用戶點擊取消并返回    */
//        WXErrCodeSentFail   = -3,   /**< 發(fā)送失敗    */
//        WXErrCodeAuthDeny   = -4,   /**< 授權(quán)失敗    */
//        WXErrCodeUnsupport  = -5,   /**< 微信不支持    */
    }
}

7、發(fā)起支付

//下面幾個參數(shù)由后臺返回,移動端不做處理
PayReq *request = [[PayReq alloc] init];
request.partnerId = sign[@"partnerid"];
request.prepayId= sign[@"prepayid"];
request.package = sign[@"package"];
request.nonceStr= sign[@"noncestr"];
request.timeStamp= [sign[@"timestamp"] intValue];
request.sign= sign[@"sign"];
[WXApi sendReq:request];

注意:為了支付完成后能成功返回app,需要在info.plist文件中設(shè)置URL scheme,并且這個值是唯一的(最好填寫bundel id 或者開放平臺上的app ID),詳細步驟在微信開放平臺的接入文檔有

原文地址:https://blog.csdn.net/liumude123/article/details/82592129?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-11&spm=1001.2101.3001.4242

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • DISPATCH_QUEUE_CONCURRENTDISPATCH_QUEUE_SERIALdispatch_ba...
    Mr_MayBee閱讀 4,255評論 1 36
  • JS 篇 閉包 定義:函數(shù)內(nèi)部定義函數(shù),內(nèi)部函數(shù)持有外部函數(shù)參數(shù)作用 讀取函數(shù)內(nèi)部的變量 讓這些變量的值始終保持在...
    高小二的心情閱讀 275評論 0 0
  • 一、手機百度(搜索業(yè)務(wù)) 1.技術(shù)亮點、難點。 2.web加載渲染過程 3.組件化,路由和taget-action...
    酷拼車閱讀 2,307評論 0 0
  • MY BLOG---> Demo Demo下載地址demo使用時,請在WTPayKeys.h里面將各個參數(shù)配置好!...
    多面獸閱讀 3,906評論 4 26
  • 此處值為screen.bounds.size 分辨率乘以3即可 iphone12 及 iphone12 pro -...
    野咪咕閱讀 462評論 0 0