in-app-purchase - 如何在 Spring Boot 项目中从 Apple 服务器通知接收数据
问题描述
如何在阅读应用程序文档后在 Spring Boot 服务器上定义端点以接收服务器通知,这就是我现在正在做的事情:
@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);
}
响应体为空!!!
解决方案
像这样定义请求实体:
@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;
}
推荐阅读
- c++ - 虚拟成员函数改变 typeid 的结果 - 为什么?
- vue.js - nuxt-link 在开发和生成/生产模式下创建不同的 url
- python - Tkinter 键绑定在 Python 中不起作用
- android - 如何获得像editText这样的用户输入然后插入数据库sqlite?
- html - SVG下方的神秘小水平线消失并出现
- c++ - 如何打印矢量
> 在 C++ 中? - flutter - 如何在颤动中创建底部栏按钮
- firebase - Firebase admin sdk java 实时数据库监听器
- java - 将文档标记为完全上传的 API 时出现 Clio 错误
- java - Google Fit Api 无 OAuth 结果响应