https://developer.paypal.com/developer/applications 打开英文显示
DASHBOARD
My Apps & Credentials
My Account
SANDBOX
Accounts
Notifications
API Calls
IPN Simulator
Webhooks Events
MOCK
Webhooks Simulator
Credit Card Generator
Negative Testing
LIVE

https://developer.paypal.com/developer/applications 打开中文显示
仪表盘
沙箱
帐目
通知
API调用
IPN模拟器
Webhooks事件
模拟
生活,居住
沙箱帐户

我的应用和凭据

沙盒电子邮件和短信通知

现有沙箱用户使用新的或现有的PayPal帐户登录。美国和非美国开发商可以在www.paypal.com上创建新的个人或企业帐户。
要端到端地测试代码,请创建个人和业务沙箱帐户。使用沙箱凭据发出API请求并查看响应。要了解如何使用沙盒帐户,请参阅“ 测试指南”。
非美国开发商:请阅读我们的常见问题解答。
沙盒API调用历史记录

现有沙箱用户使用新的或现有的PayPal帐户登录。美国和非美国开发商可以在www.paypal.com上创建新的个人或企业帐户。
要端到端地测试代码,请创建个人和业务沙箱帐户。使用沙箱凭据发出API请求并查看响应。要了解如何使用沙盒帐户,请参阅“ 测试指南”。
非美国开发商:请阅读我们的常见问题解答。
即时付款通知(IPN)模拟器

触发模拟付款即可立即查看付款通知。确认正确解析字段并确保处理程序正常工作。了解有关使用IPN模拟器的更多信息。
您必须先登录才能访问和使用IPN Simulator。请参阅我们的常见问题解答。
如果您没有PayPal帐户,请单击“注册”以创建一个帐户。
注意:非美国开发者:阅读我们的常见问题解答
Sandbox Webhooks活动

Sandbox Webhooks活动
登录以查看您的webhooks事件。
您可以查看事件的状态,重新发送通知以及查看事件详细信息。有关webhooks的更多信息,请参阅Webhooks。
非美国开发商:请阅读我们的常见问题解答。
Webhooks模拟器

Webhooks模拟器
配置侦听器后,可以使用带有示例有效内容的Webhooks模拟器来模拟模拟webhook事件。模拟器验证您的侦听器可以成功接收事件数据而不会出现任何连接问题,并生成模拟事件数据以向您显示webhook事件的外观。使用PayPal帐户登录即可开始使用。
注意:由于这些是模拟事件,因此您无法验证,重新发送事件通知,或显示模拟器生成的事件的webhook详细信息。有关如何集成webhook的信息,请参阅Webhooks。
非美国开发商:请阅读我们的常见问题解答。
用于测试的信用卡生成器

用于测试的信用卡生成器
生成随机信用卡以进行测试。您可以将信用卡添加到Sandbox PayPal帐户或使用它们进行信用卡付款。
生成信用卡
生成的信用卡详细信息
卡类型:签证
卡号: 4333873085880680
到期日期: 01/2022
CVV: 952
负面测试REST API

API基础知识
负面测试REST API
为确保正确处理错误,请使用否定测试强制流程通过特定的错误条件。
注意:沙箱中提供了否定测试。您无法在实时PayPal环境中强制或模拟错误条件。
重要提示:沙箱中的否定测试处于测试阶段,可能存在错误或问题。
测试方法
在PayPal沙箱中,您可以传递输入以模拟错误场景和模拟实际API响应的正面场景,而无需调用下游服务。
您可以使用这些方法在沙箱中模拟否定响应:
使用测试值模拟负面响应



使用测试值模拟负面响应
注意:如果您不使用特定测试值,则服务将返回实际的API响应。
您可以使用基于测试值的方法来测试以下API:
设置您的开发环境
在使用测试值模拟否定响应之前,必须先设置开发环境。获得允许您访问受保护的REST API资源的令牌后,您可以创建沙箱帐户来测试您的Web和移动应用程序。有关详情,请参阅“入门”。
然后,返回此页面以使用测试值来模拟否定响应。
调用负面测试
|
|
---|
1。 | 在请求字段中设置测试值。 |
2。 | 将您的请求发送到您要测试的端点。 |
注意:测试值区分大小写。
示例请求
要触发SENDER_EMAIL_UNCONFIRMED
模拟响应,请在v1 / payments / payouts调用中将items[0]/note
值设置为。ERRPYO002
POST
curl -X POST https://api.sandbox.paypal.com/v1/payments/payouts \ -H "content-type: application/json" \ -H "Authorization: Bearer Access-Token" \-d'{ "sender_batch_header": { "sender_batch_id": "1524086406556", "email_subject": "This email is related to simulation" }, "items": [ { "recipient_type": "EMAIL", "receiver": "payouts-simulator-receiver@paypal.com", "note": "ERRPYO002", "sender_item_id": "15240864065560", "amount": { "currency": "USD", "value": "1.00" } }]}'
庆典
响应示例
{"name": "SENDER_EMAIL_UNCONFIRMED","message": "Authorization error occurred","debug_id": "ca787bdf80d7a","information_link": "https://developer.paypal.com/docs/api/payments.payouts-batch/#errors"}
JSON
对于否定案例测试代码,请参阅测试支付。
使用请求标头模拟负面响应




使用请求标头模拟负面响应
注意:如果您不使用特定测试值,则服务将返回实际的API响应。
您可以使用请求标头来测试以下Payments API和订单API方法:
设置您的开发环境
在使用请求标头模拟否定响应之前,必须先设置开发环境。获得允许您访问受保护的REST API资源的令牌后,您可以创建沙箱帐户来测试您的Web和移动应用程序。有关详情,请参阅“入门”。
然后,返回此页面以使用请求标头来模拟否定响应。
调用负面测试
启用否定测试
REST API应用程序使用请求标头在沙箱中调用否定测试。此标头将沙箱配置为包含商家的交易的负面测试状态。
要启用否定测试:
测试API错误处理例程
要模拟错误,请添加一个mock_application_codes
等于要测试的错误代码的值:
请求标头 | 类型 | 例 |
---|
PayPal-Mock-Response | JSON | {\"mock_application_codes\": \"MALFORMED_REQUEST\"}
|
有关可用的错误代码,请参阅付款API错误消息和订单API错误消息。
用负面测试进行测试
使用有效的访问令牌,您可以进行REST API调用以进行负面测试。
示例请求
curl -v -X GET https://api.sandbox.paypal.com/v2/payments/authorizations/0VF52814937998046 \ -H "Content-Type: application/json" \ -H "Authorization: Bearer Access-Token" \ -H "PayPal-Mock-Response: {\"mock_application_codes\": \"MALFORMED_REQUEST\"}"
庆典
哪里:
头 | 值 |
---|
Content-Type | application/json |
Authorization | BearerAccess-Token 请参阅获取访问令牌。 |
PayPal-Mock-Response | {\"mock_application_codes\": \"error_name\"} |
响应示例
{"name": "MALFORMED_REQUEST","message": "JSON request is malformed.","information_link": "https://developer.paypal.com/docs/api/errors/#validation-errors","debug_id": "a1b2c3d4e5f6g","details": [ {"issue": "Review the JSON request." }]}
负面测试NVP / SOAP API
















负面测试NVP / SOAP API
启用否定测试
导航到商家测试业务帐户的“ 配置文件”>“设置”页面(有关详细信息,请参阅管理沙箱帐户)。
在配置文件选项卡上,将否定测试设置为On
。
这会将沙盒设置为包含商家的交易的负面测试状态。如果没有此配置,沙箱不会引发错误条件,除非通过正常的事务处理引发错误。
测试API错误处理例程
通过将特定参数设置为要触发的错误代码值来引发错误情况。
从下表中选择要使用的参数。使用API错误代码中的错误代码来触发错误。
例如,用于10755
触发“不支持的货币”错误。您传递的实际值以及用于触发错误的字段取决于您要触发的错误:
您可以强制执行两种类型的API错误:与交易金额相关的错误,以及与金额无关的错误。
下表标识了API操作,触发错误的字段的NVP名称或SOAP元素,以及如何在字段中设置值的说明:
触发错误条件的API字段API名称 | NVP领域 | SOAP元素 | 描述 |
---|
BAUpdate v2.4及更高版本 | MPID | MpID | 指定完整的错误代码以触发错误。例如,10755 触发错误代码10755。 |
BAUpdate v3.0及更高版本 | REFERENCEID | ReferenceID | 指定完整的错误代码以触发错误。例如,10755 触发错误代码10755。 |
BillUser | AMT | Amount | 指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,107.55 触发错误代码10755。 |
DoAuthorization | AMT | Amount | 指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,106.23 触发错误代码10623。 |
DoCapture | AMT | Amount | 指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,106.23 触发错误代码10623。 |
DoDirectPayment | AMT | OrderTotal | 指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,107.55 触发错误代码10755。 |
DoExpressCheckoutPayment | AMT | OrderTotal | 指定完整的错误代码以触发错误。例如,105.39 触发错误代码10539。 |
DoReauthorization | AMT | Amount | 指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,106.23 触发错误代码10623。 |
DoVoid | AUTHORIZATIONID | AuthorizationID | 指定完整的错误代码以触发错误。例如,10623 触发错误代码10623。 |
GetExpressCheckoutDetails | TOKEN | Token | 指定完整的错误代码以触发错误。例如,10539 触发错误代码10539。 |
GetTransactionDetails | TRANSACTIONID | TransactionID | 指定完整的错误代码以触发错误。例如,10539 触发错误代码10539。 |
MassPay | EMAILSUBJECT | EmailSubject | 指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,107.55 触发错误代码10755。 |
RefundTransaction | AMT | Amount | 指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,107.55 触发错误代码10755。 |
SetExpressCheckout | MAXAMT | MaxAmount | 指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,107.55 触发错误代码10755。 |
TransactionSearch | INVNUM | InvoiceID | 指定完整的错误代码以触发错误。例如,10539 触发错误代码10539。 |
UpdateAuthorization | TRANSACTIONID | TransactionID | 指定完整的错误代码以触发错误。例如,11094 触发错误代码11094。 |
注意:如果触发器值不是正在测试的API的有效错误代码,则会对请求进行肯定测试。在这种情况下,可能会发生不同的错误。
测试与金额相关的错误
考虑一个测试授权错误(#10610)的示例DoAuthorization
。该错误与交易金额有关,因此我们在AMT
字段中指定错误代码:
curl https://api-3t.sandbox.paypal.com/nvp \-s \ --insecure \-d USER=yourUID\-d PWD=yourPSWD\-d SIGNATURE=yourSig\-d METHOD=DoAuthorization \-d VERSION=100 \-d TRANSACTIONENTITY=ORDER \-d TRANSACTIONID=O-1N564174MM387483R \-d AMT=106.10
如果为沙箱Business帐户启用了否定测试,则会收到类似于以下内容的错误消息(为便于阅读而打包):
TIMESTAMP=2013%2d08%2d13T00%3a29%3a00Z &CORRELATIONID=78d43b44c9e0e &ACK=Failure &VERSION=100 &BUILD=7161310 &L_ERRORCODE0=10610 &L_SHORTMESSAGE0=Amount%20limit%20exceeded%2e &L_LONGMESSAGE0=Amount%20specified%20exceeds%20allowable%20limit%2e &L_SEVERITYCODE0=Error
测试与金额无关的错误
以下示例显示如何强制与事务量无关的错误代码。我们将使用DoVoid
呼叫来触发错误#10603,买方帐户受到限制。如表中所示,我们需要使用该AUTHORIZATIONID
字段来触发错误DoVoid
。
该DoVoid
反转(或解除)命令或那就是商人与客户取得授权。这是一个在负测试模式下生成错误的调用:
curl https://api-3t.sandbox.paypal.com/nvp \-s \ --insecure \-d USER=yourUID\-d PWD=yourPSWD\-d SIGNATURE=yourSig\-d METHOD=DoVoid \-d VERSION=100 \-d AUTHORIZATIONID=10603
该调用触发了#10603错误,正如我们在以下响应中看到的那样:
TIMESTAMP=2013%2d08%2d13T19%3a53%3a09Z&CORRELATIONID=cfcf54037bca8 &ACK=Failure &VERSION=100 &BUILD=7161310 &L_ERRORCODE0=10603 &L_SHORTMESSAGE0=The%20buyer%20is%20restricted%2e &L_LONGMESSAGE0=The%20buyer%20account%20is%20restricted%2e &L_SEVERITYCODE0=Error
测试返回多个响应的错误
考虑一个触发RefundTransaction
错误#10009 的示例,该错误返回14个不同的错误集。这是一种金额类型的错误,因此我们在AMT
输入字段中设置触发器:
curl https://api-3t.sandbox.paypal.com/nvp \-s \ --insecure \-d USER=yourUID\-d PWD=yourPSWD\-d SIGNATURE=yourSig\-d METHOD=RefundTransaction \-d VERSION=100 \-d TRANSACTIONID=6M473779DJ437830A \-d REFUNDTYPE=Partial \-d AMT=100.09
从下面的响应中可以看到(为清楚起见,截断),沙箱返回所有可能的错误代码集。强大的应用程序可以优雅地处理所有可能的变化。
TIMESTAMP=2013%2d08%2d13T20%3a16%3a56Z &CORRELATIONID=196d832d49033 &ACK=Failure &VERSION=100 &BUILD=7161310 &L_ERRORCODE0=10009 &L_ERRORCODE1=10009 &L_ERRORCODE2=10009 &L_ERRORCODE3=10009 &L_ERRORCODE4=10009 &L_ERRORCODE5=10009 &L_ERRORCODE6=10009 &L_ERRORCODE7=10009 &L_ERRORCODE8=10009 &L_ERRORCODE9=10009 &L_ERRORCODE10=10009 &L_ERRORCODE11=10009 &L_ERRORCODE12=10009 &L_ERRORCODE13=10009 &L_ERRORCODE14=10009 &L_SHORTMESSAGE0=Transaction%20refused &L_SHORTMESSAGE1=Transaction%20refused &L_SHORTMESSAGE2=Transaction%20refused... &L_SHORTMESSAGE13=Transaction%20refused &L_SHORTMESSAGE14=Transaction%20refused &L_LONGMESSAGE0=You%20can%20not%20refund%20this%20type%20of%20transaction &L_LONGMESSAGE1=You%20are%20over%20the%20time%20limit%20to%20perform%20a%20refund%20on%20this%20transaction... &L_LONGMESSAGE13=This%20transaction%20has%20already%20been%20fully%20refunded &L_LONGMESSAGE14=The%20partial%20refund%20amount%20must%20be%20less%20than%20or%20equal%20to%20the%20remaining%20amount &L_SEVERITYCODE0=Error &L_SEVERITYCODE1=Error... &L_SEVERITYCODE13=Error &L_SEVERITYCODE14=Error &REFUNDSTATUS=None &PENDINGREASON=None
测试虚拟终端和DoDirectPayment错误处理
您可以使用负测试设置来测试虚拟终端或DoDirectPayment
例程。沙箱支持测试AVS和CCS错误类型。
测试AVS错误
使用要测试的AVS错误的触发值生成地址验证错误。
对于虚拟终端,在虚拟终端显示的地址行1字段中输入触发值。
对于DoDirectPayment
调用,请STREET
在调用字段中指定代码(Street1
用于SOAP调用)。例如,在所有情况下,使用以下值来触发AVS代码A:123 AVS_A Street
注意: AVS代码值区分大小写(所有字符必须为大写)。例如,AVS_A
是有效的触发器而avs_a
不是。
此表标识有效的AVS代码,相应的触发器以及每个错误条件的描述:
AVS错误代码AVC代码 | 触发值 | 描述 |
---|
A | AVS_A | 地址匹配但未指定邮政编码; 如果设置了“PartialAddress Match”风险控制,则会导致错误。 |
B | AVS_B | 地址匹配但未指定邮政编码; 如果设置了“PartialAddress Match”风险控制,则会导致错误。 |
C | AVS_C | 没有国际地址的地址信息; 如果设置了“无地址匹配”风险控制,则会导致错误。 |
D | AVS_D | 完全匹配(无错误)。国际地址和邮政编码匹配。 |
E | AVS_E | 不允许进行MOTO(互联网/电话)交易。 |
F | AVS_F | 完全匹配(无错误)。英国地址和邮政编码匹配。 |
G | AVS_G | 全球服务不可用; 如果设置了“服务不可用/不支持”风险控制,则会导致错误。 |
I | AVS_I | 国际无法提供服务 如果设置了“服务不可用/不支持”风险控制,则会导致错误。 |
N | AVS_N | 没有地址信息; 如果设置了“无地址匹配”风险控制,则会导致错误。 |
P | AVS_P | 邮政编码匹配,但没有指定地址; 如果设置了“部分地址匹配”风险控制,则会导致错误。 |
R | AVS_R | 重试; 如果设置了“服务不可用/不支持”风险控制,则会导致错误。 |
S | AVS_S | 服务不受支持; 如果设置了“服务不可用/不支持”风险控制,则会导致错误。 |
U | AVS_U | 暂停服务; 如果设置了“服务不可用/不支持”风险控制,则会导致错误。 |
W | AVS_W | 9位邮政编码匹配,但未指定地址; 如果设置了“部分地址匹配”风险控制,则会导致错误。 |
X | AVS_X | 完全匹配(无错误)。完整的地址和9位邮政编码匹配 |
Y | AVS_Y | 完全匹配(无错误)。完整的地址和5位数的邮政编码匹配。 |
Z | AVS_Z | 5位邮政编码匹配,但未指定地址; 如果设置了“部分地址匹配”风险控制,则会导致错误。 |
使用DoDirectPayment测试AVS代码
考虑一个示例,该示例设置AVS代码的测试A
以及DoDirectPayment
调用中的API错误代码#10755 。代码A表示“未指定邮政编码”,如果设置了“部分地址匹配”风险控制,则会导致错误,无论是否发生其他错误:
curl https://api-3t.sandbox.paypal.com/nvp \-s \ --insecure \-d USER=yourUID\-d PWD=yourPSWD\-d SIGNATURE=yourSig\-d METHOD=DoDirectPayment \-d VERSION=100 \-d CREDITCARDTYPE=VISA \-d ACCT=4683075410516684 \-d EXPDATE=112007 \-d CVV2=808 \-d AMT=107.55 \-d FIRSTNAME=Designer \-d LASTNAME=Fotos \-d IPADDRESS=255.55.167.002 \-d STREET=1234%20AVS_A%20Street \-d CITY=San%20Jose \-d STATE=CA \-d COUNTRY=United%20States \-d ZIP=95110 \-d COUNTRYCODE=US \-d SHIPTONAME=Lenny%20P.%20Rico \-d SHIPTOSTREET=1234%20Easy%20Street \-d SHIPTOSTREET2=Apt%2022%20bis \-d SHIPTOCITY=New%20Orleans \-d SHIPTOSTATE=LA \-d SHIPTOCOUNTRY=US \-d SHIPTOZIP=70114 \-d PAYMENTACTION=Authorization \-d FIZBIN=foo
请求调用以下响应:
TIMESTAMP=2013%2d08%2d13T20%3a16%3a56Z &CORRELATIONID=a7cbf2d4d83dc &ACK=Failure &L_ERRORCODE0=10555 &L_SHORTMESSAGE0=Filter%20Decline &L_LONGMESSAGE0=This%20transaction%20cannot%20be%20processed%2e &L_SEVERITYCODE0=Error &L_ERRORCODE1=10755 &L_SHORTMESSAGE1=Unsupported%20Currency%2e &L_LONGMESSAGE1=This%20transaction%20cannot%20be%20processed%20due%20to%20an%20unsupported%20currency%2e &L_SEVERITYCODE1=Error &VERSION=100 &BUILD=7161310
注意:如果您未指定AVS风险控制值,PayPal将返回AVS代码X
。
测试CVV错误
您可以通过从虚拟终端触发CVV错误或DoDirectPayment
拨打电话来模拟信用卡验证。
指定要通过指定生成的CVV码触发值的值CVV2
调用的领域。从虚拟终端,在填写表格时,将触发值输入卡安全代码字段。
下表标识了有效的CVV代码,相应的触发器以及每个错误条件的描述:
AVS错误代码AVC代码 | 触发值 | 描述 |
---|
M | 115 | CVV2匹配(无错误)。 |
N | 116 | CVV2不匹配。 |
P | 120 | 交易未处理。 |
S | 123 | 服务不受支持。 |
U | 125 | 暂停服务。 |
X | 130 | 没有反应。 |
使用DoDirectPayment测试CVV代码
考虑一个在DoDirectPayment中设置CCV代码N测试的示例,它表示卡验证代码不匹配:
curl https://api-3t.sandbox.paypal.com/nvp \-s \ --insecure \-d USER=yourUID\-d PWD=yourPSWD\-d SIGNATURE=yourSig\-d METHOD=DoDirectPayment \-d VERSION=100 \-d CREDITCARDTYPE=VISA \-d ACCT=4683075410516684 \-d EXPDATE=112007 \-d CVV2=116 \-d AMT=1.55 \-d FIRSTNAME=Designer \-d LASTNAME=Fotos \-d IPADDRESS=255.55.167.002 \-d STREET=1234%20AVS_A%20Street \-d CITY=San%20Jose \-d STATE=CA \-d COUNTRY=United%20States \-d ZIP=95110 \-d COUNTRYCODE=US \-d SHIPTONAME=Lenny%20P.%20Rico \-d SHIPTOSTREET=1234%20Easy%20Street \-d SHIPTOSTREET2=Apt%2022%20bis \-d SHIPTOCITY=New%20Orleans \-d SHIPTOSTATE=LA \-d SHIPTOCOUNTRY=US \-d SHIPTOZIP=70114 \-d PAYMENTACTION=Authorization \-d FIZBIN=foo
请求调用以下响应:
TIMESTAMP=2013%2d08%2d13T20%3a16%3a56Z CORRELATIONID=2499856319532 &ACK=Failure &L_ERRORCODE0=15004 &L_SHORTMESSAGE0=Gateway%20Decline &L_LONGMESSAGE0=This%20transaction%20cannot%20be%20processed%2e%20Please%20enter%20a%20valid%20Credit%20Card%20Verification%20Number%2e &L_SEVERITYCODE0=Error &VERSION=100 &BUILD=7161310