前言
在现代电子商务应用中,支付服务是一个核心组件。2Checkout是一个流行的在线支付服务提供商,支持全球多种支付方式。本文将指导如何在Spring Boot应用中接入2Checkout支付服务,包括创建支付令牌和处理支付。
1. 添加2Checkout的Maven依赖
在你的pom.xml
文件中添加2Checkout的Java SDK依赖。
xml
<dependency>
<groupId>com.checkout</groupId>
<artifactId>checkout-sdk</artifactId>
<version>5.0.0</version>
</dependency>
2. 配置2Checkout
在application.properties
或application.yml
中配置你的2Checkout API密钥。
yaml
2checkout:
secret-key: "your_2checkout_secret_key"
3. 创建支付服务
创建一个服务类PaymentService
来处理支付逻辑。
java
import com.checkout.CheckoutApi;
import com.checkout.CheckoutConfiguration;
import com.checkout.CheckoutSdk;
import com.checkout.common.Currency;
import com.checkout.payments.Payments;
import com.checkout.payments.RequestPaymentToken;
import com.checkout.payments.RequestSource;
import com.checkout.payments.Tokens;
import org.springframework.stereotype.Service;
@Service
public class PaymentService {
private final String secretKey = "your_2checkout_secret_key";
private Payments payments;
private Tokens tokens;
@PostConstruct
public void init() {
CheckoutConfiguration config = CheckoutConfiguration.builder()
.secretKey(secretKey)
.build();
CheckoutSdk sdk = new CheckoutSdk(config);
this.payments = sdk.payments();
this.tokens = sdk.tokens();
}
public String createToken(double amount) throws Exception {
RequestPaymentToken requestToken = RequestPaymentToken.builder()
.amount(amount)
.currency(Currency.USD)
.build();
return tokens.requestAsync(requestToken).get();
}
public String chargeToken(String token, double amount) throws Exception {
return payments.requestAsync(new RequestSource().source(RequestSource.Source.TOKEN).token(token).amount(amount).currency(Currency.USD)).get().getId();
}
}
4. 创建控制器
创建一个控制器PaymentController
来处理支付请求。
java
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
@RestController
@RequestMapping("/payment")
public class PaymentController {
@Autowired
private PaymentService paymentService;
@PostMapping("/token")
public ResponseEntity<String> createPaymentToken(@RequestParam double amount) {
try {
String token = paymentService.createToken(amount);
return ResponseEntity.ok(token);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error creating payment token");
}
}
@PostMapping("/charge")
public ResponseEntity<String> chargePayment(@RequestParam String token, @RequestParam double amount) {
try {
String chargeId = paymentService.chargeToken(token, amount);
return ResponseEntity.ok(chargeId);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error charging payment");
}
}
}
总结
通过以上步骤,你可以在Spring Boot应用中成功接入2Checkout支付服务。这将使你的应用能够处理在线支付,提升用户体验。记得在实际部署之前进行充分的测试,以确保支付流程的稳定性和安全性。