Paypal接口文档中英文说明

2019-09-15

https://developer.paypal.com/developer/applications打开英文显示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
    • API Calls

    • Webhooks Events



https://developer.paypal.com/developer/applications打开中文显示

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活动


Sandbox 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设置为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"    }   }]}'
庆典复制

响应示例

{"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和移动应用程序。有关详情,请参阅“入门”

然后,返回此页面以使用请求标头来模拟否定响应。


调用负面测试



1。启用否定测试
2。测试API错误处理例程
3。用负面测试进行测试

启用否定测试

REST API应用程序使用请求标头在沙箱中调用否定测试。此标头将沙箱配置为包含商家的交易的负面测试状态。

要启用否定测试:

  • PayPal-Mock-Response在API调用中请求标头添加密钥

测试API错误处理例程

要模拟错误,请添加一个mock_application_codes等于要测试的错误代码值:

请求标头类型
PayPal-Mock-ResponseJSON{\"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-Typeapplication/json
AuthorizationBearerAccess-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

启用否定测试

  1. 导航到商家测试业务帐户的“ 配置文件”>“设置”页面(有关详细信息,请参阅管理沙箱帐户)。

  2. 配置文件选项卡上,将否定测试设置On

这会将沙盒设置为包含商家的交易的负面测试状态。如果没有此配置,沙箱不会引发错误条件,除非通过正常的事务处理引发错误。

测试API错误处理例程

通过将特定参数设置为要触发的错误代码值来引发错误情况。

从下表中选择要使用的参数。使用API错误代码中的错误代码来触发错误。

例如,用于10755触发“不支持的货币”错误。您传递的实际值以及用于触发错误的字段取决于您要触发的错误:

您可以强制执行两种类型的API错误:与交易金额相关的错误,以及与金额无关的错误

  • 要在金额相关字段上触发错误条件,请将错误代码值指定为小数点右侧两位数的数字。例如,指定107.55触发10755错误的值。

  • 要在与金额无关的字段上触发错误,请指定整个错误代码。例如,使用值10539来触发“付款已拒绝”错误。

下表标识了API操作,触发错误的字段的NVP名称或SOAP元素,以及如何在字段中设置值的说明:

触发错误条件的API字段
API名称NVP领域SOAP元素描述
BAUpdate
v2.4及更高版本
MPIDMpID指定完整的错误代码以触发错误。例如,10755触发错误代码10755。
BAUpdate
v3.0及更高版本
REFERENCEIDReferenceID指定完整的错误代码以触发错误。例如,10755触发错误代码10755。
BillUserAMTAmount指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,107.55触发错误代码10755。
DoAuthorizationAMTAmount指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,106.23触发错误代码10623。
DoCaptureAMTAmount指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,106.23触发错误代码10623。
DoDirectPaymentAMTOrderTotal指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,107.55触发错误代码10755。
DoExpressCheckoutPaymentAMTOrderTotal指定完整的错误代码以触发错误。例如,105.39触发错误代码10539。
DoReauthorizationAMTAmount指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,106.23触发错误代码10623。
DoVoidAUTHORIZATIONIDAuthorizationID指定完整的错误代码以触发错误。例如,10623触发错误代码10623。
GetExpressCheckoutDetailsTOKENToken指定完整的错误代码以触发错误。例如,10539触发错误代码10539。
GetTransactionDetailsTRANSACTIONIDTransactionID指定完整的错误代码以触发错误。例如,10539触发错误代码10539。
MassPayEMAILSUBJECTEmailSubject指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,107.55触发错误代码10755。
RefundTransactionAMTAmount指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,107.55触发错误代码10755。
SetExpressCheckoutMAXAMTMaxAmount指定错误代码以作为数字值触发,小数点右侧有两位数字。例如,107.55触发错误代码10755。
TransactionSearchINVNUMInvoiceID指定完整的错误代码以触发错误。例如,10539触发错误代码10539。
UpdateAuthorizationTRANSACTIONIDTransactionID指定完整的错误代码以触发错误。例如,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代码触发值描述
AAVS_A地址匹配但未指定邮政编码; 如果设置了“PartialAddress Match”风险控制,则会导致错误。
BAVS_B地址匹配但未指定邮政编码; 如果设置了“PartialAddress Match”风险控制,则会导致错误。
CAVS_C没有国际地址的地址信息; 如果设置了“无地址匹配”风险控制,则会导致错误。
DAVS_D完全匹配(无错误)。国际地址和邮政编码匹配。
EAVS_E不允许进行MOTO(互联网/电话)交易。
FAVS_F完全匹配(无错误)。英国地址和邮政编码匹配。
GAVS_G全球服务不可用; 如果设置了“服务不可用/不支持”风险控制,则会导致错误。
IAVS_I国际无法提供服务 如果设置了“服务不可用/不支持”风险控制,则会导致错误。
NAVS_N没有地址信息; 如果设置了“无地址匹配”风险控制,则会导致错误。
PAVS_P邮政编码匹配,但没有指定地址; 如果设置了“部分地址匹配”风险控制,则会导致错误。
RAVS_R重试; 如果设置了“服务不可用/不支持”风险控制,则会导致错误。
SAVS_S服务不受支持; 如果设置了“服务不可用/不支持”风险控制,则会导致错误。
UAVS_U暂停服务; 如果设置了“服务不可用/不支持”风险控制,则会导致错误。
WAVS_W9位邮政编码匹配,但未指定地址; 如果设置了“部分地址匹配”风险控制,则会导致错误。
XAVS_X完全匹配(无错误)。完整的地址和9位邮政编码匹配
YAVS_Y完全匹配(无错误)。完整的地址和5位数的邮政编码匹配。
ZAVS_Z5位邮政编码匹配,但未指定地址; 如果设置了“部分地址匹配”风险控制,则会导致错误。

使用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代码触发值描述
M115CVV2匹配(无错误)。
N116CVV2不匹配。
P120交易未处理。
S123服务不受支持。
U125暂停服务。
X130没有反应。

使用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


阅读1736
分享