【发布时间】:2014-04-30 14:12:22
【问题描述】:
我正在尝试使用 Sagepay Server API 执行交易。我已经通过模拟器供应商帐户正确设置并添加了 IP 地址。我仍然收到以下错误
Sage Pay 返回了 MALFORMED 状态。 POST 格式错误,因为“模拟器找不到您的供应商名称。请确保您提供了一个供应商字段,并为其分配了您的供应商名称。”
这是我的 POST 请求数据
[VPSProtocol] => 2.23
[TxType] => PAYMENT
[Currency] => GBP
[Vendor] => curiouslabx
[NotificationUrl] => http://localhost:8080/numberplate/sagepay_notification
[Description] => Purchase of number plate AU59STG
[AllowGiftAid] => 0
[ApplyAVSCV2] => 0
[Apply3DSecure] => 0
[Profile] => NORMAL
[AccountType] => E
[Amount] => 700.00
[success_url] => http://localhost:8080/numberplate/payment/payment_status/success/
[failure_url] => http://localhost:8080/numberplate/payment/payment_status/failure/
[BillingFirstnames] => test
[BillingSurname] => test
[BillingAddress1] => test
[BillingAddress2] => test
[BillingCity] => testtest
[BillingPostCode] => test
[BillingCountry] => test
[BillingState] => test
[BillingPhone] => test
[DeliveryFirstnames] => test
[DeliverySurname] => test
[DeliveryAddress1] => test
[DeliveryAddress2] => test
[DeliveryCity] => testtest
[DeliveryPostCode] => test
[DeliveryCountry] => test
[DeliveryState] => test
[DeliveryPhone] => test
[VendorTxCode] => 14-04-30-20-10-53-572086512
我正在为 codeigniter https://github.com/ollierattue/codeigniter-sagepay-server/ 使用 sagepay 服务器库
【问题讨论】:
-
我可以看到交易正在使用 FORM(昨天/今天)到达您的模拟器帐户。您的供应商名称在模拟器中有效。确保您使用的是正确的 SimulatorURL test.sagepay.com/Simulator/… 如果没有生成的模拟器帐户供应商名称不正确,则会收到错误消息。
-
相同的供应商名称适用于 FORM 但不适用于 SERVER!
-
使用服务器 SuccessURL,FailureURL 不适用(仅限 FORM),因为当我们通过通知 URL 响应时,您将在该阶段在您的确认帖子中提供 RedirectURL。 BillingState/DeliveryState 应为 2 个字符(ISO 代码)。需要是一个 https post 请求,发送到初始 Sage Pay Payment URL(如上)。详细信息应编码为 Name=Value 字段并用“&”字符分隔。还要确保每个字段的大小写正确。如果未找到供应商名称,请向 Sage Pay 发送 ShowPost。将支付/交易注册 URL 更改为 Showpost URL。我们将能够>
-
>> 查看您发送的内容。 Showpost URL 是test.sagepay.com/showpost/showpost.asp 好像我们无法识别供应商名称,并且选中后,您在 Simulator 帐户的帐户设置中勾选了服务器,您应该能够发布成功的服务器集成(只要您将其发送到与我们在协议指南中推荐的顺序相同。尝试 VPSProtocol,然后是 TxType,然后是 Vendor,然后是 VendorTxCode 等等......)。确保您的 IP 已添加到 Simulator 帐户,并且端口 443 和 80 也已打开,以便稍后在集成过程中使用。
-
确保发送正确的
Content-Type标头:application/x-www-form-urlencoded。放入 POST 正文的数据数组必须经过 URL 编码。报错经常表示网关根本无法解析POST body,所以POST整体有问题。
标签: opayo