如何正确编码我发送给PayPal Payments Pro的值?

问题

将参数列表发送到PayPal API的正确方法是什么?这是我想知道如何正确发送的一些参数的具体示例:

TRXTYPE               S
BILLTOSTREET          123 Marks & Spencer St.
CUSTREF               648=ZVC_Gxk

关于此事的文档不一致,我在网上找到的大多数代码都没有使用PayPal描述的长度前缀(但似乎仍然有用!) .

背景

PayPal Payments Pro文档描述了p44和周围页面上的自定义和非标准兼容NVP格式 . 它在PayPal API NVP Basics页面上也被矛盾地描述为"All requests to execute PayPal API operations sent using HTTP must be URL-encoded." .

大型PDF文档也与自己相矛盾:

  • PDF的“名称 - 值参数语法准则”部分指出“不要在值中使用空格” . 但是,它会提供一个“正确”的NVP字符串示例,其中包含BILLTOSTREET参数中的空格 .

  • “名称 - 值参数语法准则”部分说明“将NVP参数字符串括在引号中” . 这是指整个编码值串吗?我的POST主体应该如下所示,包括引号? “TRXTYPE = S&投标= C ...”

  • 它声称整个参数字符串应该用双引号括起来 .

回答(2)

2 years ago

根据我的经验,以下工作:

  • URL编码所有值(但不编码参数名称)

  • 没有引号,既不是 Value 也不是整个邮政机构

顺便说一句,我已经学会了不要把Paypal的(可怕的)文件太严肃,而是求助于试错,而且......

2 years ago

如果您使用的是常见的服务器端语言(php,ror,java,.net),并希望节省时间和精力,只需使用相应的PayPal SDK [2600550_