欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微信、支付宝支付集成--Ping++支付接入步骤

程序员文章站 2022-05-10 13:07:12
...

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++支付接入步骤

  • 说明

    • 应用需要有选择渠道付款的页面,用户选择渠道发起付款请求时,客户端传递订单信息到应用服务器。

    • 服务器接收订单信息后,调用 Ping++ Server SDK 发起支付请求。

    • 请求完成后会获得 Ping++ 返回的 Charge 对象,由于这里的 Charge 对象用于客户端调起支付控件,所以我们称之为支付凭据。

    • 服务器获得支付凭据后,将支付凭据返回给客户端,返回类型必须是 JSON 格式。

    • 客户端接收到服务器返回的 JSON 格式的支付凭据后,使用 Client SDK 调用支付控件完成支付,用户在控件中完成付款。

    • 在用户付完款后,Client SDK 会把支付结果返回给调用页面,客户端根据返回结果提示用户支付结果。

    • 与此同时,Ping++ 会主动以 POST 方式给你配置在管理平台上的 Webhooks 通知地址发送支付结果。支付结果是 Event 对象,我们称之为 Webhooks 通知,订单状态需要以 Webhooks 通知为准。

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

微信、支付宝支付集成--Ping++支付接入步骤

    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++接入指南


相关标签: ping++ 支付