Monetizing with PayPal on Mobile
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Monetizing with PayPal on Mobile

on

  • 4,577 views

 

Statistics

Views

Total Views
4,577
Views on SlideShare
4,461
Embed Views
116

Actions

Likes
1
Downloads
75
Comments
0

4 Embeds 116

https://www.x.com 80
http://www.slideshare.net 30
http://sidneyallen.github.com 5
https://developer.paypal-portal.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Monetizing with PayPal on Mobile Presentation Transcript

  • 1. Monetizing with PayPal on Mobile
    Praveen Alavilli, Developer Evangelist
    Anshu Gupta, Mobile Product Development
    Fabio Sisinni, Director, Mobile Product Management
    Kent Griffin, Mobile Product Manager
  • 2. Agenda
    • What is PayPal ?
    • 3. PayPal on Mobile
    • 4. For Consumers
    • 5. For Merchants/Sellers (Mobile Checkout)
    • 6. For Developers (Mobile Payments Library)
    • 7. Q & A
    • 8. Demo
    WWW.X.COM
    4/28/10
    2
  • 9. PayPal
    Open Global Payments Platform for
    • Consumers
    • 10. Merchants/Sellers
    • 11. Developers
    “Pay Anyone and Receive from Anyone!”
    (email/phone)
    WWW.X.COM
    4/28/10
    3
  • 12. For Consumers
    • Mobile Web
    • 13. SMS
    • 14. Applications:
    • 15. iPhone
    • 16. BlackBerry
    • 17. Andriod
    WWW.X.COM
    4/28/10
    4
  • 18. Mobile Web
    WWW.X.COM
    4/28/10
    5
    Available on any mobile device at
    http://m.paypal.com
    • View Balance
    • 19. Send & Claim money
    • 20. Activate Phone
    • 21. Profile related functionality
  • SMS
    Send money, check balance, request money using SMS
    • BAL
    • 22. SEND
    • 23. REQUEST
    • 24. VOID
    • 25. Example: Send 10 to 4089675648
    WWW.X.COM
    4/28/10
    6
  • 26. Applications
    Native apps on Apple, Blackberry & Android
    New iPhone App features
    • Bump
    • 27. SplitCheck
    • 28. Request Money
    WWW.X.COM
    4/28/10
    7
  • 29. For Merchants / Sellers
    • Mobile Checkout
    WWW.X.COM
    4/28/10
    8
    Similar to Express Checkout but with Mobile UI
    Supports Phone/Pin login
    (User sets phone/pin with PayPal)
    Two API calls:
    • SetMobileCheckout
    • 30. DoMobileCheckout
  • For Developers
    • Online Billing Agreement
    • 31. App Store Integration
    • 32. Mobile Payment Library
    WWW.X.COM
    4/28/10
    9
  • 33. MCOMMERCE SET TO EXPLODE
    • Ecommerce migrating to mcommerce: brands moving from product brochure to storefronts
    • 34. New Mobile Use cases:
    • 35. LBS
    • 36. Comparison shopping
    • 37. Private and time sensitive sales
    • 38. Mobile Coupons
    • 39. Personalized services
    • 40. Ticketing
    • 41. eBay app shows the potential: $600m in 09 and $1.5B in 2010
  • Appstore integration - ONLINE BILLING AGREEMENTS
    • Billing agreements can be set up online or on the phone.
    • 42. Agreements can then be used on the phone.
  • ApP Store integration
    RIM App World
    • When a RIM User purchases App through AppWorld
    • 43. RIM launches PayPal flow to accept payment
    • 44. RIM pays its developers using MassPay
    WWW.X.COM
    4/28/10
    12
  • 45. MOBILE PAYMENTS LIBRARY
    Solving the pain points:
    • Credit card entry
    • 46. Browser redirects
    • 47. out of application context
    Features:
    • Checkout, Donations, P2P transactions
    • 48. Support iPad only, iPhone only and Universal apps
    • 49. Consumer stays in the app
    • 50. Payment settled immediately to your PP account
    • 51. Quick integration into your app with no need to code payment UI
  • USER experience
    WWW.X.COM
    4/28/10
    14
  • 52. Mobile Payments Library
    Four simple steps:
    Initialize with AppID
    Generate & Insert the “Pay with PayPal” button
    Set Payment details and start Checkout process
    Handle success/failure/cancellation callbacks
    WWW.X.COM
    4/28/10
    15
  • 53. Initializing the Library
    +(PayPal*)initializeWithAppID:(NSString const *)inAppID;
    +(PayPal*)initializeWithAppID:(NSString const *)inAppIDforEnvironment:(PAYPAL_ENVIRONMENT)env;
    typedefenumPayPalEnvironment {
    ENV_LIVE,
    ENV_SANDBOX,
    ENV_NONE,} PAYPAL_ENVIRONMENT;
    Sample:
    PayPal *ppMEP = [PayPal initializeWithAppID:@"APP-80W284485P519543T" forEnvironment:ENV_SANDBOX];
    WWW.X.COM
    4/28/10
    16
  • 54. Pay with PayPal button
    -(UIButton *)getPayButton:(UIViewController const *)target buttonType:(PayPalButtonType)buttonType
    startCheckOut:(SEL)payWithPayPal
    PaymentType:(PayPalPaymentType)inPaymentType
    withLeft:(int)left
    withTop:(int)top;
    typedefenumPayPalPaymentType {
    HARD_GOODS,
    SERVICE,
    PERSONAL,
    DONATION,}PayPalPaymentType;
    Sample:
    UIButton *button = [[PayPal getInstance] getPayButton:self buttonType:BUTTON_278x43 startCheckOut:@selector(payWithPayPal) PaymentType:HARD_GOODS withLeft:10 withTop:352];
    [self.view addSubview:button];
    WWW.X.COM
    4/28/10
    17
  • 55. Payment Details and Checkout
    -(void)EnableShipping;
    -(void)DisableShipping;
    -(void)SetSenderEmailorPhone:(NSString const *)sender;
    -(void)feePaidByReceiver;-(void)enableDynamicAmountUpdate;
    -(void)Checkout:(PayPalMEPPayment *)currentPayment;
    @interface PayPalMEPPayment : NSObject {
    NSString *paymentCurrency;
    NSString *paymentAmount;
    NSString *itemDesc;
    NSString *recipient;
    NSString *taxAmount;
    NSString *shippingAmount;
    NSString *merchantName;}
    WWW.X.COM
    4/28/10
    18
  • 56. Payment Details and Checkout
    Sample:
    [ppMEPEnableShipping];
    [ppMEPfeePaidByReceiver];
    [ppMEP SetSenderEmailorPhone:@"ppalav_1260941775_per@yahoo.com"];
    PayPalMEPPayment *payment = [[PayPalMEPPaymentalloc] init];
    payment.paymentCurrency=@"USD";
    payment.paymentAmount=[NSString stringWithString:@"5.0"];
    payment.itemDesc = [NSStringstringWithFormat:@"Photo Print (%@)", photoId];
    payment.recipient = @"pd_1265515509_biz@yahoo.com";
    payment.taxAmount = [NSString stringWithString:@"0.0"];
    payment.shippingAmount = [NSString stringWithString:@"0.41"] ;
    payment.merchantName = @"PicMart";
    [ppMEPCheckout:payment];[payment release];
    WWW.X.COM
    4/28/10
    19
  • 57. Handle Callbacks
    -(void)paymentSuccess:(NSString const *)transactionID;
    -(void)paymentCanceled;
    -(void)paymentFailed:(PAYPAL_FAILURE)errorType;
    (Optional)-(MEPAmounts*)AdjustAmounts:
    (MEPAddress const *)defaultAddress
    Currency:(NSString const *)inCurrency
    Amount:(NSString const *)inAmount
    Tax:(NSString const *)inTax
    Shipping:(NSString const *)inShipping;
    typedefenumPayPalFailureType {
    SYSTEM_ERROR,
    RECIPIENT_ERROR,
    APPLICATION_ERROR,
    CONSUMER_ERROR,}PAYPAL_FAILURE;
    WWW.X.COM
    4/28/10
    20
  • 58. Handle Callbacks
    Sample:
    @interface OrderPage : UIViewController<PayPalMEPDelegate> { …. }
    -(void)paymentSuccess:(NSString*)transactionID{
    UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"Order successful" message:@"Your picture is on it's way!" delegate:nilcancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];[alert release];
    }
    -(void)paymentCanceled{
    UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"Order canceled" message:@"You canceled your order. Touch "Pay with PayPal" to try again." delegate:nilcancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];[alert release];
    }
    -(void)paymentFailed:(PAYPAL_FAILURE)errorType{
    UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:@"Order failed" message:@"Your order failed. Touch "Pay with PayPal" to try again." delegate:nilcancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];[alert release];}
    WWW.X.COM
    4/28/10
    21
  • 59. Dynamic Amount Calculation
    Allows for recalculating the payment amount, tax, currency and shipping values when the user changes shipping address.
    Sample:
    -(MEPAmounts *)AdjustAmounts:(MEPAddress const *)defaultAddressCurrency:(NSString const *)inCurrencyAmount:(NSString const *)inAmountTax:(NSString const *)inTaxShipping:(NSString const *)inShipping {
    //do any logic here that would adjust the amount based on the shipping addressMEPAmounts *newAmounts = [[[MEPAmountsalloc] init] autorelease];
    newAmounts.currency = @"USD";
    newAmounts.payment_amount = (NSString *)inAmount;
    //change tax based on the address
    if ([defaultAddress.stateisEqualToString:@"CA"]) {
    newAmounts.tax = [NSString stringWithFormat:@"%.2f",[inAmount floatValue] * .1];
    }else {
    newAmounts.tax = [NSString stringWithFormat:@"%.2f",[inAmount floatValue] * .08];
    }
    newAmounts.shipping = (NSString *)inShipping;returnnewAmounts;
    }
    WWW.X.COM
    4/28/10
    22
  • 60. PayPal Context
    Useful for restoring a payment transaction when the application is closed and restarted.
    In AppDelegate Class:
    • (void)applicationWillTerminate:(UIApplication *)application{
    PayPalContext *context = [[PayPal getInstance] payPalContext];
    NSDictionary *contextDict = [context serialize];[[NSUserDefaultsstandardUserDefaults] setObject:contextDictforKey:@"ResumePaymentContext"];
    }
    In View Controller:
    NSDictionary *contextDict = nil;
    • (void)viewDidLoad {
    self.title = @"Home";
    [super viewDidLoad];
    contextDict = (NSDictionary*)[[NSUserDefaultsstandardUserDefaults] objectForKey:@"ResumePaymentContext"];
    if (contextDict){
    resumeButton.hidden = FALSE;
    }
    }
    WWW.X.COM
    4/28/10
    23
  • 61. PayPal Context
    • (IBAction) resumePayment:(id)sender{
    if (contextDict){
    PayPalContext *context = [PayPalContextalloc];
    [context deserialize:contextDict];
    PayPal *ppmep = [PayPal initializeWithAppID:@"APP-80W284485P519543T" forEnvironment:ENV_SANDBOX];
    [ppmepsetPayPalContext:context];
    [context release];
    }
    }
    WWW.X.COM
    4/28/10
    24
  • 62. Buttons
    WWW.X.COM
    4/28/10
    25
    NOTE: If PayPalPaymentType is DONATE in “getPayButton”, all buttons will say “Donate”.
  • 63. Supported Lang/Locales
    Argentina: es_AR
    Brazil: pt_BR
    Australia: en_AU
    Belgium: en_BE, nl_BE, fr_BE
    Canada: en_CA, fr_CA
    France: fr_FR, en_FR
    Germany: de_DE, en_DE
    Hong Kong: zh_HK, en_HK
    India: en_IN
    Italy: it_IT
    Japan: ja_JP, en_JP
    Mexico: es_MX, en_MX
    Netherlands: nl_NL, en_NL
    Poland: pl_PL, en_PL
    Singapore: en_SG
    Spain: es_ES, en_ES
    Switzerland: de_CH, en_CH, fr_CH
    Taiwan: zh_TW, en_TW
    United States: en_US (default)
    -(void)setLang:(NSString *)language;
    Sample:
    PayPal *ppMEP = [PayPal initializeWithAppID:@"APP-80W284485P519543T" forEnvironment:ENV_SANDBOX];
    [ppMEPsetLang:@"en_US"];
    WWW.X.COM
    4/28/10
    26
  • 64. Device Support
    • iPhone Only (3.0, 3.1.x)
    • 65. iPad Only (3.2)
    • 66. Universal (3.x)
    GO TO HEADER/ FOOTER MENU TO SET TITLE
    4/28/10
    27
  • 67. Q & A
    Let us know what you need!
    (30% of our roadmap is based on your feedback)
    www.x.com
    Twitter: @paypalx, @ppalavilli
    www.facebook.com/paypalx
  • 68. Demo
    • iConcessionStand - Kenji Kato
    • 69. Baublet – Michael Robinson
    WWW.X.COM
    4/28/10
    29