1.Versión
2.Acerca de este documento
Propósito
En este tutorial, obtendrá una breve introducción al BNPL de DiDi (Comprar ahora, pagar más tarde) backend Java SDK.Durante el proceso de aprendizaje, usted:
-
Maestro cómo instalar el SDK de Java
-
Entender la Autenticación requerida para solicitar el servicio BNPL de DiDi
-
Aprenda a usar el SDK de Java para llamar al servicio BNPL de DiDi
Público
El público objetivo de este documento es el personal de DiDi BNPL y los socios cooperantes de DiDi BNPL (en adelante, «socio»), incluidos los proveedores de servicios de pago (PSP), las plataformas de comercio electrónico, así como el personal de diversos tipos de socios de pagos y de plataformas comerciales.
Ámbito de aplicación
Este documento se aplica a todos los socios cooperantes de DiDi BNPL (en adelante, «socio»), excepto a aquellos que hayan sido integrados mediante métodos de integración personalizados (no estándar).
Soporte
Por favor, dirija sus consultas a su gestor de cuenta de DiDi BNPL, o envíe un correo electrónico a:didipaylaternotice@didiglobal.com
3.Requisitos ambientales
Java 1,8 +
4. necesario secreto y parámetro
La siguiente información es necesaria para ejecutar el SDK para verificar la identidad y el entorno del integrador:
-
ClientId: Identificador único para el cliente. Obténgalo EN LA Parte II de DiDi BNPL Env. Configurar.
-
ClientSecret: clave secreta emparejada utilizada para la autenticación del cliente. Obténgalo EN LA Parte II de DiDi BNPL Env.Configurar. (Mantenga la clave secreta estrictamente confidencial para evitar su divulgación. Si se pierde, solo se puede volver a solicitar y no se puede recuperar.)
-
Env: Entorno objetivo para la invocación, incluyendo Sandbox y producción. (La Clase de enumeración EnvEnum.La clase se proporciona para uso directo.
4.1 SDK Offline Obtener
Obtener el DiDi BNPL Backend SDK
Pls envía el correo electrónico para obtener el paquete SDK.
Para: didipaylaternotice@didiglobal.com
Título: (del socio Nombre)-Solicite el paquete DiDi BNPL Backend SDK
Cuerpo principal:
Estimado equipo de DiDi BNPL,
Esto es XXX (nombre del socio).
Estamos integrando la función de pago a plazos de DiDi. ¿Podría ayudarnos a compartir el paquete DiDi BNPL Backend SDK?
Gracias.
Atentamente.
4.2 Obtener SDK en línea
El paquete SDK se ha cargado en Maven Central.
ID de hecho de artículo: didi-bnpl-servor-sdk
ID de grupo: COM. didifinance. SDK
Versión: 1.0.2
5.Iniciar una solicitud
Tome la cancelación de la Orden como un ejemplo para enviar su primera solicitud a DiDi BNPL:
public class FullExample {
public static void main(String[] args) throws ApiException {
//Obtain the server
ApiClient client = new ApiClient("clientId", "clientSecret", EnvEnum.SANDBOX.getValue());
//Obtain sdk-api
DidiBnplApi didiBnplApi = new DidiBnplApi(client);
CancelOrderRequest cancelRequest = new CancelOrderRequest();
cancelRequest.setPartnerOrderId("mock-" + System.currentTimeMillis());
//Initiate a request
BaseVoidResponse cancel = didiBnplApi.cancelOrder(cancelRequest);
System.out.println("cancel Order Response: " + cancel);
}
}
En la práctica, se recomienda utilizar el cliente como un objeto global Singleton para evitar la creación repetida.A continuación se muestra un ejemplo de uso:
1. Inyectar la configuración
@Configuration
public class SDKConfig {
@Bean
public ApiClient apiClient() {
//Inject the client
//Try to save the key in a secure storage container, such as KMS
return new ApiClient("clientId", "clientSecret", EnvEnum.SANDBOX.getValue());
}
@Bean
public DidiBnplApi didiBnplApi(ApiClient apiClient) {
//Set link timeout (ms)
apiClient.setConnectTimeout(3000);
//Set the read timeout (ms)
apiClient.setReadTimeout(3000);
//Inject api
return new DidiBnplApi(apiClient);
}
}
2. Invocar La API
@Slf4j
@RestController
@RequestMapping("/sdk")
public class SDKController {
@Autowired
private DidiBnplApi didiBnplApi;
@PostMapping("/checkOut")
public BaseOrderResponse checkOut(@RequestBody CheckOutRequest orderRequest) throws ApiException {
log.info("checkOut, request:{}", orderRequest);
BaseOrderResponse baseResponseAbstractOrderVO = didiBnplApi.checkOut(orderRequest);
log.info("checkOut, response:{}", baseResponseAbstractOrderVO);
return baseResponseAbstractOrderVO;
}
@PostMapping("/queryByPartnerOrderId")
public BaseOrderResponse queryByPartnerOrderId(@RequestBody QueryOrderResultRequest orderQueryByPartnerOrderIdRequest) throws ApiException {
log.info("queryByPartnerOrderId, request:{}", orderQueryByPartnerOrderIdRequest);
BaseOrderResponse orderQueryResponse = didiBnplApi.queryOrderResult(orderQueryByPartnerOrderIdRequest);
log.info("queryByPartnerOrderId, response:{}", orderQueryResponse);
return orderQueryResponse;
}
@PostMapping("/refund")
public RefundResponse refund(@RequestBody RefundRequest refundRequest) throws ApiException {
log.info("refund, request:{}", refundRequest);
RefundResponse refundResponse = didiBnplApi.refund(refundRequest);
log.info("refund, response:{}", refundResponse);
return refundResponse;
}
@PostMapping("/refundQuery")
public RefundQueryResponse refundQuery(@RequestBody QueryRefundResultRequest refundQueryRequest) throws ApiException {
log.info("refundQuery, request:{}", refundQueryRequest);
RefundQueryResponse refundQueryResponse = didiBnplApi.queryRefundResult(refundQueryRequest);
log.info("refundQuery, response:{}", refundQueryResponse);
return refundQueryResponse;
}
@PostMapping("/refundTrialPlan")
public TrialPlanRefundResponse trialPlan(@RequestBody TrialPlanRefundRequest refundTrialPlanRequest) throws ApiException {
log.info("refundTrialPlan, request:{}", refundTrialPlanRequest);
TrialPlanRefundResponse baseResponseRefundTrialPlanResponse = didiBnplApi.trialPlanRefund(refundTrialPlanRequest);
log.info("refundTrialPlan, response:{}", baseResponseRefundTrialPlanResponse);
return baseResponseRefundTrialPlanResponse;
}
@PostMapping("/cancel")
public BaseVoidResponse cancel(@RequestBody CancelOrderRequest cancelRequest) throws ApiException {
log.info("cancel, request:{}", cancelRequest);
BaseVoidResponse cancel = didiBnplApi.cancelOrder(cancelRequest);
log.info("cancel, response:{}", cancel);
return cancel;
}
}
6.Métodos de API de SDK actualmente compatibles
-
Crear orden de pago
a. com.didi.bnpl.sdk.client.api.DidiBnplApi#checkOut
b. Parámetro de entrada: CheckOutRequest.class
c. Parámetro de salida: BaseOrderResponse.class
-
Cancelar pedido
a. com.didi.bnpl.sdk.client.api.DidiBnplApi#cancelOrder
b. Parámetro de entrada: CancelOrderRequest.class
c. Parámetro de salida: BaseVoidResponse.class
-
Consulta de Información de Pedido de Pago
a. com.didi.bnpl.sdk.client.api.DidiBnplApi#queryOrderResult
b. Parámetro de entrada: QueryOrderResultRequest.class
c. Parámetro de salida: BaseOrderResponse.class
-
Simulación de reembolso
a. com.didi.bnpl.sdk.client.api.DidiBnplApi#refundTrialPlan
b. Parámetro de entrada: TrialPlanRefundRequest.class
c. Parámetro de salida: TrialPlanRefundResponse.class
-
Reembolso
a. com.didi.bnpl.sdk.client.api.DidiBnplApi#refund
b. Parámetro de entrada: RefundRequest.class
c. Parámetro de salida: RefundResponse.class
-
Consulta de información de reembolso
a. com.didi.bnpl.sdk.client.api.DidiBnplApi#queryRefundResult
b. Parámetro de entrada: QueryRefundResultRequest.class
c. Parámetro de salida: RefundQueryResponse.class
-
Prescreen
a. com.didi.bnpl.sdk.client.api.DidiBnplApi#prescreen
b. Parámetro de entrada: PrescreenRequest.class
c. Parámetro de salida: PrescreenResponse.class
-
Adquisición de información de reembolso
a. com.didi.bnpl.sdk.client.api.DidiBnplApi#repayInfo
b. Parámetro de entrada: RepayInfoRequest.class
c. Parámetro de salida: RepayInfoResponse.class