快速搭建PayPal标准API测试框架

根据PayPal官方Postman指引页快速搭建标准API测试框架(https://developer.paypal.com/api/rest/postman/)

一、第一步:官网一键导入PayPal官方完整REST接口集合(核心)

  1. 浏览器打开官方指引页面:https://developer.paypal.com/api/rest/postman/
    页面分为两个导入按钮:
  • Import Sandbox Collection沙盒测试环境(虚拟订单,测试用)
  • Import Live Collection正式生产环境(GRW商户真实业务,你当前使用)→点击这个
  1. 点击Import Live Collection→弹窗选择【Open in Postman】,自动跳转Postman客户端/网页端一键导入PayPal全套V2 REST接口(包含订单、捕获、退款、对账等全接口,不用手动新建接口URL)。

✅ 导入自动生成两样东西:

① Collection:PayPal REST API Live(PayPal官方封装完整接口)

② Environment:PayPal Live Environment(官方预定义环境变量:baseUrlclientIdclientSecret

二、第二步:填入GRW商户正式API密钥(配置环境)

  1. 登录PayPal开发者后台 developer.paypal.com(GRW Trading FZE主管理员账号)→Apps & CredentialsLive→打开已创建的Live应用,复制:

    • Client ID
    • Client Secret
  2. Postman左侧【Environments】→打开PayPal Live Environment

    变量 填写内容 备注
    baseUrl https://api.paypal.com 官方已经预填好,无需修改
    clientId 粘贴Live ClientID 正式商户密钥
    clientSecret 粘贴Live Client Secret 正式商户密钥

保存环境,右上角选中PayPal Live Environment

三、第三步:使用官方自带Token获取接口(废弃你之前手动写的01_GetToken)

导入的官方集合内自带目录:AuthenticationGenerate OAuth2 Access Token

  1. 该接口是PayPal官方写好的获取Bearer Token请求:
    • Authorization=Basic Auth,自动引用环境{``{clientId}}/{``{clientSecret}}
    • Body自带grant_type=client_credentials
    • Tests内置自动脚本:请求成功后自动把access_token存入环境变量 ,后续全接口直接{``{access_token}}鉴权。

不再需要手动编写获取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);

五、第五步:补充批量环境变量+集合全局初始化

  1. 打开PayPal Live Environment环境,追加4个变量:
    |变量名|初始值|
    |----|----|
    |captureList|["2M331120UK046314S","1PJ581750B801442J"]|
    |loopIndex|0|
    |currentCaptureId|空|
    |orderId|空|
  2. 双击顶层集合PayPal REST API Live→Pre-request Script(集合全局脚本)
js 复制代码
//整批批量仅启动时初始化1次下标,全生命周期只执行一次
pm.environment.set("loopIndex",0);

点击Update保存。

六、第六步:批量一键Run运行

  1. 集合右侧▶Run打开Runner
    • Environment:PayPal Live Environment
    • Iterations(迭代数):2(数组内2个CaptureID)
    • 执行顺序从上至下:
      ① Generate OAuth2 Access Token
      ② Query_Capture_Detail
      ③ Query_Order_FullData
  2. Start run

运行逻辑:

第一轮:获取Token→取数组下标0第一个ID查单→下标+1

第二轮:跳过Token请求→取下标1第二个ID查单→下标+2,两条不同订单数据,不再重复

七、沙盒环境快速切换方法

如需测试虚拟订单,回到官网页面点击Import Sandbox Collection,导入沙盒专用集合,baseUrl自动变为https://api-m.sandbox.paypal.com,填入沙盒ClientID/Secret即可。

框架优势

  1. 官方原生接口:所有URL、字段跟随PayPal官方版本更新,避免手写接口地址出错;
  2. 统一环境变量baseUrl:切换沙盒/正式只需要换环境,不用逐个改接口域名;
  3. 鉴权标准化:官方OAuth逻辑,杜绝401/域名密钥不匹配报错。
相关推荐
智能制造产品经理代码提升1 小时前
Postman批量CaptureID全自动查询
开发语言·lua
爱喝水的鱼丶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语言·开发语言