我只能通过get customer API获得前10个客户来源:
# stripe.customers.retrieve
{
"id": "cus_DE8HSMZ75l2Dgo",
...
"sources": {
"object": "list",
"data": [
],
"has_more": false,
"total_count": 0,
"url": "/v1/customers/cus_DE8HSMZ75l2Dgo/sources"
},
...
}
但是我怎么才能得到更多呢?是通过AJAX调用的唯一方法吗?我在想,SDK中应该有一个函数吧?
发布于 2018-07-14 20:27:47
当您通过API检索Customer对象时,Stripe将返回sources
属性,该属性是一个列表对象。data
属性将是一个最多包含10个源的数组。
如果你想获得比最新的10个更多的源码,你需要使用Pagination。其想法是,您将首先获得N个对象的列表(默认情况下为10个)。然后,您将通过再次请求N个对象,但使用参数starting_after
设置为上一页中最后一个对象的id,来请求来自条纹的下一个“页面”。您将继续执行此操作,直到返回的页面中的has_more
属性为false
,表明您检索了所有对象。
例如,如果您的客户有35个消息源,您将获得第一页( 10 ),然后调用列表再获取10个消息源(20),然后再获取10个消息源(30),然后最后一个呼叫将只返回5个消息源(35),has_more
将为false。
要减少调用次数,还可以将limit
设置为更高的值。在这种情况下,最大值为100。
下面是代码的样子:
// list those cards 3 at a time
var listOptions = {limit: 3};
while(1) {
var sources = await stripe.customers.listSources(
customer.id,
listOptions
);
var nbSourcesRetrieved = sources.data.length;
var lastSourceId = sources.data[nbSourcesRetrieved - 1].id;
console.log("Received " + nbSourcesRetrieved + " - last source: " + lastSourceId + " - has_more: " + sources.has_more);
// Leave if we are done with pagination
if(sources.has_more == false) {
break;
}
// Store the last source id in the options for the next page
listOptions['starting_after'] = lastSourceId;
}
您可以在Runkit上查看完整的运行示例:https://runkit.com/5a6b26c0e3908200129fbb5d/5b49eabda462940012c33880
发布于 2018-07-14 14:23:10
快速查看条带节点包的sources,似乎有一个stripe.customers.listSources
方法,它接受一个customerId
作为参数并请求正确的url。我想它的工作原理类似于listCards
method。但我在文档中找不到它,所以你必须将其视为未记录的功能...但也许这只是文档中的一个错误。你可以联系技术支持部门。我们在一个老项目中使用了stripe,他们很欣赏他们在文档上的任何意见。
https://stackoverflow.com/questions/51335562
复制相似问题