ios的Ping++支付接入步骤

Ping++ SDK 包括 Server 和 Client 两部分。

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

应用在接入 Ping++ SDK 时,需要使用以下三个参数,这三个参数你可以在管理平台中获取:

  1. API Key:API Key 是 Ping++ 分配给你的唯一身份标识。在 Server SDK 的使用过程中需要配置该参数。注册 Ping++ 账号并通过审核后,Ping++ 会分配给你两个 API Key,分别为:Test KeyLive KeyTest KeyLive Key 分别表明使用测试模式和真实模式,你可以根据实际应用使用场景分别使用。
  2. 应用 ID:应用 ID 是 Ping++ 分配给你的应用的唯一标识。在 Server SDK 的使用过程中需要配置该参数。
  3. Notify URL:Notify URL 是 Ping++ 系统用来向你的应用后台推送异步通知时使用的地址,该地址必须是一个互联网可以访问的地址。你可以在 Ping++ 管理平台中对应的应用内进行设置。

一、接入步骤:

  1. 获取 SDK

    Github 下载 SDK, 里面包含了 lib 文件夹和 example 文件夹。lib 文件夹里面是 SDK 的文件,example 文件夹里是接入示例代码

  2. 依赖 Frameworks:
               必需:
    CFNetwork.frameworkSystemConfiguration.frameworkSecurity.frameworklibc++.dylib

    百度钱包所需:

    libz.dyliblibstdc++.dylibCoreTelephony.frameworkAddressBook.frameworkAddressBookUI.frameworkAudioToolbox.frameworkCoreAudio.frameworkCoreGraphics.frameworkImageIO.frameworkMapKit.frameworkMessageUI.frameworkMobileCoreServices.frameworkQuartzCore.framework
  3. 根据所需渠道导入相应的库文件
  4. 添加 URL Schemes:在 Xcode 中,选择你的工程设置项,选中 "TARGETS" 一栏,在 "Info" 标签栏的 "URL Types" 添加 "URL Schemes",如果使用微信,填入所注册的应用程序 id,如果不使用微信,则自定义,建议起名稍复杂一些,尽量避免与其他程序冲突。
  5. 添加 Other Linker Flags:在 Build Settings 搜索 Other Linker Flags ,添加 -ObjC

二、发起支付:

1. Client 发送支付要素给 Server

用户选择渠道点击交易按钮, Client 收集交易所需的相关参数传递给 Server (服务器的地址为代码中的 URL)。

NSDictionary* dict = @{    @"channel" : channel, // 渠道 alipay, wx, upacp, bfb
    @"amount"  : amount   // 金额};NSData* data = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil];NSString *bodyData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
[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) {
    NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;    NSString* charge = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];    // ...}];

2. Server 发送支付请求并将返回的支付凭据传给 Client

Server 接收并处理 Client 传过来的数据,使用 Ping++ 提供的方法向 Ping++ 发起交易,并将从 Ping++ 获得的带支付凭据的 Charge 对象返回给 Client。

<?php//引用 SDK 库文件require_once(‘/path/to/Pingpp.php‘);//获取客户端的参数,这里不能使用 $_POST 接收,所以我们提供了如下的参考方法接收$input_data = json_decode(file_get_contents("php://input"), true);//TODO 客户在这里自行处理接收过来的交易所需的数据//设置API KEY,如果是测试模式,这里填入 Test Key;如果是真实模式, 这里填入 Live Key。Pingpp::setApiKey("YOUR-KEY");//创建支付对象,发起交易$ch = Pingpp_Charge::create(    //array 里需要哪些参数请阅读 API Reference 文档
    array(        "order_no"  => $orderNo,  //商户系统自己生成的订单号
        "app"       => array("id" => "YOUR-APP-ID"),  //Ping++ 分配给商户的应用 ID
        "amount"    => $amount,  //交易金额
        "channel"   => $channel,  //交易渠道
        "currency"  => "cny",        "client_ip" => $_SERVER["REMOTE_ADDR"],  //发起交易的客户端的 IP
        "subject"   => "Your Subject",        "body"      => "Your Body",        "extra"     => null //仅客户端为 HTML5 时此参数不为空,具体请参考 API Reference 文档
    )
);echo $ch;

3. Client 调起支付控件完成支付

Client 接收 Server 返回的带支付凭据的 Charge 对象并用之调起支付插件完成交易

[Pingpp createPayment:charge viewController:viewController appURLScheme:kUrlScheme withCompletion:^(NSString *result, PingppError *error) {    if ([result isEqualToString:@"success"]) {        // ...
    } else {        NSLog(@"PingppError: code=%lu msg=%@", error.code, [error getMsg]);
    }
}];

4. 渠道同步返回支付结果给 Client

在上一步中用户完成了支付,渠道会返回一个支付结果给客户端,这里 Client 需要做的是处理此结果。

渠道为银联、百度钱包或者渠道为支付宝但未安装支付宝钱包时,交易结果会在调起插件时的 Completion 中返回。 渠道为微信、支付宝且安装了支付宝钱包时,请实现 UIApplicationDelegate- application:openURL:sourceApplication:annotation: 方法:

 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    [Pingpp handleOpenURL:url withCompletion:^(NSString *result, PingppError *error) {        if ([result isEqualToString:@"success"]) {            // ...
        } else {            NSLog(@"PingppError: code=%lu msg=%@", error.code, [error getMsg]);
        }
    }];    return  YES;
}

5. Server 收到 Ping++ 发送的交易结果的异步通知

Ping++ 会把从渠道收到的异步通知告诉商户 Server,客户 Server 接收到异步通知是一个带支付状态的完整的 Charge 对象,客户在接收到异步通知后需要回复 success 给 Ping++ 表明成功收到异步通知。所有的交易结果,商户均须以异步通知结果为准。关于异步通知具体请参见 API Reference 文档。

<?php$input_data = json_decode(file_get_contents("php://input"), true);if($input_data[‘object‘] == ‘charge‘) {    //TODO update database
    echo ‘success‘;
} else {    echo ‘fail‘;
}
时间: 2024-11-13 06:24:31

ios的Ping++支付接入步骤的相关文章

iOS的Ping++支付接入步骤(详细)

Ping++ SDK 1.简介 Ping++ SDK包括Server和Client两部分. 其中Server目前支持 PHP,Java,Python,Node.js,Ruby,Go,C# 七种语言. Client目前支持 iOS终端,Android终端,手机网页和PC网页这四种平台,分别对应iOS,Android,HTML5和PC这四种Client SDK. 2.环境 为了提高接入效率,Ping++提供了Live和Test两个工作模式提供开发者接入时使用,这两种模式切换非常简单,只需要在使用Se

ios Google play service接入步骤

首先按照: https://developers.google.com/games/services/ iOS start guide说明 建立应用和其他步骤 在console中可以建立app https://console.developers.google.com/project/ 之后需要在 https://play.google.com/apps/publish/ 中配置好工程,填入bundleid和其他信息,重要*要加入测试账号,不然会导致app的未发布状态下去测试会一直无法login

iOS通俗易懂的微信支付接入和爬坑指南,十分钟轻松搞完

现在基本所有的App都会接入支付宝支付以及微信支付,也有很多第三方提供给你 SDK帮你接入,但是这种涉及到支付的东西还是自己服务器搞来的好一些,其实搞懂了 逻辑非常的简单,下面直接给大家说说下基本流程和接入需要注意的东西. 前期准备(这个东西一般来讲我们不需要来操心,但是还是稍微介绍下) 1.到微信开放平台注册账号点击打开链接 2.进入管理中心------移动应用------创建移动应用----根据页面完善应用资料 3.审核过后,通过应用详情页面,查看应用详情,查看AppID和AppSecret

IOS开发之支付功能概述

前言:本随笔将对IOS开发的支付功能进行一个概述. 内容大纲: 一.常见的支付方案简介 二.第三方支付SDK 三.苹果官方支付方案 四.Web支付方案 正文: 一.常见的支付方案简介 在微信支付中 微信支付的网址是: https://pay.weixin.qq.com/wiki/doc/api/index.html 进去之后,我们可以看到网页,但我接下来主要讲的是app支付 app支付的过程:商业app通过集成微信SDK,用户解析后跳转到微信内软件支付的过程. 点进去app支付: 我们可以看到A

iOS开发 - 开发支付篇

iOS 开发支付篇 随着互联网的发展,电商平台已经成为人们的习惯一种生活方式,电商个人认为站在开发的角度看,也就多了一个购物车和支付,而支付称为很多刚接触电商平台开发人员很向往的一个技术点,那么现在我讲自己了解的当前所有支付方式以及如何使用分享给大家. 支付宝支付: 支付流程 : (1)先与支付宝签约,获取商户id(partner)和账号id(seller) (2)下载相应的公私钥文件(加密签名使用),在客户端我们可能只需要私钥 (3)下载支付宝sdk (4)生成订单信息,可以直接客户端或者自己

iOS之开发支付功能概述

前言:本随笔将对IOS开发的支付功能进行一个概述. 内容大纲: 一.常见的支付方案简介 二.第三方支付SDK 三.苹果官方支付方案 四.Web支付方案 正文: 一.常见的支付方案简介 在微信支付中 微信支付的网址是: https://pay.weixin.qq.com/wiki/doc/api/index.html 进去之后,我们可以看到网页,但我接下来主要讲的是app支付 app支付的过程:商业app通过集成微信SDK,用户解析后跳转到微信内软件支付的过程. 点进去app支付: 我们可以看到A

iOS开发微信支付

现在基本所有的App都会接入支付宝支付以及微信支付,也有很多第三方提供给你 SDK帮你接入,但是这种涉及到支付的东西还是自己服务器搞来的好一些,其实搞懂了 逻辑非常的简单,下面直接给大家说说下基本流程和接入需要注意的东西. 支付宝详细爬坑接入指南传送门   前期准备(这个东西一般来讲我们不需要来操心,但是还是稍微介绍下) 1.到微信开放平台注册账号点击打开链接 2.进入管理中心------移动应用------创建移动应用----根据页面完善应用资料 3.审核过后,通过应用详情页面,查看应用详情,

iOS开发微信支付的介绍与实现

1.前期准备 1) 到微信开放平台注册账号 需要登录邮箱验证 填写您的商户信息 2) 进入管理中心 --- 移动应用 --- 创建移动应用 --- 根据页面完善应用资料 3) 审核过后,通过应用详情页面,查看应用详情,查看AppID和AppSecret相关信息 4) 创建这些是没有支付能力的,需要额外申请,还是根据提示一步步填写,填写完之后会发一封邮件到您的预留的邮箱,然后到商户平台点击打开链接填写资料,最主要的是验证下开户收款账号,会收到一波几分钱的巨额财产,那么这个时候如果你填写的是你的开户

Ping++ php接入App端

整理来自官网 https://www.pingxx.com/docs/server/charge 第一步,分为三部分(Server端接入,Client端接入,Webhooks/测试和联调) 支付 接入ping++发起支付,服务器端需要做的就是想Ping++请求 Charge对象,然后返回给客户端,并且监听和获取Webhooks通知. 1.设置API-Key 2.SDK验证签名设置 3.从服务端发起支付请求,获取支付凭据 4.将获得的支付凭据给Client 5.接收Webhookst通知 6.验证