gpt4 book ai didi

java - 如何在 Spring JPA 应用程序中集成 paypal Rest api。错误代码 400

转载 作者:太空宇宙 更新时间:2023-11-04 12:31:35 27 4
gpt4 key购买 nike

根据提供的java SDK here ,我创建了一个新项目并尝试集成代码以进行 paypal api 调用。但是当我运行该应用程序时,它给我错误:-

Error code : 401 with response : Server returned HTTP response code: 401 for URL: https://api.sandbox.paypal.com/v1/payments/payment

这是我的 Controller 类

package com.main.controller;

public class PaymentController{

@RequestMapping(method = RequestMethod.POST, produces = "application/JSON")

public Payment getString(){

InputStream is = PaymentController.class
.getResourceAsStream("/sdk_config.properties");
try {
PayPalResource.initConfig(is);
System.out.println("initiialization done");
} catch (PayPalRESTException e) {
System.out.println("Paypal Rest Exception : " + e.getMessage());
}

Map<String, String > map = new HashMap<String, String>();
map.put("mode", "sandbox");
String clientID = "AYDNebhrsuqiUKPU_ab-tCvGGVkzaxw2y4bIJFIl4rMuCW..........................";
String clientSecret="ENgjkFRgy1yGhal0aobwdF8kLNglkDaDeDItLN-lgQJZV4W1FpNQ27g3FC...............";

try {
accessToken = new OAuthTokenCredential(clientID, clientSecret,map).getAccessToken();
} catch (PayPalRESTException e) {
// TODO Auto-generated catch block
System.out.println("Cannot make the OAuthentication :" + e.getMessage());
}

Payment payment = createPayment();

return payment;
}

public Payment createPayment(){

Address billingAddress = new Address();
billingAddress.setCity("Johnstown");
billingAddress.setCountryCode("US");
billingAddress.setLine1("52 N Main ST");
billingAddress.setPostalCode("43210");
billingAddress.setState("OH");

CreditCard creditCard = new CreditCard();
creditCard.setBillingAddress(billingAddress);
creditCard.setCvv2(111);
creditCard.setExpireMonth(11);
creditCard.setExpireYear(2018);
creditCard.setFirstName("Joe");
creditCard.setLastName("Shopper");
creditCard.setNumber("5500005555555559");
creditCard.setType("mastercard");

Details details = new Details();
details.setShipping("1");
details.setSubtotal("5");
details.setTax("1");

Amount amount = new Amount();
amount.setCurrency("USD");
amount.setTotal("7");
amount.setDetails(details);

Transaction transaction = new Transaction();
transaction.setAmount(amount);
transaction
.setDescription("This is the payment transaction description.");


List<Transaction> transactions = new ArrayList<Transaction>();
transactions.add(transaction);

FundingInstrument fundingInstrument = new FundingInstrument();
fundingInstrument.setCreditCard(creditCard);


List<FundingInstrument> fundingInstrumentList = new ArrayList<FundingInstrument>();
fundingInstrumentList.add(fundingInstrument);

Payer payer = new Payer();
payer.setFundingInstruments(fundingInstrumentList);
payer.setPaymentMethod("credit_card");

Payment payment = new Payment();
payment.setIntent("sale");
payment.setPayer(payer);
payment.setTransactions(transactions);
Payment createdPayment = null;
try {
String accessToken = GenerateAccessToken.getAccessToken();

String realAccessToken = "A101.kPIsO7eGXhg420XIjnZmPboCS27CeDF6TZjVfGR31f6ja1IotK3e6U-E_k9MwOO5.....";


/*
* String requestId = Long.toString(System.nanoTime(); APIContext
* apiContext = new APIContext(accessToken, requestId ));
*/

createdPayment = payment.create(apiContext);

System.out.println("Created payment with id = " + createdPayment.getId()
+ " and status = " + createdPayment.getState());
} catch (PayPalRESTException e) {
System.out.println("Cannot make the payment from here: " + e.getMessage());
}
return createdPayment;
}

}

更新:-我已经添加了client_idsecret身份验证凭据,现在我得到的是400错误,即验证错误

最佳答案

401 未经授权。因此,首先您必须授权并创建授权 token 。 Here是如何创建第一个调用的示例。

Make a /token call using your application's OAuth keys for the basic authentication values (the keys are the values of your client_id and secret). In the request body, set grant_type to client_credentials. When you run the command, PayPal generates and returns a new access token.

将您的 token 添加到您要创建的付款中。

查看此示例中的这一行:https://github.com/paypal/PayPal-Java-SDK/blob/master/rest-api-sample/src/main/java/com/paypal/api/sample/FuturePaymentSample.java#L62

所以使用沙箱和类似的东西:

Map<String, String> configurationMap = new HashMap<String, String>();
configurationMap.put("mode", "sandbox");
APIContext apiContext = new APIContext();
apiContext.setConfigurationMap(configurationMap);
tokeninfo = Tokeninfo.createFromAuthorizationCodeForFpp(apiContext, params);
tokeninfo.setAccessToken(tokeninfo.getTokenType() + " " + tokeninfo.getAccessToken());

之后您应该能够调用 tokeninfo.getAccessToken() 来创建付款。

关于java - 如何在 Spring JPA 应用程序中集成 paypal Rest api。错误代码 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37809722/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com