https://developer.paypal.com/developer/applications 打开英文显示
My Apps & Credentials
My Account
Accounts
Notifications
API Calls
IPN Simulator
Webhooks Events
Webhooks Simulator
Credit Card Generator
Negative Testing
API Calls
Webhooks Events
https://developer.paypal.com/developer/applications 打开中文显示
我的应用程序和证书
我的帐户
帐目
通知
API调用
IPN模拟器
Webhooks事件
Webhooks模拟器
信用卡生成器
阴性测试
API调用
Webhooks事件
沙箱帐户
我的应用和凭据
沙盒电子邮件和短信通知
现有沙箱用户使用新的或现有的PayPal帐户登录。美国和非美国开发商可以在www.paypal.com上创建新的个人或企业帐户。
要端到端地测试代码,请创建个人和业务沙箱帐户。使用沙箱凭据发出API请求并查看响应。要了解如何使用沙盒帐户,请参阅“ 测试指南”。
非美国开发商:请阅读我们的常见问题解答。沙盒API调用历史记录
现有沙箱用户使用新的或现有的PayPal帐户登录。美国和非美国开发商可以在www.paypal.com上创建新的个人或企业帐户。
要端到端地测试代码,请创建个人和业务沙箱帐户。使用沙箱凭据发出API请求并查看响应。要了解如何使用沙盒帐户,请参阅“ 测试指南”。
非美国开发商:请阅读我们的常见问题解答。即时付款通知(IPN)模拟器
触发模拟付款即可立即查看付款通知。确认正确解析字段并确保处理程序正常工作。了解有关使用IPN模拟器的更多信息。
您必须先登录才能访问和使用IPN Simulator。请参阅我们的常见问题解答。
如果您没有PayPal帐户,请单击“注册”以创建一个帐户。
注意:非美国开发者:阅读我们的常见问题解答Sandbox Webhooks活动
登录以查看您的webhooks事件。
您可以查看事件的状态,重新发送通知以及查看事件详细信息。有关webhooks的更多信息,请参阅Webhooks。
非美国开发商:请阅读我们的常见问题解答。Webhooks模拟器
配置侦听器后,可以使用带有示例有效内容的Webhooks模拟器来模拟模拟webhook事件。模拟器验证您的侦听器可以成功接收事件数据而不会出现任何连接问题,并生成模拟事件数据以向您显示webhook事件的外观。使用PayPal帐户登录即可开始使用。
注意:由于这些是模拟事件,因此您无法验证,重新发送事件通知,或显示模拟器生成的事件的webhook详细信息。有关如何集成webhook的信息,请参阅Webhooks。
非美国开发商:请阅读我们的常见问题解答。
用于测试的信用卡生成器
卡类型:签证
卡号: 4333873085880680
到期日期: 01/2022
CVV: 952
负面测试REST API
API基础知识
为确保正确处理错误,请使用否定测试强制流程通过特定的错误条件。
注意:沙箱中提供了否定测试。您无法在实时PayPal环境中强制或模拟错误条件。
重要提示:沙箱中的否定测试处于测试阶段,可能存在错误或问题。
在PayPal沙箱中,您可以传递输入以模拟错误场景和模拟实际API响应的正面场景,而无需调用下游服务。
您可以使用这些方法在沙箱中模拟否定响应:
使用测试值模拟负面响应
注意:如果您不使用特定测试值,则服务将返回实际的API响应。
您可以使用基于测试值的方法来测试以下API:
在使用测试值模拟否定响应之前,必须先设置开发环境。获得允许您访问受保护的REST API资源的令牌后,您可以创建沙箱帐户来测试您的Web和移动应用程序。有关详情,请参阅“入门”。
然后,返回此页面以使用测试值来模拟否定响应。
1。 | 在请求字段中设置测试值。 |
2。 | 将您的请求发送到您要测试的端点。 |
注意:测试值区分大小写。
要触发SENDER_EMAIL_UNCONFIRMED模拟响应,请在v1 / payments / payouts调用中将items[0]/note值设置为。ERRPYO002POST
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" } }]}'对于否定案例测试代码,请参阅测试支付。
注意:如果您不使用特定测试值,则服务将返回实际的API响应。
您可以使用请求标头来测试以下Payments API和订单API方法:
在使用请求标头模拟否定响应之前,必须先设置开发环境。获得允许您访问受保护的REST API资源的令牌后,您可以创建沙箱帐户来测试您的Web和移动应用程序。有关详情,请参阅“入门”。
然后,返回此页面以使用请求标头来模拟否定响应。
1。 | 启用否定测试。 |
2。 | 测试API错误处理例程。 |
3。 | 用负面测试进行测试。 |
REST API应用程序使用请求标头在沙箱中调用否定测试。此标头将沙箱配置为包含商家的交易的负面测试状态。
要启用否定测试:
PayPal-Mock-Response在API调用中向请求标头添加密钥。
要模拟错误,请添加一个mock_application_codes等于要测试的错误代码的值:
请求标头 | 类型 | 例 |
---|---|---|
PayPal-Mock-Response | JSON | {\"mock_application_codes\": \"MALFORMED_REQUEST\"} |
有关可用的错误代码,请参阅付款API错误消息和订单API错误消息。
使用有效的访问令牌,您可以进行REST API调用以进行负面测试。
哪里:
头 | 值 |
---|---|
Content-Type | application/json |
Authorization | BearerAccess-Token 请参阅获取访问令牌。 |
PayPal-Mock-Response | {\"mock_application_codes\": \"error_name\"} |
导航到商家测试业务帐户的“ 配置文件”>“设置”页面(有关详细信息,请参阅管理沙箱帐户)。
在配置文件选项卡上,将否定测试设置为On。
这会将沙盒设置为包含商家的交易的负面测试状态。如果没有此配置,沙箱不会引发错误条件,除非通过正常的事务处理引发错误。
通过将特定参数设置为要触发的错误代码值来引发错误情况。
从下表中选择要使用的参数。使用API错误代码中的错误代码来触发错误。
例如,用于10755触发“不支持的货币”错误。您传递的实际值以及用于触发错误的字段取决于您要触发的错误:
您可以强制执行两种类型的API错误:与交易金额相关的错误,以及与金额无关的错误。
要在金额相关字段上触发错误条件,请将错误代码值指定为小数点右侧两位数的数字。例如,指定107.55触发10755错误的值。
要在与金额无关的字段上触发错误,请指定整个错误代码。例如,使用值10539来触发“付款已拒绝”错误。
下表标识了API操作,触发错误的字段的NVP名称或SOAP元素,以及如何在字段中设置值的说明:
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例程。沙箱支持测试AVS和CCS错误类型。
使用要测试的AVS错误的触发值生成地址验证错误。
对于虚拟终端,在虚拟终端显示的地址行1字段中输入触发值。
对于DoDirectPayment调用,请STREET在调用字段中指定代码(Street1用于SOAP调用)。例如,在所有情况下,使用以下值来触发AVS代码A:123 AVS_A Street
注意: AVS代码值区分大小写(所有字符必须为大写)。例如,AVS_A是有效的触发器而avs_a不是。
此表标识有效的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位邮政编码匹配,但未指定地址; 如果设置了“部分地址匹配”风险控制,则会导致错误。 |
考虑一个示例,该示例设置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错误或DoDirectPayment拨打电话来模拟信用卡验证。
指定要通过指定生成的CVV码触发值的值CVV2调用的领域。从虚拟终端,在填写表格时,将触发值输入卡安全代码字段。
下表标识了有效的CVV代码,相应的触发器以及每个错误条件的描述:
AVC代码 | 触发值 | 描述 |
---|---|---|
M | 115 | CVV2匹配(无错误)。 |
N | 116 | CVV2不匹配。 |
P | 120 | 交易未处理。 |
S | 123 | 服务不受支持。 |
U | 125 | 暂停服务。 |
X | 130 | 没有反应。 |
考虑一个在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