我在iOS上使用PayPal sdk时遇到了一些问题。我在https://developer.paypal.com/webapps/developer/applications/myapps创建了我的应用并获得了客户端ID。我使用我的ID的paypal示例应用程序,它在模拟和沙盒模式下工作正常。每当我的应用程序在模拟数据模式下移动时,我在我的应用程序中使用此功能时,我会收到来自paypal服务器的响应。
{
client = {
environment = mock;
"paypal_sdk_version" = "2.2.1";
platform = iOS;
"product_name" = "PayPal iOS SDK";
};
response = {
"create_time" = "2014-08-27T10:18:57Z";
id = "PAY-8UD377151U972354RKOQ3DTQ";
intent = sale;
state = approved;
};
"response_type" = payment;
}
。我不能设置沙盒模式我需要使用哪个变量。
- (void)viewDidLoad
{
// Set up payPalConfig
_payPalConfig = [[PayPalConfiguration alloc] init];
_payPalConfig.acceptCreditCards = YES;
_payPalConfig.languageOrLocale = @"en";
_payPalConfig.merchantName = @"KicksCloset Shoes, Inc.";
_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];
// use default environment, should be Production in real life
self.environment = @"sandbox";
NSLog(@"PayPal iOS SDK version: %@", [PayPalMobile libraryVersion]);
}
这是我的付费行为
{
PayPalPayment *payment = [[PayPalPayment alloc] init];
payment.amount = [[NSDecimalNumber alloc] initWithString:amountforserver];
payment.currencyCode = @"USD";
payment.shortDescription = creditsforserver;
// payment.items = items; // if not including multiple items, then leave payment.items as nil
// 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 = self.acceptCreditCards;
PayPalPaymentViewController *paymentViewController = [[PayPalPaymentViewController alloc] initWithPayment:payment
configuration:self.payPalConfig
delegate:self];
[self presentViewController:paymentViewController animated:YES completion:nil];
}
答案 0 :(得分:2)
将您的PayPal环境更改为PayPalEnvironmentSandbox
这适用于沙盒模式
self.environment = PayPalEnvironmentSandbox;
如果您想使用实时模式..
self.environment = PayPalEnvironmentProduction;
检查您的PayPalMobile.h文件
///此环境必须用于App Store提交。
extern NSString *const PayPalEnvironmentProduction;
/// Sandbox:使用PayPal沙箱进行交易。对开发很有用。
extern NSString *const PayPalEnvironmentSandbox;
/// NoNetwork:模拟模式。不向PayPal提交交易。假装成功回应。适用于单元测试。
extern NSString *const PayPalEnvironmentNoNetwork;
答案 1 :(得分:2)
你的行动方法有问题。
只是通过环境 {
PayPalPayment *payment = [[PayPalPayment alloc] init];
payment.amount = [[NSDecimalNumber alloc] initWithString:amountforserver];
payment.currencyCode = @"USD";
payment.shortDescription = creditsforserver;
// payment.items = items; // if not including multiple items, then leave payment.items as nil
// 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.
}
self.environment = kPayPalEnvironment;
PayPalPaymentViewController *paymentViewController = [[PayPalPaymentViewController alloc] initWithPayment:payment
configuration:self.payPalConfig
delegate:self];
[self presentViewController:paymentViewController animated:YES completion:nil];
} 并且只是使用这个 代码
-(void)viewWillAppear:(BOOL)animated{
[PayPalMobile preconnectWithEnvironment:self.environment];
}