Как интегрировать платежный модуль PayPal/Apple Pay в iOS-приложение?

Я занимаюсь исследованиями и разработками о том, как интегрировать платежный модуль PayPal/Apple Pay в приложение iOS.

Например, в моем приложении я хочу интегрировать оплату через PayPal/Apple, что мне делать? Какие процессы.

ЕСЛИ кто-нибудь может направить, как это сделать. Пожалуйста, предложите мне шаги. Любая справочная ссылка тогда также приветствуется.


person Aarti Oza    schedule 08.10.2015    source источник


Ответы (3)


Это зависит от платежного решения, которое вы интегрировали. PayPal будет поддерживать источник финансирования баланса учетной записи или кредитной карты/дебетовой карты/банка, который связан с учетной записью. В отличие от кошелька PayPal, в Apple Pay/Apple Wallet нет «баланса», который работает исключительно с токенизацией карт (карты, которые вы настраиваете в своем приложении Wallet).

В этом случае ваше приложение не обязательно будет проверять, доступны ли 20 долларов в кошельке (либо PayPal, либо Apple Pay), вместо этого оно инициирует запрос платежа и получает ответ от платежного шлюза для обработки ваших заказов.

person pp_pduan    schedule 09.10.2015
comment
@Florence, перейдите по этой ссылке: developer.paypal.com/developer/applications (необходимо сначала войдите в свою РЕАЛЬНУЮ учетную запись PayPal) и создайте там ПРИЛОЖЕНИЕ, получите clientID как для песочницы, так и для РЕАЛЬНОЙ среды на этой странице, а затем - person pp_pduan; 09.10.2015
comment
Я сделал это, но это дает мне ошибку clang: error: команда компоновщика не удалась с кодом выхода 1 (используйте -v, чтобы увидеть вызов) - person Aarti Oza; 09.10.2015
comment
Это не ответ API PayPal, вы можете добавить точный стек исключений в свой вопрос. - person pp_pduan; 10.10.2015

в AppDelegate

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

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

    return YES;
}

с вашим контроллером

в вашем делегате набора файлов .h

@интерфейс MyCart: UITableViewController

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

в вашем .m файле

- (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;


}

Код с событием кнопки покупки

-(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

- (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);
}
person Chirag    schedule 09.10.2015
comment
Привет, @Chirag ... Мне нужна твоя помощь ... столкнулся с некоторыми проблемами при интеграции PayPal в ios ... - person iSwaroop; 26.11.2015
comment
Да, конечно, извините за поздний повтор, можете ли вы описать свою проблему? - person Chirag; 02.12.2015

  1. PayPal — вот полный пример кода PayPal, предложенный https://developer.paypal.com, Руководство разработчика PayPal и пример кода

  2. Apple Pay — вы можете проверить демонстрационный код Apple

Я надеюсь, что вы ищете его. :)

person Ashvin A    schedule 09.10.2015