【发布时间】:2013-11-17 09:59:53
【问题描述】:
在 iPhone 模拟器中,我已经注册并使用 authorize.net 成功登录。但我无法执行交易。 MobileDeviceLoginRequest 和 createTransaction 的代码如下。
-(void)loginToGateway {
MobileDeviceLoginRequest *mobileDeviceLoginRequest = [MobileDeviceLoginRequest mobileDeviceLoginRequest];
mobileDeviceLoginRequest.anetApiRequest.merchantAuthentication.name = @"***";
mobileDeviceLoginRequest.anetApiRequest.merchantAuthentication.password = @"*****";
mobileDeviceLoginRequest.anetApiRequest.merchantAuthentication.mobileDeviceId = [OpenUDID 值];
[AuthNet authNetWithEnvironment:ENV_TEST];
AuthNet *an = [AuthNet getInstance];
[一个 setDelegate:self]; [一个 mobileDeviceLoginRequest:mobileDeviceLoginRequest];
}
-(void)mobileDeviceLoginSucceeded:(MobileDeviceLoginResponse *)response {
sessionToken = [response.sessionToken retain];
[self createTransaction];
} -(void)createTransaction {
AuthNet *an = [AuthNet getInstance];
[an setDelegate:self];
CreditCardType *creditCardType = [CreditCardType creditCardType];
creditCardType.cardNumber = @"4111111111111111";
creditCardType.cardCode = @"100";
creditCardType.expirationDate = @"1212";
PaymentType *paymentType = [PaymentType paymentType];
paymentType.creditCard = creditCardType;
ExtendedAmountType *extendedAmountTypeTax = [ExtendedAmountType extendedAmountType];
extendedAmountTypeTax.amount = @"0";
extendedAmountTypeTax.name = @"Tax";
ExtendedAmountType *extendedAmountTypeShipping = [ExtendedAmountType extendedAmountType];
extendedAmountTypeShipping.amount = @"0";
extendedAmountTypeShipping.name = @"Shipping";
LineItemType *lineItem = [LineItemType lineItem];
lineItem.itemName = @"Soda";
lineItem.itemDescription = @"Soda";
lineItem.itemQuantity = @"1";
lineItem.itemPrice = @"1.00";
lineItem.itemID = @"1";
TransactionRequestType *requestType = [TransactionRequestType transactionRequest];
requestType.lineItems = [NSArray arrayWithObject:lineItem];
requestType.amount = @"1.00";
requestType.payment = paymentType;
requestType.tax = extendedAmountTypeTax;
requestType.shipping = extendedAmountTypeShipping;
CreateTransactionRequest *request = [CreateTransactionRequest createTransactionRequest];
request.transactionRequest = requestType;
request.transactionType = AUTH_ONLY;
request.anetApiRequest.merchantAuthentication.mobileDeviceId = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
request.anetApiRequest.merchantAuthentication.sessionToken = sessionToken;
[an purchaseWithRequest:request];}
mobileDeviceLoginResponse 如下: // 我也在获取会话
<resultCode>Ok</resultCode>
<message>
<code>I00001</code>
<text>Successful.</text>
createTransactionResponse 如下:
<code>E00054</code>
<text>The mobile device is not registered with this merchant account.</text>
【问题讨论】:
-
如果你必须贴一堵代码,那么你没有做足够的调试
-
@Dsk:我对上面的代码有疑问。我们是否需要在方法 -(void)loginToGateway 中输入准确的用户名和密码。直接在代码中使用密码安全吗?
-
@ ArunMak ,我也有同样的疑问。但是,我只从他们的 Authorize.net 网站上获取了代码。请参阅以下链接developer.authorize.net/integration/fifteenminutes/ios
-
@Dsk Ya 我也拿了同样的代码。它要求在代码中输入密码。有没有其他方法可以在没有密码的情况下进行交易或者您有什么解决方案?
-
@ArunMak :我只使用 authorize.net sdk ,但到目前为止我没有收到任何登录 ID 和密码的提示。我只是硬编码了上面代码的所有内容。你能解释一下你是如何得到提示的吗?
标签: ios payment-gateway authorize.net