简体   繁体   English

Paypal在iOS应用中的集成

[英]Paypal integration in an iOS app

As per the apple guidelines ( https://developer.apple.com/appstore/resources/approval/guidelines.html ) I found that we are not supposed to use In App purchase to buy/sell physical goods, I am building an iOS app to buy/sell some physical goods, 根据苹果指南( https://developer.apple.com/appstore/resources/approval/guidelines.html ),我发现我们不应该使用In App Purchase来购买/出售实物商品,我正在构建一个iOS用于购买/出售一些实物商品的应用程序,

Does apple approve my the app if I use Paypal and authorize.net payment gateways in my app to buy/sell physical goods? 如果我在我的应用程序中使用Paypal并授权了.net支付网关购买/出售实物商品,苹果会批准我的应用程序吗?

If apple allow us to use these third party payment gateway, whats the apple share? 如果苹果允许我们使用这些第三方支付网关,那么苹果份额是多少? what % does apple takes for each paypal/credit card transaction? 苹果每笔Paypal /信用卡交易需要多少钱? ( I know Apple takes 30% for In APP purchases(IAP) does this applicable to paypal/authorize.net ?) (我知道Apple接受30%的应用内购买(IAP),这是否适用于paypal / authorize.net?)

Nothing can be said with 100 % certainty But yes Apple allows you to sell physical goods using your own payment methods. 没有什么可以说是100%肯定的,但是可以,Apple允许您使用自己的付款方式出售实物商品。

So you can include paypal or any other you want for this . 因此,您可以为此添加paypal或任何其他想要的东西。

As for as apple share is concerned no they won't take any star in this case but service provider (like paypal) will charge their transaction fee as per their fee structure. 至于苹果股份,在这种情况下他们不会拿任何星星,但是服务提供商(如贝宝)将根据其费用结构收取交易费用。

hear is the link that you can download demo :-https://github.com/kristianmandrup/paypal-billing-demo

and I was implement in my app 

#in AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    [PayPalMobile initializeWithClientIdsForEnvironments:@{PayPalEnvironmentProduction : @"YOUR_CLIENT_ID_FOR_PRODUCTION",
                                                           PayPalEnvironmentSandbox : @"AeB0tbkw-z4Ys3NvxekUZxnVNk26WXRodQBETFG4x-HtQAuqBf5k4edWOn2zia_l8RWBFJGEUNSVWJWg"}];

    return YES;
}
#with your Controller

#in your .h File set delegate

@interface MyCart : UITableViewController

@property(nonatomic, strong, readwrite) PayPalConfiguration *payPalConfig;

#in your .m File

- (void)viewDidLoad {
 NSString *environment=@"sandbox";
    self.environment = environment;
    [PayPalMobile preconnectWithEnvironment:environment];


 _payPalConfig = [[PayPalConfiguration alloc] init];
    _payPalConfig.acceptCreditCards = YES;
    _payPalConfig.merchantName = @"ScanPay";
    _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"];

    _payPalConfig.languageOrLocale = [NSLocale preferredLanguages][0];

    _payPalConfig.payPalShippingAddressOption = PayPalShippingAddressOptionPayPal;


}
#Code with purchase button event

-(IBAction)btnCheckoutTapped
{
//    UIAlertView *alt=[[UIAlertView alloc]initWithTitle:@"ScanPay" message:@"Under Development" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
//    [alt show];

    NSDecimalNumber *subtotal = [[NSDecimalNumber alloc]initWithDouble:Price];

    // Optional: include payment details
    NSDecimalNumber *shipping = [[NSDecimalNumber alloc] initWithString:@"0.00"];
    NSDecimalNumber *tax = [[NSDecimalNumber alloc] initWithString:@"0.00"];
    PayPalPaymentDetails *paymentDetails = [PayPalPaymentDetails paymentDetailsWithSubtotal:subtotal
                                                                               withShipping:shipping
                                                                                    withTax:tax];
    NSDecimalNumber *total = [[subtotal decimalNumberByAdding:shipping] decimalNumberByAdding:tax];

    PayPalPayment *payment = [[PayPalPayment alloc] init];
    payment.amount = total;
    payment.currencyCode = @"USD";
    payment.shortDescription = @"You Pay";
    payment.paymentDetails = paymentDetails; // if not including payment details, then leave payment.paymentDetails as nil
    if (!payment.processable) {
        // This particular payment will always be processable. If, for
        // example, the amount was negative or the shortDescription was
        // empty, this payment wouldn't be processable, and you'd want
        // to handle that here.
    }
    // Update payPalConfig re accepting credit cards.
    self.payPalConfig.acceptCreditCards = YES;

    PayPalPaymentViewController *paymentViewController = [[PayPalPaymentViewController alloc] initWithPayment:payment
                                                                                                configuration:self.payPalConfig
                                                                                                     delegate:self];
    [self presentViewController:paymentViewController animated:YES completion:nil];


}
#PayPalPaymentDelegate methods

- (void)payPalPaymentViewController:(PayPalPaymentViewController *)paymentViewController didCompletePayment:(PayPalPayment *)completedPayment {
    NSLog(@"PayPal Payment Success!");
    [self ErrorWithString:@"PayPal Payment Success!"];



    self.resultText = [completedPayment description];
    //[self showSuccess];

    [self sendCompletedPaymentToServer:completedPayment]; // Payment was processed successfully; send to server for verification and fulfillment
    [self dismissViewControllerAnimated:YES completion:nil];

    ReceiptScreen *obj=[self.storyboard instantiateViewControllerWithIdentifier:@"ReceiptScreen"];
    [self.navigationController pushViewController:obj animated:YES];

}

- (void)payPalPaymentDidCancel:(PayPalPaymentViewController *)paymentViewController {
    NSLog(@"PayPal Payment Canceled");
    self.resultText = nil;
  //  self.successView.hidden = YES;
    [self dismissViewControllerAnimated:YES completion:nil];
}

#pragma mark Proof of payment validation

- (void)sendCompletedPaymentToServer:(PayPalPayment *)completedPayment {
    // TODO: Send completedPayment.confirmation to server
    NSLog(@"Here is your proof of payment:\n\n%@\n\nSend this to your server for confirmation and fulfillment.", completedPayment.confirmation);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM