微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Opayo API - 无法验证签名

如何解决Opayo API - 无法验证签名

我一直在尝试连接到 Opayo 'Reporting & Admin API' 并使用命令 'getTransactionDetail' (https://developer-eu.elavon.com/docs/opayo-reporting-api/reporting-commands/gettransactiondetail),但一直返回错误 0010,这表明 API 无法验证签名值.我们已经能够使用我们的供应商/用户名/密码组合登录,验证它们都是正确的。

我们在向 API 发送 POST 时使用的代码如下 - 出于安全目的,某些元素被屏蔽

using System;
using System.Collections.Specialized;
using System.Security.Cryptography;
using System.Text;
using System.Net;

public partial class test : System.Web.UI.Page
{
    protected void Page_Load(object sender,EventArgs e)
    {
        string signature = "<command>getTransactionDetail</command><vendor>[vendor]</vendor><user>[User]</user><vendortxcode>[vendorTXCode]</vendortxcode><password>[Password]</password>";

        using (MD5 md5 = MD5.Create())
        {
            byte[] inputBytes = Encoding.Unicode.GetBytes(signature);
            byte[] hashBytes = md5.ComputeHash(inputBytes);

            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < hashBytes.Length; i++)
            {
                sb.Append(hashBytes[i].ToString("X2"));
            }
            signature = sb.ToString();
        }

        string xmlToPost = "<vspaccess><command>getTransactionDetail</command><vendor>[vendor]</vendor><user>[User]</user><vendortxcode>[vendorTXCode]</vendortxcode><signature>" + signature + "</signature></vspaccess>";

        using (WebClient client = new WebClient())
        {
            client.BaseAddress = "https://test.sagepay.com";
            client.Headers.Add("Content-Type","application/x-www-form-urlencoded");
            client.Encoding = Encoding.UTF8;

            var content = new NameValueCollection()
            {
                { "XML",xmlToPost }
            };

            string response = Encoding.UTF8.GetString(client.UploadValues("/access/access.htm",content));
        }
    }
}

解决此问题的任何帮助将不胜感激!

解决方法

事实证明,由于我们使用 Forms 集成进行初始付款,因此我们不得不使用以下 API 文档:https://developer-eu.elavon.com/docs/opayo/spec/api-reference

更具体地说,这部分与重复有关:https://developer-eu.elavon.com/docs/opayo/spec/api-reference#operation/createTransaction

注意右侧的代码示例!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。