在Java中实现条纹Webhook时,我成功获取了JSON格式的事件对象。问题是我无法获取嵌套JSON中的详细信息,例如数量,subscription_id,属性。从类对象获取这些值也不可用。你能告诉我如何提取这些值吗
public void handle(HttpServletRequest request) {
Stripe.apiKey = sk_test_XXXXXXXXXXXXXXXXXXXX;
String rawJson = "";
try {
rawJson = IOUtils.toString(request.getInputStream());
}
catch (IOException ex) {
System.out.println("Error extracting json value : " + ex.getMessage());
}
Event event = APIResource.GSON.fromJson(rawJson, Event.class);
System.out.println("Webhook event : " + event);
}
我得到以下回应:
Webhook event : <com.stripe.model.Event@1462134034 id=evt_18qdEBElSMaq70BZlEwdDJG3> JSON: {
"id": "evt_18qdEBElSMaq70BZlEwdDJG3",
"api_version": "2016-07-06",
"created": 1473143919,
"data": {
"object": {
"id": "in_18qcFkElSMaq70BZy1US7o3g",
"amount_due": 4100,
"application_fee": null,
"attempt_count": 1,
"attempted": true,
"charge": "ch_18qdEBElSMaq70BZIEQvJTPe",
"closed": true,
"created": null,
"currency": "usd",
"customer": "cus_95uFN7q2HzHN7j",
"date": 1473140172,
"description": null,
"discount": null,
"ending_balance": 0,
"forgiven": false,
"lines": {
"data": [
{
"id": "sub_95uFmJLQM3jFwP",
"amount": 4100,
"currency": "usd",
"description": null,
"discountable": true,
"livemode": false,
"metadata": {},
"period": {
"end": 1473226524,
"start": 1473140124
},
"plan": {
"id": "aug 19 01",
"amount": 4100,
"created": 1472448923,
"currency": "usd",
"interval": "day",
"interval_count": 1,
"livemode": false,
"metadata": {},
"name": "Aug 19 plan. Better than paypal",
"statement_descriptor": null,
"trial_period_days": null,
"statement_description": null
},
"proration": false,
"quantity": 1,
"subscription": null,
"type": "subscription"
}
],
"total_count": 1,
"has_more": false,
"request_options": null,
"request_params": null,
"url": "/v1/invoices/in_18qcFkElSMaq70BZy1US7o3g/lines",
"count": null
},
"livemode": false,
"metadata": {},
"next_payment_attempt": null,
"paid": true,
"period_end": 1473140124,
"period_start": 1473053724,
"receipt_number": null,
"starting_balance": 0,
"statement_descriptor": null,
"subscription": "sub_95uFmJLQM3jFwP",
"subscription_proration_date": null,
"subtotal": 4100,
"tax": null,
"tax_percent": null,
"total": 4100,
"webhooks_delivered_at": 1473140184
},
"previous_attributes": null
},
"livemode": false,
"pending_webhooks": 1,
"request": null,
"type": "invoice.payment_succeeded",
"user_id": null
}
我想要得到的值一样customer_id
,subscription_id
等等。但是,当我试图让使用事件对象中的数据,我不能简单地做的event.get....
。我将如何提取数据。
好吧,我已经解决了这个问题。真正的问题是,我没能以检索的object id
,在我的情况下invoiceid
(in_18qcFkElSMaq70BZy1US7o3g)。此ID是发生事件的ID。表示如果是payment successful
事件,object id
则将为charge id
。我不得不转换event
对象,map
然后获得所需的属性。以下是我为解决该问题所做的完整代码段。
public void handle(HttpServletRequest request) {
Stripe.apiKey = sk_test_XXXXXXXXXXXXXXXXXXXX;
String rawJson = "";
try {
rawJson = IOUtils.toString(request.getInputStream());
}
catch (IOException ex) {
System.out.println("Error extracting json value : " + ex.getMessage());
}
Event event = APIResource.GSON.fromJson(rawJson, Event.class);
System.out.println("Webhook event : " + event);
// Converting event object to map
ObjectMapper m = new ObjectMapper();
@SuppressWarnings("unchecked")
Map<String, Object> props = m.convertValue(event.getData(), Map.class);
// Getting required data
Object dataMap = props.get("object");
@SuppressWarnings("unchecked")
Map<String, String> objectMapper = m.convertValue(dataMap, Map.class);
String invoiceId = objectMapper.get("id");
System.out.println("invoideId : " + invoiceId);
}
我试图实现一对一聊天使用firebase实时数据库,我插入消息与senderid,Recieverid,消息,日期,sendername,Recievername,在我的情况下,不同的用户是不同的聊天室,我需要展示这个聊天室一对一聊天室我如何实现在我的android应用程序 下面是我检索数据的代码 但这段代码从聊天室获取所有数据,但我需要排除发送者名和接收者名相等的消息,sendername是从应
问题内容: 我有几个使用相同参数和参数值的Jenkins参数化作业。当我必须更改这些参数之一的默认值时,我需要遍历所有这些作业并重新配置它们。 解决此问题的一种简单方法是从配置文件中(在master /工作区中)检索所有参数的选项,但是我找不到足够的实现方法。 我希望能够使用标准Java配置文件 (格式为“ key” =“ value”) 来提供构建, 然后在构建期间像其他所有参数一样引用这些参数
我是Google日历API和PHP的新手,我似乎不知道如何实现我想做的事情。基本上,我想从calendarID为的google日历中检索事件webapps098@gmail.com.我当前的代码是这样的 我收到错误: 异常Google_ServiceException消息错误调用GEThttps://www.googleapis.com/calendar/v3/calendars/webapps0
目前,我想我对如何从lambda函数中提取/传递数据有一个基本的误解&我正在寻求澄清 示例:假设我想将一些数据传递给lambda函数,即,并通过在AWS API网关中创建RESTendpoint来将数据传递给该lambda函数 目前我知道有三种方法可以提取数据: 例如,如果我们使用Lambda代理集成将数据附加在post/put/etc请求的正文中(即转发所有数据),我们可以通过&在Lambda函
如何使用Laravel 5.4从stripe获取订阅计划列表? 有没有办法检索订阅计划列表? 以下检查用户是否订阅了计划 但是有没有什么像