微信、支付寶支付集成--Ping++支付接入步驟

Ping++官方文檔:接入文檔


  • Ping++ SDK 包括ServerClient 兩部分

    • 其中 Server SDK 提供了 PHP, Java, Python, Node.js, Ruby, Go 六種語言版本。
  • Client SDK 提供了 Android, iOS, HTML5 三種平臺版本。

    應用在接入 Ping++ SDK 時,需要使用以下三個參數,這三個參數你可以在管理平臺中獲取:

  • API Key:API Key 是 Ping++ 分配給你的唯一身份標識。在 Server SDK 的使用過程中需要配置該參數。註冊 Ping++ 賬號並通過審覈後,Ping++ 會分配給你兩個 API Key,分別爲:Test Key 和 Live Key。 Test Key 和 Live Key 分別表明使用測試模式和真實模式,你可以根據實際應用使用場景分別使用。

  • 應用 ID:應用 ID 是 Ping++ 分配給你的應用的唯一標識。在 Server SDK 的使用過程中需要配置該參數。

  • Notify URL:Notify URL 是 Ping++ 系統用來向你的應用後臺推送異步通知時使用的地址,該地址必須是一個互聯網可以訪問的地址。你可以在 Ping++ 管理平臺中對應的應用內進行設置。


一、接入步驟(兩種):

獲取 SDK

  • 第一種使用 CocoaPods

    • 在 Podfile 添加
    pod 'Pingpp', '~> 2.1.0'
  • 1
  • 默認會包含支付寶、微信、銀聯和百度錢包,你也可以自己選擇渠道。目前有 ApplePay、Alipay、Wx、UnionPay、Bfb 五個子模塊可選擇,例如:
    pod 'Pingpp/Alipay', '~> 2.1.0'
    pod 'Pingpp/Wx', '~> 2.1.0'
    pod 'Pingpp/UnionPay', '~> 2.1.0'
    pod 'Pingpp/ApplePay', '~> 2.1.0'
  • 1
  • 2
  • 3
  • 4
  • 運行
pod install
  • 1
  • 2

從現在開始使用 .xcworkspace 打開項目,而不是 .xcodeproj
添加 URL Schemes:在 Xcode 中,選擇你的工程設置項,選中 TARGETS 一欄,在 Info 標籤欄的 URL Types 添加 URL Schemes,如果使用微信,填入微信平臺上註冊的應用程序 id(爲 wx 開頭的字符串),如果不使用微信,則自定義,建議起名稍複雜一些,儘量避免與其他程序衝突。允許英文字母和數字,首字母必須是英文字母,不允許特殊字符。
2.1.0 及以上版本,可打開 Debug 模式,打印出 log,方便調試。開啓方法:[Pingpp setDebugMode:YES];。

  • 第二種手動導入

    • 在 Github 根據所需渠道下載相應分支的 iOS SDK,裏面包含 lib 和 example 兩個目錄。example 目錄下的是示例項目,你需要將 lib 目錄下的文件添加到你的項目。

    • 依賴 Frameworks:
      必需:

CFNetwork.framework
SystemConfiguration.framework
Security.framework
libc++.dylib
libz.dylib
libsqlite3.0.dylib
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

百度錢包所需:

libstdc++.dylib
CoreTelephony.framework
AddressBook.framework
AddressBookUI.framework
AudioToolbox.framework
CoreAudio.framework
CoreGraphics.framework
ImageIO.framework
MapKit.framework
MessageUI.framework
MobileCoreServices.framework
QuartzCore.framework
Apple Pay 所需:
PassKit.framework
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

如果不需要某些渠道,刪除 lib/Channels 下的相應目錄即可。

  • 添加 URL Schemes:在 Xcode 中,選擇你的工程設置項,選中 TARGETS 一欄,在 Info 標籤欄的 URL Types 添加 URL Schemes,如果使用微信,填入微信平臺上註冊的應用程序 id(爲 wx 開頭的字符串),如果不使用微信,則自定義,建議起名稍複雜一些,儘量避免與其他程序衝突。允許英文字母和數字,首字母必須是英文字母,不允許特殊字符。
  • 添加 Other Linker Flags:在 Build Settings 搜索 Other Linker Flags,添加 -ObjC。
    2.1.0 及以上版本,可打開 Debug 模式,打印出 log,方便調試。開啓方法:[Pingpp setDebugMode:YES];。

  • 5.添加 Other Linker Flags:在 Build Settings 搜索 Other Linker Flags ,添加 -ObjC。

二、發起支付:

支付

  • 說明

    • 應用需要有選擇渠道付款的頁面,用戶選擇渠道發起付款請求時,客戶端傳遞訂單信息到應用服務器。

    • 服務器接收訂單信息後,調用 Ping++ Server SDK 發起支付請求。

    • 請求完成後會獲得 Ping++ 返回的 Charge 對象,由於這裏的 Charge 對象用於客戶端調起支付控件,所以我們稱之爲支付憑據。

    • 服務器獲得支付憑據後,將支付憑據返回給客戶端,返回類型必須是 JSON 格式。

    • 客戶端接收到服務器返回的 JSON 格式的支付憑據後,使用 Client SDK 調用支付控件完成支付,用戶在控件中完成付款。

    • 在用戶付完款後,Client SDK 會把支付結果返回給調用頁面,客戶端根據返回結果提示用戶支付結果。

    • 與此同時,Ping++ 會主動以 POST 方式給你配置在管理平臺上的 Webhooks 通知地址發送支付結果。支付結果是 Event 對象,我們稱之爲 Webhooks 通知,訂單狀態需要以 Webhooks 通知爲準。

下面是對比自己集成微信:

    1. Client 發送支付要素給 Server

      • 用戶選擇渠道點擊交易按鈕, Client 收集交易所需的相關參數傳遞給 Server (服務器的地址爲代碼中的 URL)。
NSDictionary* dict = @{    @"channel" : channel, // 渠道 alipay, wx, upacp, bfb
    @"amount"  : amount   };// 金額

[postRequest setHTTPBody:[NSData dataWithBytes:[bodyData UTF8String] length:strlen([bodyData UTF8String])]];

[postRequest setHTTPMethod:@"POST"];

[postRequest setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

[NSURLConnection sendAsynchronousRequest:postRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

   NSString* charge = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];  
     // ...}];
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 2 .Server 發送支付請求並將返回的支付憑據傳給 Client

    • Server 接收並處理 Client 傳過來的數據,使用 Ping++ 提供的方法向 Ping++ 發起交易,並將從 Ping++ 獲得的帶支付憑據的 Charge 對象返回給 Client。
  • 3 . Client 調起支付控件完成支付

Client 接收 Server 返回的帶支付憑據的 Charge 對象並用之調起支付插件完成交易

  • 4 . 渠道同步返回支付結果給 Client

    • 在上一步中用戶完成了支付,渠道會返回一個支付結果給客戶端,這裏 Client 需要做的是處理此結果。

    • 渠道爲銀聯、百度錢包或者渠道爲支付寶但未安裝支付寶錢包時,交易結果會在調起插件時的 Completion 中返回。 渠道爲微信、支付寶且安裝了支付寶錢包時,請實現 UIApplicationDelegate 的 - application:openURL:sourceApplication:annotation: 方法:

  • 5 . Server 收到 Ping++ 發送的交易結果的異步通知

    • Ping++ 會把從渠道收到的異步通知告訴商戶 Server,客戶 Server 接收到異步通知是一個帶支付狀態的完整的 Charge 對象,客戶在接收到異步通知後需要回復 success 給 Ping++ 表明成功收到異步通知。所有的交易結果,商戶均須以異步通知結果爲準。關於異步通知具體請參見 API Reference 文檔。

具體參見:Ping++接入指南


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