Postman批量CaptureID全自动查询

Postman批量CaptureID全自动查询配置(2个ID:2M331120UK046314S1PJ581750B801442J彻底修复循环重复取同IDBUG

核心优化:循环下标loopIndex仅在【集合全局前置脚本】初始化1次,不再在Token接口重置下标,两次循环自动分别取2个不同CaptureID

执行链路:批量初始化下标→每轮:获取Token→取单个CaptureID查扣款→自动提取OrderID→查订单全量(买家/地址/商品/税费)

步骤1:新建专用环境变量(Environments)

  1. Postman左侧【Environments】→New,环境命名:PayPal_GRW_Live_Batch
  2. 新增5个环境变量,初始值填写如下
变量名 Initial Value(初始值) 说明
captureList ["2M331120UK046314S","1PJ581750B801442J"] JSON数组存放全部待查CaptureID(2条数据)
loopIndex 0 遍历下标,集合脚本统一初始化,接口不再重置
currentCaptureId (空白) 脚本自动赋值当前轮查询的捕获ID
orderId (空白) 从Capture返回自动解析订单号
access_token (空白) OAuth鉴权令牌,Token接口自动存入
  1. Save保存,右上角环境下拉框选中:PayPal_GRW_Live_Batch(必须选中环境变量生效)

步骤2:新建Collection(集合)+ 配置【集合级前置脚本】(关键!解决循环重复问题)

  1. 新建Collection:PayPal_批量查PayPal订单
  2. 双击集合名称→切换到【Pre-request Script】(集合级脚本:整批批量任务只在最开始运行1次,每轮迭代不会重复执行
    粘贴初始化代码:
javascript 复制代码
// 全量批量开始前仅执行1次,下标归零,只初始化一次
pm.environment.set("loopIndex", 0);
console.log("批量任务启动,下标初始化=0");

❗ 从此删除Token接口内所有loopIndex=0的代码,杜绝每次循环重置下标导致重复查同ID。

在集合内新建3个请求(固定从上到下顺序:01→02→03)

请求①:01_GetToken【POST 获取鉴权令牌】

URL:https://api.paypal.com/v1/oauth2/token(Live正式域名,无-m

  1. Authorization标签 → Basic Auth

    • Username:GRW商户Live Client ID
    • Password:GRW商户Live Client Secret
  2. Body标签 → x-www-form-urlencoded

    key value
    grant_type client_credentials
  3. Tests标签(仅保存access_token,无任何loopIndex赋值代码!

javascript 复制代码
pm.test("Token保存成功", function () {
    let resJson = pm.response.json();
    pm.environment.set("access_token", resJson.access_token);
});
请求②:02_QueryCaptureDetail【GET 查询扣款详情】

URL:https://api.paypal.com/v2/payments/captures/{``{currentCaptureId}}

  1. Authorization → Bearer Token,Token值:{``{access_token}}
  2. Pre-request Script(请求发送前,按下标从数组取出当前CaptureID)
javascript 复制代码
// 读取ID数组与游标
let captureArr = JSON.parse(pm.environment.get("captureList"));
let index = Number(pm.environment.get("loopIndex"));
// 赋值当前需要查询的ID
pm.environment.set("currentCaptureId", captureArr[index]);
console.log("本轮查询CaptureID:" + captureArr[index]);
  1. Tests标签(接口返回后:提取OrderID + 下标自增,准备下一轮)
javascript 复制代码
let resp = pm.response.json();
// 提取关联订单号存入环境
let orderNo = resp.supplementary_data.related_ids.order_id;
pm.environment.set("orderId", orderNo);
// 下标+1,供下一轮循环使用
let nextIndex = Number(pm.environment.get("loopIndex")) + 1;
pm.environment.set("loopIndex", nextIndex);
console.log("下标自增为:" + nextIndex);
请求③:03_QueryOrderFullInfo【GET 查询全量订单(买家/地址/商品/税费)】

URL:https://api.paypal.com/v2/checkout/orders/{``{orderId}}

  1. Authorization → Bearer Token,Token:{``{access_token}}
  2. Tests标签(可选:提取关键字段存入全局变量,后续批量导出Excel/CSV)
javascript 复制代码
let orderData = pm.response.json();
let capId = pm.environment.get("currentCaptureId");
let ordId = pm.environment.get("orderId");

// 1.买家姓名&邮箱
let buyerName = `${orderData.payer.name?.given_name||""} ${orderData.payer.name?.surname||""}`;
let buyerMail = orderData.payer.email_address;
// 2.收货地址
let shipAddr = orderData.purchase_units[0].shipping?.address || {};
//3.税费金额
let taxVal = orderData.purchase_units[0].amount.breakdown?.tax?.value || "0";
//4.支付来源(信用卡/PayPal余额)
let paySource = orderData.payment_source ? Object.keys(orderData.payment_source)[0] : "PayPal余额";
//5.下单来源URL
let sourceUrl = orderData.application_context?.return_url || "";

//存入全局变量,导出报表使用
pm.globals.set("capId",capId);
pm.globals.set("ordId",ordId);
pm.globals.set("buyerName",buyerName);
pm.globals.set("buyerMail",buyerMail);
pm.globals.set("tax",taxVal);
pm.globals.set("paySource",paySource);

步骤3:一键批量自动运行(Collection Runner)

  1. 点击集合PayPal_批量查PayPal订单右侧 ▶【Run】打开批量运行面板
  2. Runner配置:
    • Environment:下拉选中PayPal_GRW_Live_Batch
    • Iterations(迭代次数):2(数组内一共2个CaptureID,必须填2)
    • 执行顺序:从上到下01_GetToken →02_QueryCaptureDetail→03_QueryOrderFullInfo
    • 勾选【Save responses】(保存全部接口返回报文)
  3. 点击蓝色【Run PayPal_批量查PayPal订单】

运行逻辑(2轮循环不再重复)

  • 批量启动:集合前置脚本loopIndex=0(仅执行1次)
  • 第1轮:01拿Token→02取下标0=ID12M331120UK046314S→查Capture→提取Order→03查订单;下标变成1
  • 第2轮:01复用Token→02取下标1=ID21PJ581750B801442J→查Capture→提取Order→03查订单;下标变成2

步骤4:批量导出所有订单明细CSV

  1. Run结束后,右侧运行结果页点击【Export】→Export Results,格式选CSV,Excel直接打开,包含:CaptureID、订单号、买家姓名、邮箱、税费、支付方式、全量返回报文。

步骤5:后续新增CaptureID方法

打开环境PayPal_GRW_Live_Batch,修改captureList数组,在\[\]内追加"新ID",修改Runner迭代次数=数组元素总数量,重新Run即可。

订单返回关键字段对照表(03接口返回JSON)

需要获取的数据 JSON字段路径
买家姓名/邮箱 payer.name.given_name/surnamepayer.email_address
收货地址 purchase_units[0].shipping.address(国家/城市/邮编/街道)
商品明细 purchase_units[0].items[](商品名、单价、数量)
订单税费 purchase_units[0].amount.breakdown.tax.value
付款卡/支付类型 payment_source(VISA/万事达/PayPal余额,PayPal不返回完整卡号)
下单来源 application_context.return_url(跳转下单网站)

避坑说明

  1. URL区分:Live正式密钥必须api.paypal.comapi-m.paypal.com是沙盒,混用直接401报错;
  2. 禁止在01接口任何位置写loopIndex=0(之前重复取值的根本原因);
  3. Token有效期约9小时,短时间多次批量无需重复手动跑01。
相关推荐
爱喝水的鱼丶1 小时前
SAP-ABAP:SAP 内存管理详解:从架构到优化
开发语言·学习·架构·sap·abap·内存管理
我是一颗柠檬1 小时前
【Java项目技术亮点】Outbox事件驱动模式:解决分布式事务的终极方案
java·开发语言·分布式·后端·中间件·kafka
那晚的她1 小时前
Scala中Set集合
开发语言·后端·scala
右耳朵猫AI1 小时前
Go周刊2026W21 | Fiber 3.3、errcheck 1.20、Jet 2.15、Sarama 1.49
开发语言·后端·golang
Clf丶忆笙1 小时前
搭建支持多语言开发的Quarkus环境:Java、Kotlin与Scala全栈指南
java·开发语言·云原生·kotlin·scala·quarkus
IvanCodes1 小时前
四、Scala深入面向对象:类、对象与伴生关系
开发语言·后端·scala
嗯.~1 小时前
scala的泛型应用场景
开发语言·后端·scala
SoftLipaRZC1 小时前
C语言动态内存:内存管理完全指南
c语言·开发语言
java1234_小锋1 小时前
LangChain4j 开发Java Agent智能体- 对话与提示词工程(Prompt)
java·开发语言·prompt·langchain4j