Monetizing with PayPal on Mobile

3,745 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,745
On SlideShare
0
From Embeds
0
Number of Embeds
115
Actions
Shares
0
Downloads
81
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Monetizing with PayPal on Mobile

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

×