Upload
paypalx-developer-network
View
3.417
Download
1
Embed Size (px)
Citation preview
Monetizing with PayPal on Mobile
Fabio Sisinni, Director, Mobile Product Management Kent Griffin, Mobile Product Manager
Praveen Alavilli, Developer EvangelistAnshu Gupta, Mobile Product Development
WWW.X.COM
AGENDA
• What is PayPal ?• PayPal on Mobile
• For Consumers • For Merchants/Sellers (Mobile Checkout)• For Developers (Mobile Payments Library)
• Q & A• Demo
04/11/2023 2
WWW.X.COM
PAYPAL
Open Global Payments Platform for• Consumers• Merchants/Sellers• Developers
“Pay Anyone and Receive from Anyone!”(email/phone)
04/11/2023 3
WWW.X.COM
FOR CONSUMERS
• Mobile Web• SMS• Applications:
• iPhone• BlackBerry• Andriod
04/11/2023 4
WWW.X.COM
MOBILE WEB
04/11/2023 5
Available on any mobile device athttp://m.paypal.com
• View Balance• Send & Claim money• Activate Phone• Profile related functionality
WWW.X.COM
SMS
Send money, check balance, request money using SMS
- BAL- SEND- REQUEST- VOID
- Example: Send 10 to 4089675648
04/11/2023 6
WWW.X.COM
APPLICATIONS
Native apps on Apple, Blackberry & Android
New iPhone App features
• Bump• SplitCheck• Request Money
04/11/2023 7
WWW.X.COM
FOR MERCHANTS / SELLERS
• Mobile Checkout
04/11/2023 8
Similar to Express Checkout but with Mobile UISupports Phone/Pin login(User sets phone/pin with PayPal)
Two API calls:• SetMobileCheckout• DoMobileCheckout
WWW.X.COM
FOR DEVELOPERS
• Online Billing Agreement• App Store Integration• Mobile Payment Library
04/11/2023 9
MCOMMERCE SET TO EXPLODE
•Ecommerce migrating to mcommerce: brands moving from product brochure to storefronts
•New Mobile Use cases:• LBS• Comparison shopping• Private and time sensitive sales• Mobile Coupons• Personalized services• Ticketing
•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.
• Agreements can then be used on the phone.
WWW.X.COM
APP STORE INTEGRATION
RIM App World
- When a RIM User purchases App through AppWorld- RIM launches PayPal flow to accept payment- RIM pays its developers using MassPay
04/11/2023 12
MOBILE PAYMENTS LIBRARY
Solving the pain points:• Credit card entry• Browser redirects• out of application context
Features:• Checkout, Donations, P2P transactions• Support iPad only, iPhone only and
Universal apps• Consumer stays in the app• Payment settled immediately to your PP
account• Quick integration into your app with no
need to code payment UI
WWW.X.COM
USER EXPERIENCE
04/11/2023 14
WWW.X.COM
MOBILE PAYMENTS LIBRARY
Four simple steps:1. Initialize with AppID2. Generate & Insert the “Pay with PayPal” button3. Set Payment details and start Checkout process4. Handle success/failure/cancellation callbacks
04/11/2023 15
WWW.X.COM
INITIALIZING THE LIBRARY
+(PayPal*)initializeWithAppID:(NSString const *)inAppID;
+(PayPal*)initializeWithAppID:(NSString const *)inAppID forEnvironment:(PAYPAL_ENVIRONMENT)env;
typedef enum PayPalEnvironment {ENV_LIVE,ENV_SANDBOX,ENV_NONE,} PAYPAL_ENVIRONMENT;
Sample:PayPal *ppMEP = [PayPal initializeWithAppID:@"APP-
80W284485P519543T" forEnvironment:ENV_SANDBOX];
04/11/2023 16
WWW.X.COM
PAY WITH PAYPAL BUTTON
-(UIButton *)getPayButton:(UIViewController const *)target buttonType:(PayPalButtonType)buttonType startCheckOut:(SEL)payWithPayPal PaymentType:(PayPalPaymentType)inPaymentType withLeft:(int)left withTop:(int)top;
typedef enum PayPalPaymentType {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];
04/11/2023 17
WWW.X.COM
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;}
04/11/2023 18
WWW.X.COM
PAYMENT DETAILS AND CHECKOUT
Sample:[ppMEP EnableShipping];[ppMEP feePaidByReceiver];[ppMEP
SetSenderEmailorPhone:@"[email protected]"];PayPalMEPPayment *payment = [[PayPalMEPPayment alloc] init];payment.paymentCurrency=@"USD";payment.paymentAmount=[NSString stringWithString:@"5.0"];payment.itemDesc = [NSString stringWithFormat:@"Photo Print (%@)",
photoId];payment.recipient = @"[email protected]";payment.taxAmount = [NSString stringWithString:@"0.0"];payment.shippingAmount = [NSString stringWithString:@"0.41"] ;payment.merchantName = @"PicMart";[ppMEP Checkout:payment];[payment release];
04/11/2023 19
WWW.X.COM
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;
typedef enum PayPalFailureType {SYSTEM_ERROR,RECIPIENT_ERROR,APPLICATION_ERROR,CONSUMER_ERROR,}PAYPAL_FAILURE;
04/11/2023 20
WWW.X.COM
HANDLE CALLBACKS
Sample:
@interface OrderPage : UIViewController<PayPalMEPDelegate> { …. }
-(void)paymentSuccess:(NSString*)transactionID{UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Order successful" message:@"Your picture
is on it's way!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];[alert show];[alert release];}-(void)paymentCanceled{UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Order canceled" message:@"You canceled
your order. Touch \"Pay with PayPal\" to try again." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];[alert release];}-(void)paymentFailed:(PAYPAL_FAILURE)errorType{UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Order failed" message:@"Your order failed.
Touch \"Pay with PayPal\" to try again." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];[alert release];}
04/11/2023 21
WWW.X.COM
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 *)defaultAddress Currency:
(NSString const *)inCurrency Amount:(NSString const *)inAmount Tax:(NSString const *)inTax Shipping:(NSString const *)inShipping {//do any logic here that would adjust the amount based on the shipping addressMEPAmounts *newAmounts = [[[MEPAmounts alloc] init] autorelease];newAmounts.currency = @"USD";newAmounts.payment_amount = (NSString *)inAmount;//change tax based on the addressif ([defaultAddress.state isEqualToString:@"CA"]) {
newAmounts.tax = [NSString stringWithFormat:@"%.2f",[inAmount floatValue] * .1];}else {
newAmounts.tax = [NSString stringWithFormat:@"%.2f",[inAmount floatValue] * .08];}newAmounts.shipping = (NSString *)inShipping;return newAmounts;
}
04/11/2023 22
WWW.X.COM
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];[[NSUserDefaults standardUserDefaults] setObject:contextDict forKey:@"ResumePaymentContext"];
}In View Controller:NSDictionary *contextDict = nil;- (void)viewDidLoad {
self.title = @"Home"; [super viewDidLoad];contextDict = (NSDictionary*)[[NSUserDefaults standardUserDefaults] objectForKey:@"ResumePaymentContext"];if (contextDict){
resumeButton.hidden = FALSE;}
}
04/11/2023 23
WWW.X.COM
PAYPAL CONTEXT
- (IBAction) resumePayment:(id)sender{if (contextDict){
PayPalContext *context = [PayPalContext alloc];[context deserialize:contextDict];PayPal *ppmep = [PayPal initializeWithAppID:@"APP-
80W284485P519543T" forEnvironment:ENV_SANDBOX];[ppmep setPayPalContext:context];[context release];
}}
04/11/2023 24
WWW.X.COM
BUTTON_68x24
BUTTON_68x33
BUTTON_118x24
BUTTON_152x33
BUTTON_194x37
BUTTON_278x43
BUTTON_294x43
BUTTONS
04/11/2023 25
NOTE: If PayPalPaymentType is DONATE in “getPayButton”, all buttons will say “Donate”.
WWW.X.COM
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];
[ppMEP setLang:@"en_US"];
04/11/2023 26
DEVICE SUPPORT
• iPhone Only (3.0, 3.1.x)• iPad Only (3.2)• Universal (3.x)
GO TO HEADER/ FOOTER MENU TO SET TITLE 04/11/2023 27
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
Q & A
WWW.X.COM 04/11/2023 29
DEMO
• iConcessionStand - Kenji Kato• Baublet – Michael Robinson