【问题标题】:PayPal Pay Operation - error 81002PayPal 支付操作 - 错误 81002
【发布时间】:2015-04-15 05:21:06
【问题描述】:

我不确定为什么这个 PayPal Pay 操作给我这个错误,即使我似乎已经涵盖了所有必填字段:

错误代码:81002 严重性:错误消息:未指定的方法(不支持指定的方法)”

string postData = JsonConvert.SerializeObject(request);

postData 的值:

"actionType=PAY
&currencyCode=USD
&cancelUrl=https%3a%2f%2fexample.com%2fcancel
&returnUrl=https%3a%2f%2fexample.com%2freturn
&requestenvelope.errorLanguage=en_US
&receiverList.receiver(0).email=recipientemail%40gmail.com
&receiverList.receiver(0).amount=0.05
&VERSION=94.0
&USER=bizemail-facilitator_api1.gmail.com
&PWD=xxxxx
&SIGNATURE=xxxxxxxxx"

我是这样发帖的:

 SendRequest("https://api-3t.sandbox.paypal.com/nvp", postData);

 public string SendRequest(string url, string postData) 
 {
        var uri = new Uri(url);
        var request = WebRequest.Create(uri);
        var encoding = new UTF8Encoding();
        var requestData = encoding.GetBytes(postData);

        request.ContentType = "application/x-www-form-urlencoded";
        request.Method = "POST";
        request.Timeout = (300*1000); //TODO: Move timeout to config
        request.ContentLength = requestData.Length;

        using (var stream = request.GetRequestStream()) {
            stream.Write(requestData, 0, requestData.Length);
        }

        var response = request.GetResponse();

        string result;

        using (var reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII)) {
            result = reader.ReadToEnd();
        }

        return result;
    }

【问题讨论】:

  • 如果对您有帮助,请接受答案,否则赏金将被浪费(您仍然会失去它)
  • 我还没有机会验证任何一个答案。如果你错了,我想我会给你赏金并奖励约翰额外的赏金。
  • 谢谢,我很感激 - 虽然我不能评论约翰的回答,因为我只使用过旧的 PayPal 支付标准,而不是新的 API,即使他在你的具体情况下是正确的,总的来说,我在技术上仍然是正确的(最好的正确)......所以,远非错误

标签: c# paypal paypal-sandbox


【解决方案1】:

方法PAY 在 NVP api 上不存在。可在 here 找到该 API 支持的方法的完整列表。

但是,PAY 方法是在 Adaptive Payments API 中定义的。根据您的需要,您有两种选择:

  • 将端点更改为https://svcs.paypal.com/AdaptivePayments/PAY 并修改您的值
  • 使用另一种方法,例如 DoDirectPayment,但我不确定它是否符合您的要求。

【讨论】:

【解决方案2】:

我假设 postData 的值是 before 您将其序列化为 JSON 字符串,而不是您所说的 after,因为它显然 不是 JSON 字符串。

如果是,那么它已经是x-www-form-urlencoded,你根本不需要将它序列化为JSON字符串。

或者如果你确实这样做了,那么就改变这个:request.ContentType = "application/json";

【讨论】:

  • 是的,这没有帮助,但这是我的错,因为我实际上没有使用 SerializeObject 我犯了一个错误,只将它放在问题中。真正的问题是像 JohnKiller 所说的 api 端点。
猜你喜欢
  • 1970-01-01
  • 2015-04-22
  • 2017-01-13
  • 2016-04-02
  • 2011-02-15
  • 2012-08-05
  • 2015-02-26
  • 2018-01-26
  • 2014-06-08
相关资源
最近更新 更多