1. 程式人生 > >iOS整合支付寶支付

iOS整合支付寶支付

1,SDK匯入

  1. 解壓Demo,進入到路徑:Demo/客戶端demo/支付寶錢包支付介面開發包標準版(iOS 15.1.6)
  2. 將AlipaySDK.bundle,AlipaySDK.framework匯入到專案
  3. 新增依賴,官方文件給的好多依賴,試了下,這幾個是必須要加的。TARGETS-General-Linked Frameworks and Libraries新增:
    • libz.tbd
    • libc++.tbd
    • SystemConfiguration.framework
    • CoreTelephony.framework
    • CoreMotion.framework

5,配置URL Schemes
TARGETS-Info-URL Types新增一項,在URL Schemes裡邊隨便一個,注意要有一定唯一性,否則如果和手機中其它app的重複,就會出現調起支付寶支付後不能跳轉回app的情況。這裡最好是用純字元,用下劃線什麼的也會出現支付後無法跳轉回app。
6,開啟專案info.plist,右鍵選擇Open as - Source code,把這段複製到plist中,儲存重新選擇Open as - Property List,能正常開啟就證明格式對了,除彈窗提示打不開就是標籤或者層級不對,修改一下。

<key>NSAppTransportSecurity</key>
 <dict>
  <key>NSAllowsArbitraryLoads</key>
  <true>
  <key>NSExceptionDomains</key>
  <dict>
   <key>alipay.com</key>
   <dict>
    <key>NSIncludesSubdomains</key>
    <true>
    <key
>
NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.0</string> <key>NSTemporaryExceptionRequiresForwardSecrecy</key> <false> </dict> <key>alipayobjects.com</key
>
<dict> <key>NSIncludesSubdomains</key> <true> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true> <key>NSTemporaryExceptionMinimumTLSVersion</key> <string>TLSv1.0</string> <key>NSTemporaryExceptionRequiresForwardSecrecy</key> <false> </dict> </dict> </dict>

2,從伺服器獲取訂單資訊後調起支付

- (void)touchesBegan:(NSSet<UITouch> *)touches withEvent:(UIEvent *)event {
    // 向伺服器請求訂單資料,支付寶需要的訂單資料是一個字串
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; //伺服器獲取訂單需要傳遞的引數
    //假設這裡需要傳需要支付的訂單ID,伺服器接到後會根據這個ID向支付寶獲取訂單資料
    parameters[@"order_id"] = @"";
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    [manager POST:@"伺服器獲取訂單資料的URL" parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        //用伺服器返回的訂單資訊發起支付
        [self jumpToAlipayWithOrder:responseObject[@"order"]]; 
    } failure:nil];
}

#pragma mark - 根據訂單引數調起支付寶客戶端支付
- (void)jumpToAlipayWithOrder:(NSString *)order {
    [[AlipaySDK defaultService] payOrder:order fromScheme:appScheme callback:nil]; ///這個block完成了並沒有回撥
}

3,本地生成訂單支付

  • 如果沒有伺服器來提供生成訂單或者需要本地測試,可以在客戶端生成訂單資訊。
  • 將官方Demo中的 Util 和 openssl 兩個資料夾匯入專案中,注意勾選Copy items if needed。
  • 將官方Demo中的 libcrypto.a 和 libssl.a 匯入專案中。
  • TARGETS-BuildSettings-Search Paths-Header Search Paths中新增:$(PROJECT_DIR)/JKRAlipayDemo/AlipayFramewrok
    上面新增的是openssl資料夾的路徑,所以根據專案不同而修改吧。
  • 為專案建立pch檔案,新增
#import <UIKit>
  • 將官方Demo中的Order.h, Order.m檔案匯入專案中
    以上配置完畢後,執行專案就應該沒有錯誤了,下面本地生成訂單資料:
- (void)touchesBegan:(NSSet<UITouch> *)touches withEvent:(UIEvent *)event {
    /**
    // 向伺服器請求訂單資料,支付寶需要的訂單資料是一個字串
    NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; //伺服器獲取訂單需要傳遞的引數
    //假設這裡需要傳需要支付的訂單ID,伺服器接到後會根據這個ID向支付寶獲取訂單資料
    parameters[@"order_id"] = @"";
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    [manager POST:@"伺服器獲取訂單資料的URL" parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        //用伺服器返回的訂單資訊發起支付
        [self jumpToAlipayWithOrder:responseObject[@"order"]]; 
    } failure:nil];
     */

    NSString *partner = @"2088xxxxxxxxxxxx";                   // 合作者身份(PID)
    NSString *seller = @"[email protected]";                  // 支付寶收款賬號
    NSString *privateKey = @"xxxxxxxxxxxxxx";                 // 商戶方的私鑰

    Order *order = [[Order alloc] init];
    order.partner = partner;
    order.sellerID = seller;
    order.outTradeNO = [self generateTradeNO];                  // 訂單ID
    order.subject = @"1";                                       // 商品標題
    order.body = @"沒有錢怎麼辦";                                 // 商品描述
    order.totalFee = @"0.01";                                   // 商品價格
    order.notifyURL = @"http://www.baidu.com";                  // 回撥URL
    order.service = @"mobile.securitypay.pay";                  // 固定為mobile.securitypay.pay
    order.paymentType = @"1";                                   // 支付型別,1:商品購買
    order.inputCharset = @"utf-8";                              // 商戶網站使用的編碼格式,固定為utf-8
    order.itBPay = @"30m";                                      // 設定未付款交易的超時時間
    order.showURL = @"m.alipay.com";                            // 商品地址

    NSString *orderSpec = [order description];
    NSLog(@"orderSpec = %@",orderSpec);

    id<DataSigner> signer = CreateRSADataSigner(privateKey);
    NSString *signedString = [signer signString:orderSpec];

    NSString *orderString = nil;
    if (signedString != nil) {
        orderString = [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",
                       orderSpec, signedString, @"RSA"];
        [self jumpToAlipayWithOrder:orderString];
    }
}

#pragma mark - 根據訂單引數調起支付寶客戶端支付
- (void)jumpToAlipayWithOrder:(NSString *)order {
    [[AlipaySDK defaultService] payOrder:order fromScheme:appScheme callback:nil]; ///這個block完成了並沒有回撥
}

#pragma mark 生成隨機訂單號
- (NSString *)generateTradeNO {
    static int kNumber = 15;
    NSString *sourceStr = @"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    NSMutableString *resultStr = [[NSMutableString alloc] init];
    srand((unsigned)time(0));
    for (int i = 0; i < kNumber; i++) {
        unsigned index = rand() % [sourceStr length];
        NSString *oneStr = [sourceStr substringWithRange:NSMakeRange(index, 1)];
        [resultStr appendString:oneStr];
    }
    return resultStr;
}

4,處理支付結果

AppDelegate.m中

- (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);
            if ([resultDic[@"resultStatus"] isEqualToString:@"9000"]) {
                NSLog(@"支付成功");
            } else {
                NSLog(@"支付失敗");
            }
        }];
    }
    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);
            if ([resultDic[@"resultStatus"] isEqualToString:@"9000"]) {
                NSLog(@"支付成功");
            } else {
                NSLog(@"支付失敗");
            }
        }];
    }
    return YES;
}

5,Demo下載

相關推薦

iOS開發中支付支付整合(其實很簡單)

最近專案中要使用支付寶支付,記得之前整合支付寶支付是挺麻煩的一件事,可這次整合支付寶支付卻順利、方便了許多,感謝支付寶開放平臺的技術人員將整合文件寫的越來越方便我們這些開發人員使用。先附上支付寶支付整合的官方文件https://docs.open.alipay.com/20

iOS 整合支付

前段時間 公司集成了支付寶感覺還可以 、萬萬沒想到啊一個月不到、又讓整合什麼叫做聚寶雲支付的 也是,咱這行業 太敏感 就得走偏門 長話短說 1、在官網上面下載官方支付文件 (吐槽下他們的demo,demo裡面有倆個libFWPaySdk.a一個說是真機跑

iOS整合支付支付

1,SDK匯入 解壓Demo,進入到路徑:Demo/客戶端demo/支付寶錢包支付介面開發包標準版(iOS 15.1.6) 將AlipaySDK.bundle,AlipaySDK.framework匯入到專案 新增依賴,官方文件給的好多依賴,試了下,這幾個

iOS整合支付支付流程詳解

接入前期準備工作 接入前期準備工作包括商戶簽約和金鑰配置。 開發包整合流程:(這裡只是講述iOS) 將我們下載的sdk壓縮包解壓,找到客戶端demo(PS:sdk下載連結:支付寶SDK下載) 匯入程式碼。 步驟一:啟動Xcode,把剛剛解壓的壓縮檔

iOS支付支付整合

支付寶和微信都是業界的老大哥,相信大家都有所覺得文件、SDK都是各種坑吧(純粹吐槽而已),本文先整理支付寶支付整合。 一、準備工作 1、向支付寶”簽約" 成為支付寶的”商戶”, 簽約完成後, 支付寶會提供一些必要的資料給我們(商戶ID-partner,帳號

iOS整合支付支付的詳細講解以及常見錯誤

  文章轉載自 http://www.bubuko.com/infodetail-1139083.html ,自覺寫的很詳細,粘貼出來供學習。。。 一,在支付寶開放平臺下載支付寶SDK(https://openhome.alipay.com/platform/docum

iOS中 最新支付支付(AliPay) 韓俊強的博客

urlencode init 易用 微軟雅黑 per 回調 process class lis 每日更新關註:http://weibo.com/hanjunqiang 新浪微博 如今的支付方式一般有三種, 支付寶, 微信, 網銀. 個人認為最簡單易用的還是支付寶

java實現沙箱測試環境支付支付(demo)和整合微信支付支付支付到ssm

mar 文件 fun Go examples IT === throws 由於 文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關註我的微信公眾號:好好學java,獲取優質學習資源。 一、支付寶測試環境代碼測試 1.下載電腦網站的官方demo: 下載地址:https:

Androd整合微信支付支付支付

文章目錄 前言 微信支付 支付寶支付 前言 我們在做App的時候,可能需要接入支付功能,常見的支付有微信支付和支付寶支付。這裡只說明下前端的程式碼邏輯。 微信支付 微信支付開發

cocos creator整合支付支付功能--安卓篇

App支付Android整合流程:(開啟cocos creator打包後的android studio 工程) 1:匯入開發資源 將alipaySdk-xxxxxxxx.jar包放入商戶應用工程的libs目錄下,如下圖。 2:將此jar包匯入到依賴jar包中去:右鍵jar包選擇 Add

android螞蟻金服支付支付整合步驟

此篇僅限於android客戶端整合步驟,檢視全部的請轉https://docs.open.alipay.com/204/105296/ 自支付寶 SDK  15.5.7 開始,打包方式更換為 AAR,替代之前的 JAR 打包,SDK 支付介面部分不變.現在就基於支付寶SDK15.5.7

Android 整合支付支付後開啟混淆報錯問題解決

Android整合阿里的支付寶支付以後開啟混淆開關打包時會發現有一個警告資訊中斷打包 警告資訊: Warning: com.alipay.android.phone.mrpc.core.AndroidHttpClient: can't find referenced method '

iOS 模仿支付支付到賬推送,播報錢數

最近申請了支付寶的二維碼收錢碼,其中支付寶有這麼一個功能,就是,別人掃描你的二維碼給你轉賬之後,收到錢會有一條語音推送,”支付寶到賬 1000萬“之類的推送訊息,不管你的支付寶app有沒有被殺死。 只要你的遠端推送開著,並且支付寶的"二維碼收錢到賬語音提醒",都開啟著,就可

整合第三方SDK——支付支付

No1.    當今社會,幾乎所有的APP都離不開線上支付功能,說道支付,當代當歸支付寶微信所屬。一些面試的朋友,也離不開這兩樣必需品,今天就著重來說一說——支付寶。    說到支付寶,可能每個人都很熟悉。“我有支付寶啊”“我經常用支付寶付款啊”“我刷淘寶就是用支付寶付款啊”

【Java】快速整合微信支付支付支付

本文介紹博主自己封裝的一個微信支付和支付寶支付的library 本專案解決的問題僅限於最後的支付環節,即你告訴我多少錢,我帶著這個多少錢的資訊發起微信支付或者支付寶支付,僅需簡單的配置資訊,然後

整合第三方SDK之支付支付

    不久前,分享了一篇關於整合微信支付的爬坑總結,如果你還沒來的及看,就戳我吧。今天想要分享的是一篇關於支付寶支付的。當然了,在如今這個網際網路告訴發展的時代,幾乎所有的APP都離不開支付功能,既然要支付,那就離不開支付寶和微信啦,當然她也就成為面試中常見的【人物】嘍。那

iOS 整合微信支付

      微信支付現在是移動支付領域一支不可忽視的力量,我們移動開發人員在開發app的時候,也不可避免的用到各種支付,支付寶支付我們用的最多了,我這裡就不講解了,我現在給大家講解一個iOS微信支付,首先 我們需要在微信開放平臺註冊商戶資訊(記住是微信開放平臺不是公眾平臺)

關於android微信支付支付支付整合

最近專案中要整合微信和支付寶支付 在沒有接觸支付之間 覺得還是比較難的 但真正去實現的時候還是比較簡單的 就是有不少坑要去踩過之後才知道 支付寶支付 : 對於支付寶支付 我個人理解還是比較簡單的 https://open.alipay.com/platform/home.h

一步一步帶你完成支付支付功能的整合(超詳細)

首先說說筆者的整合經歷,一開始整合時,像往常一樣百度了一下整合的方法,然後出來一大堆結果,以為應該會很簡單,然而事實卻並非如此。網上的整合方法很多都是舊版本的整合,現在支付寶已經對sdk以及demo進行了更新,雖說和舊版差別不是很大,不過對於不瞭解整個流程的開發

iOS開發 支付支付 包看包會

到這裡下載SDK    https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1 Appdelegate.m #pragma mark - 支付寶回撥 -