iOS开发iOS_小蟹专题丶信步沧桑

PayPal iOS 集成攻略

2016-05-12  本文已影响5499人  yzhxcql
这两天在研究如何在项目中集成PayPal的iOS SDK 但是百度到的资料很少,研究了两天拿出来和大家分享下,共同讨论共同成长。

这里以PayPal的官方demo为例,sdk和demo地址在这里:paypal

准备事项

首先你得注册个paypal账号,连账号都没有谁给你钱啊

  1. 登录paypal开发者网站。 点这里
  2. 右上角看到了没有,不上图了。有账号的登录,没账号的注册。
  3. 在上面的 DASHBOARD 页面下,找到 Creat APP ,点它!创建一个阿啪啪出来。 创建一个阿啪啪
  4. 我们来到创建阿啪啪的页面,这里需要输入一个阿啪啪名字以及选择一个账户,名字没问题,可是这个账户怎么来的?这个稍后说,选上就行了。名字填好后,点击Creat App
  5. 来到我们的阿啪啪页面,这里是查看你的应用信息的地方。右上角分别对应着你的应用的测试模式真实交易模式,点击切换会看到不同的API CREDENTIALS 内容,分别是在测试模式真实交易模式下不同的AccountClient IDSecret。这里掏出小本本,记下测试模式下的Client ID,之后会用到。
  6. 接下来,选择右边的SandboxAccounts选项。Sandbox就是测试环境,其中包含了你的账户信息、通知消息、交易记录等等。。(其实我不知道后面那三个干嘛的,因为没用到)。
    而在现在所看到的Accounts中,你会看到两个账号,第一个就是测试模式下,你的商家账号。在你的阿啪啪中产生的所有虚拟交易,其金额都会流入到这个账号下。而第二个,不用说你也猜到,就是在虚拟交易中扮演顾客的账号。右上角可以添加账号,具体玩法自行摸索,这里不多说了。
  7. 轻轻的点下你的商家账号。弹出的框选择Profile。展示的是这个账号的Account Details,第一个就是你的账号基本信息,包括你的邮箱、密码、电话号、账号类型、状态和城市。

准备工作基本上是完成了,下面看看如何进行虚拟支付

 [PayPalMobile initializeWithClientIdsForEnvironments:@{PayPalEnvironmentProduction : @"你的真实交易模式ClientID",PayPalEnvironmentSandbox : @"你的测试模式ClientID"}]; 

简单交代下集成paypal的支付流程:

  1. 配置paypal SDK连接环境如:测试环境、真实环境
  2. 配置paypal一些参数如:商家名字、地址选项、商家隐私政策和用户协议网址等
  3. 配置支付相关如:订单总额、货币类型和订单描述等
  4. 提交订单,通过代理回调支付状态

老司机要开车了,请坐稳

简单说下原理,paypal的支付并不唤起客户端,也就是说并不要求用户安装 paypal APP,支付的流程产生在paypal的sdk中已经封装好的VC中。你要做的就是设置参数和弹出paypal的VC以及处理后续的回调。

天才纸尿裤,我是第一步:

- 配置支付环境
[PayPalMobile preconnectWithEnvironment:PayPalEnvironmentSandbox];

/// 真实交易环境-也就是上架之后的环境
extern NSString * _Nonnull const PayPalEnvironmentProduction;
/// 模拟环境-也就是沙盒环境
extern NSString * _Nonnull const PayPalEnvironmentSandbox;
/// 无网络连接环境-具体用处,咳咳,自行摸索
extern NSString * _Nonnull const PayPalEnvironmentNoNetwork;

第二步:paypal配置

首先让你的订单VC有一个属性

@property(nonatomic, strong) PayPalConfiguration *payPalConfig;

然后配置它

//是否接受信用卡
 _payPalConfig.acceptCreditCards = NO;
 
 //商家名称
 _payPalConfig.merchantName = @"商家名";
 
 //商家隐私协议网址和用户授权网址-说实话这个没用到
 _payPalConfig.merchantPrivacyPolicyURL = [NSURL URLWithString:@"https://www.paypal.com/webapps/mpp/ua/privacy-full"];
  _payPalConfig.merchantUserAgreementURL = [NSURL URLWithString:@"https://www.paypal.com/webapps/mpp/ua/useragreement-full"];
  
  //设置地址选项-在支付页面可选择账户地址信息
  typedef NS_ENUM(NSInteger, PayPalShippingAddressOption) {
  //不展示地址信息
  PayPalShippingAddressOptionNone = 0,
  //这个没试过,自行查阅
  PayPalShippingAddressOptionProvided = 1,
  //paypal账号下的地址信息
  PayPalShippingAddressOptionPayPal = 2,
  //全选
  PayPalShippingAddressOptionBoth = 3,
};

  //paypal账号下的地址信息
  _payPalConfig.payPalShippingAddressOption = PayPalShippingAddressOptionPayPal;
  
  //配置语言环境
  _payPalConfig.languageOrLocale = [NSLocale preferredLanguages][0];

第三步:配置支付相关信息

PayPalPayment *payment = [[PayPalPayment alloc] init];

//订单总额
payment.amount = [NSDecimalNumber decimalNumberWithString:@"100"];

//货币类型-RMB是没用的
payment.currencyCode = @"USD";

//订单描述
payment.shortDescription = @"Hipster clothing";    

第四步:提交订单-最重要也是最简单的一步

//生成paypal控制器,并模态出来(push也行)
//将之前生成的订单信息和paypal配置传进来,并设置订单VC为代理 
PayPalPaymentViewController *paymentViewController = [[PayPalPaymentViewController alloc] initWithPayment:payment                                                                                            configuration:self.payPalConfig                                                                                                  delegate:self];
 
//模态展示
[self presentViewController:paymentViewController animated:YES completion:nil];
之后就是顾客账户上场了

最后:监测订单状态

//订单支付完成后回调此方法
- (void)payPalPaymentViewController:(PayPalPaymentViewController *)paymentViewController didCompletePayment:(PayPalPayment *)completedPayment {
  NSLog(@"PayPal Payment Success!");
}

//用户取消支付回调此方法
- (void)payPalPaymentDidCancel:(PayPalPaymentViewController *)paymentViewController {
  NSLog(@"PayPal Payment Canceled");
}
到这里支付流程就完成了,但是你可能还需要向服务器发送一些东西,让服务器验证本次订单有效性
//回调的 PayPalPayment 的 confirmation 属性包含此次订单的状态信息包括校验码,服务器可已通过该校验码验证交易真实性。
//返回数据 - id所对应的就是校验码。
{
    client =     {
        environment = sandbox;
        "paypal_sdk_version" = "2.14.2";
        platform = iOS;
        "product_name" = "PayPal iOS SDK";
    };
    response =     {
        "create_time" = "2016-05-12T03:25:49Z";
        id = "PAY-6BG56850AF923584SK4Z7PNQ";
        intent = sale;
        state = approved;
    };
    "response_type" = payment;
}

最后的最后:

有小伙伴在关心之前在阿啪啪中产生的交易怎么知道呢?

来到paypal开发者网站,登陆后向左看。选择Sandbox中的Notification选择。这里就是所有的交易通知,包括商家账户和顾客账户。

以上,就是模拟环境下进行paypal支付的全过程。如果要进行真实交易,就要先注册business账户。总的来说,只要得到真实交易模式下的clientID就能够发起真实交易了。

全文完。

上一篇下一篇

猜你喜欢

热点阅读