如何从 spring 引导项目中的苹果服务器通知接收数据
how receive data from apple server notification in spring boot project
如何在 spring 启动服务器上定义端点以在读取应用程序后接收服务器通知 doc,这就是我现在正在做的事情:
@Api
@RequestMapping("/post/notification")
@FeignClient(name = "dolphin-post-service")
@Validated
public interface IAppleServerNotificationController {
/**
* Receive Apple Server Notification
* @param
* @return
*/
@PostMapping("/v1/appleSeverNotification")
Response<Integer> handleNotification(@RequestBody @Valid ServerNotificationRequest request);
}
这是我定义的实体:
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class ServerNotificationRequest implements Serializable {
@ApiModelProperty(value = "responseBody")
@NonNull
private String responseBody;
}
但是好像不行。我哪里错了?有什么建议吗?
@Override
@NoCheck
public Response<Integer> handleNotification(ServerNotificationRequest request) {
JSONObject jsonResult = JSONObject.parseObject(request.getResponseBody());
AppleServerNotificationRecord record = new AppleServerNotificationRecord();
record.setResponseBody(request.getResponseBody());
record.setNotificationType(jsonResult.getString("notification_type"));
int result = notificationRecordService.saveNotificationRecord(record);
return new Response<>(result);
}
responseBody 为空!!!
像这样定义请求实体:
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class ServerNotificationRequest implements Serializable {
@ApiModelProperty(value = "auto_renew_adam_id")
@JsonProperty("auto_renew_adam_id")
private String autoRenewAdamId;
@ApiModelProperty(value = "auto_renew_product_id")
@JsonProperty("auto_renew_product_id")
private String autoRenewProductId;
@ApiModelProperty(value = "auto_renew_status")
@JsonProperty("auto_renew_status")
private String autoRenewStatus;
@ApiModelProperty(value = "auto_renew_status_change_date")
@JsonProperty("auto_renew_status_change_date")
private String autoRenewStatusChangeDate;
@ApiModelProperty(value = "auto_renew_status_change_date_ms")
@JsonProperty("auto_renew_status_change_date_ms")
private String autoRenewStatusChangeDateMs;
@ApiModelProperty(value = "auto_renew_status_change_date_pst")
@JsonProperty("auto_renew_status_change_date_pst")
private String autoRenewStatusChangeDatePst;
@ApiModelProperty(value = "environment")
private String environment;
@ApiModelProperty(value = "expiration_intent")
@JsonProperty("expiration_intent")
private Integer expirationIntent;
@ApiModelProperty(value = "notification_type")
@JsonProperty("notification_type")
private String notificationType;
@ApiModelProperty(value = "password")
@JsonProperty("password")
private String sharedSecret;
//@ApiModelProperty(value = "unified_receipt")
//@JsonProperty("unified_receipt")
//private String unifiedReceipt;
@ApiModelProperty(value = "bid")
private String bid;
@ApiModelProperty(value = "bvrs")
private String bvrs;
}
如何在 spring 启动服务器上定义端点以在读取应用程序后接收服务器通知 doc,这就是我现在正在做的事情:
@Api
@RequestMapping("/post/notification")
@FeignClient(name = "dolphin-post-service")
@Validated
public interface IAppleServerNotificationController {
/**
* Receive Apple Server Notification
* @param
* @return
*/
@PostMapping("/v1/appleSeverNotification")
Response<Integer> handleNotification(@RequestBody @Valid ServerNotificationRequest request);
}
这是我定义的实体:
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class ServerNotificationRequest implements Serializable {
@ApiModelProperty(value = "responseBody")
@NonNull
private String responseBody;
}
但是好像不行。我哪里错了?有什么建议吗?
@Override
@NoCheck
public Response<Integer> handleNotification(ServerNotificationRequest request) {
JSONObject jsonResult = JSONObject.parseObject(request.getResponseBody());
AppleServerNotificationRecord record = new AppleServerNotificationRecord();
record.setResponseBody(request.getResponseBody());
record.setNotificationType(jsonResult.getString("notification_type"));
int result = notificationRecordService.saveNotificationRecord(record);
return new Response<>(result);
}
responseBody 为空!!!
像这样定义请求实体:
@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class ServerNotificationRequest implements Serializable {
@ApiModelProperty(value = "auto_renew_adam_id")
@JsonProperty("auto_renew_adam_id")
private String autoRenewAdamId;
@ApiModelProperty(value = "auto_renew_product_id")
@JsonProperty("auto_renew_product_id")
private String autoRenewProductId;
@ApiModelProperty(value = "auto_renew_status")
@JsonProperty("auto_renew_status")
private String autoRenewStatus;
@ApiModelProperty(value = "auto_renew_status_change_date")
@JsonProperty("auto_renew_status_change_date")
private String autoRenewStatusChangeDate;
@ApiModelProperty(value = "auto_renew_status_change_date_ms")
@JsonProperty("auto_renew_status_change_date_ms")
private String autoRenewStatusChangeDateMs;
@ApiModelProperty(value = "auto_renew_status_change_date_pst")
@JsonProperty("auto_renew_status_change_date_pst")
private String autoRenewStatusChangeDatePst;
@ApiModelProperty(value = "environment")
private String environment;
@ApiModelProperty(value = "expiration_intent")
@JsonProperty("expiration_intent")
private Integer expirationIntent;
@ApiModelProperty(value = "notification_type")
@JsonProperty("notification_type")
private String notificationType;
@ApiModelProperty(value = "password")
@JsonProperty("password")
private String sharedSecret;
//@ApiModelProperty(value = "unified_receipt")
//@JsonProperty("unified_receipt")
//private String unifiedReceipt;
@ApiModelProperty(value = "bid")
private String bid;
@ApiModelProperty(value = "bvrs")
private String bvrs;
}