iOS支付配置 ping++

来源:互联网 发布:随机模拟的软件 编辑:程序博客网 时间:2024/04/29 12:27

ping++帖子总结

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

API Key:API Key 是 Ping++ 分配给你的唯一身份标识。在 Server SDK 的使用过程中需要配置该参数。注册 Ping++ 账号并通过审核后,Ping++ 会分配给你两个 API Key,分别为:test key和live key。这俩 分别表明使用测试模式和真实模式,你可以根据实际应用使用场景分别使用。

应用 ID:应用 ID 是 Ping++ 分配给你的应用的唯一标识。在 Server SDK 的使用过程中需要配置该参数。

Notify URL:Notify URL 是 Ping++ 系统用来向你的应用后台推送异步通知时使用的地址,该地址必须是一个互联网可以访问的地址。你可以在 Ping++ 管理平台中对应的应用内进行设置。

一、接入步骤:

获取 SDK

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

cocoapods 在profile中加入  pod 'Pingpp'

依赖 Frameworks:

           必需:

    1. CFNetwork.frameworkSystemConfiguration.frameworkSecurity.frameworklibc++.dylib

                 百度钱包所需:

      libz.dyliblibstdc++.dylibCoreTelephony.frameworkAddressBook.frameworkAddressBookUI.frameworkAudioToolbox.frameworkCoreAudio.frameworkCoreGraphics.frameworkImageIO.frameworkMapKit.frameworkMessageUI.frameworkMobileCoreServices.frameworkQuartzCore.framework


    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';}

  1. 用到微信 的话 需要用到这样的配置

  2. 添加网络访问权限及白名单

    添加URL Type

1 0
原创粉丝点击