根据PayPal官方Postman指引页快速搭建标准API测试框架(https://developer.paypal.com/api/rest/postman/)
一、第一步:官网一键导入PayPal官方完整REST接口集合(核心)
- 浏览器打开官方指引页面:https://developer.paypal.com/api/rest/postman/
页面分为两个导入按钮:
Import Sandbox Collection:沙盒测试环境(虚拟订单,测试用)Import Live Collection:正式生产环境(GRW商户真实业务,你当前使用)→点击这个
- 点击
Import Live Collection→弹窗选择【Open in Postman】,自动跳转Postman客户端/网页端一键导入PayPal全套V2 REST接口(包含订单、捕获、退款、对账等全接口,不用手动新建接口URL)。
✅ 导入自动生成两样东西:
① Collection:
PayPal REST API Live(PayPal官方封装完整接口)② Environment:
PayPal Live Environment(官方预定义环境变量:baseUrl、clientId、clientSecret)
二、第二步:填入GRW商户正式API密钥(配置环境)
-
登录PayPal开发者后台
developer.paypal.com(GRW Trading FZE主管理员账号)→Apps & Credentials→Live→打开已创建的Live应用,复制:- Client ID
- Client Secret
-
Postman左侧【Environments】→打开
PayPal Live Environment:变量 填写内容 备注 baseUrl https://api.paypal.com官方已经预填好,无需修改 clientId 粘贴Live ClientID 正式商户密钥 clientSecret 粘贴Live Client Secret 正式商户密钥
保存环境,右上角选中PayPal Live Environment。
三、第三步:使用官方自带Token获取接口(废弃你之前手动写的01_GetToken)
导入的官方集合内自带目录:Authentication → Generate OAuth2 Access Token
- 该接口是PayPal官方写好的获取Bearer Token请求:
- Authorization=Basic Auth,自动引用环境
{``{clientId}}/{``{clientSecret}} - Body自带
grant_type=client_credentials - Tests内置自动脚本:请求成功后自动把
access_token存入环境变量 ,后续全接口直接{``{access_token}}鉴权。
- Authorization=Basic Auth,自动引用环境
不再需要手动编写获取Token的请求,官方原生适配PayPal鉴权规则。
配套优化:解决【每轮Run重复请求Token】
打开Generate OAuth2 Access Token → Pre-request Script,粘贴跳过脚本:
javascript
//非第一轮循环,直接跳过Token请求
let index = Number(pm.environment.get("loopIndex"));
if(index > 0){
pm.execution.skipRequest();
console.log("非首轮,跳过OAuth获取");
}
四、第四步:在官方框架内新增你的批量查询接口(适配多CaptureID批量查询)
在PayPal REST API Live集合里新建自定义文件夹Batch_Capture_Query,新增2个GET请求:
请求1:Query_Capture_Detail(查扣款)
URL:{``{baseUrl}}/v2/payments/captures/{``{currentCaptureId}}
- Authorization:Bearer Token →
{``{access_token}} - Pre-request Script(从数组取当前ID)
js
let arr = JSON.parse(pm.environment.get("captureList"));
let idx = Number(pm.environment.get("loopIndex"));
pm.environment.set("currentCaptureId",arr[idx]);
- Tests(提取OrderID+下标自增)
js
let res = pm.response.json();
let oid = res.supplementary_data.related_ids.order_id;
pm.environment.set("orderId",oid);
let newIdx = Number(pm.environment.get("loopIndex"))+1;
pm.environment.set("loopIndex",newIdx);
请求2:Query_Order_FullData(查全量订单:买家/地址/商品/税费)
URL:{``{baseUrl}}/v2/checkout/orders/{``{orderId}}
- Authorization:Bearer Token →
{``{access_token}} - Tests(提取需要的业务字段,用于批量导出)
js
let orderData = pm.response.json();
//买家信息
let buyerName = `${orderData.payer.name?.given_name||""} ${orderData.payer.name?.surname||""}`;
let buyerEmail = orderData.payer.email_address;
//收货地址、税费、支付来源
let shipAddress = orderData.purchase_units[0].shipping?.address||{};
let taxValue = orderData.purchase_units[0].amount.breakdown?.tax?.value||"0";
let paySource = orderData.payment_source ? Object.keys(orderData.payment_source)[0]:"PayPal余额";
//存入全局变量,批量导出CSV
pm.globals.set("buyerName",buyerName);
pm.globals.set("buyerMail",buyerEmail);
pm.globals.set("tax",taxValue);
pm.globals.set("paySource",paySource);
五、第五步:补充批量环境变量+集合全局初始化
- 打开
PayPal Live Environment环境,追加4个变量:
|变量名|初始值|
|----|----|
|captureList|["2M331120UK046314S","1PJ581750B801442J"]|
|loopIndex|0|
|currentCaptureId|空|
|orderId|空| - 双击顶层集合
PayPal REST API Live→Pre-request Script(集合全局脚本)
js
//整批批量仅启动时初始化1次下标,全生命周期只执行一次
pm.environment.set("loopIndex",0);
点击Update保存。
六、第六步:批量一键Run运行
- 集合右侧▶Run打开Runner
- Environment:
PayPal Live Environment - Iterations(迭代数):
2(数组内2个CaptureID) - 执行顺序从上至下:
① Generate OAuth2 Access Token
② Query_Capture_Detail
③ Query_Order_FullData
- Environment:
- Start run
运行逻辑:
第一轮:获取Token→取数组下标0第一个ID查单→下标+1
第二轮:跳过Token请求→取下标1第二个ID查单→下标+2,两条不同订单数据,不再重复。
七、沙盒环境快速切换方法
如需测试虚拟订单,回到官网页面点击Import Sandbox Collection,导入沙盒专用集合,baseUrl自动变为https://api-m.sandbox.paypal.com,填入沙盒ClientID/Secret即可。
框架优势
- 官方原生接口:所有URL、字段跟随PayPal官方版本更新,避免手写接口地址出错;
- 统一环境变量baseUrl:切换沙盒/正式只需要换环境,不用逐个改接口域名;
- 鉴权标准化:官方OAuth逻辑,杜绝401/域名密钥不匹配报错。