paypal - 使用 barclaycard 付款 epdq 创建别名 - 未知订单/1/s/

标签 paypal payment-gateway payment payment-services amazon-pay

下面是用于创建别名的代码,它不起作用并抛出错误 “未知订单/1/s/”。如果我删除 Alias 的代码,则相同的代码可用于付款。 不确定我错过了什么? 我可以登录 epdq barclaycard 帐户并看到“未知订单/1/s/”的错误。我也可以通过 epdq 帐户手动创建别名,但无法正常访问 orderstandard.asp 页面(当使用别名隐藏字段和代码时)。

如果有人能帮助我,我会很高兴。

<body>
<form id="OrderForm" action="https://payments.epdq.co.uk/ncol/prod/orderstandard.asp" method="post" runat="server">
    <div>
        <asp:HiddenField ID="AMOUNT" runat="server" />
        <asp:HiddenField ID="CN" runat="server" />
...
        <asp:HiddenField ID="ALIAS" runat="server" />
        <asp:HiddenField ID="ALIASUSAGE" runat="server" />
        <asp:HiddenField ID="ALIASOPERATION" runat="server" />
        <asp:HiddenField ID="SHASign" runat="server" />



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Text; //for Encoding
using System.Security.Cryptography; //for SHA1



    public partial class _DefaultAliasTest : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //-- Set Values (these would be pulled from DB or a previous page). -- //
            bool isAlias = true;
            //- Customer/Order Details - //
            string strUserTitle = "Mr";                         // Customer details
            string strUserFirstname = "Edward";
            string strUserSurname = "Shopper";
            string strBillHouseNumber = "123";                  // Address Details
            string strAd1 = "Penny Lane";
            string strAd2 = "Central Areas";
            string strBillTown = "Middlehampton";               // Bill Town
            string strBillCountry = "England";                  // Bill Country
            string strPcde = "NN4 7SG";                         // Postcode
            string strContactTel = "01604 567 890";             // Contact Telephone number
            string strShopperEmail = "test@test.com";  // shopper Email
            string strShopperLocale = "en_GB";                  // shopper locale
            string strCurrencyCode = "GBP";                     // CurrecncyCode

            string strAddressline1n2 = strBillHouseNumber + " " + strAd1 + ", " + strAd2;           // Concatenated Address eg 123 Penny Lane Central Areas
            string strCustomerName = strUserTitle + " " + strUserFirstname + " " + strUserSurname;  // Concatenated Customer Name eg Mr Edward Shopper

            string strPaymentAmount = "100";                    // This is 1 pound (100p)
            string strOrderDataRaw = "HDTV - AVTV3000";         // Order description
            string strOrderID = "ORD1234556Y";                  // Order Id     - **needs to be unique**

            //- integration user details - //
            string strPW = "xxxxxx!?";               // Update with the details you entered into back office
            string strPSPID = "epdqxxxxxxx";                      // update with the details of the PSPID you were supplied with


            //- payment design options - '//
            string strTXTCOLOR = "#005588";                             // Page Text Colour
            string strTBLTXTCOLOR = "#005588";                          // Table Text Colour
            string strFONTTYPE = "Helvetica, Arial";                    // fonttype
            string strBUTTONTXTCOLOR = "#005588";                       // Button Text Colour
            string strBGCOLOR = "#d1ecf3";                              // Page Background Colour
            string strTBLBGCOLOR = "#ffffff";                           // Table BG Colour
            string strBUTTONBGCOLOR = "#cccccc";                        // Button Colour
            string strTITLE = "Testing - Secure Payment Page";    // Title
            string strLOGO = "https://www.site.com/logo.png";    // logo location
            string strPMLISTTYPE = "1";                                 // Payment Method List type

            string strALIAS = System.Guid.NewGuid().ToString();
            string strALIASUSAGE = "usage";                                 // ALIAS USAGE
            string strALIASOPERATION = "BYMERCHANT";                                 // ALIAS Operation

            //= create string to hash (digest) using values of options/details above. MUST be in field alphabetical order!
            string plainDigest =
            "AMOUNT=" + strPaymentAmount + strPW +
            "BGCOLOR=" + strBGCOLOR + strPW +
            "BUTTONBGCOLOR=" + strBUTTONBGCOLOR + strPW +
            "BUTTONTXTCOLOR=" + strBUTTONTXTCOLOR + strPW +
            "CN=" + strCustomerName + strPW +
            "COM=" + strOrderDataRaw + strPW +
            "CURRENCY=" + strCurrencyCode + strPW +
            "EMAIL=" + strShopperEmail + strPW +
            "FONTTYPE=" + strFONTTYPE + strPW +
            "LANGUAGE=" + strShopperLocale + strPW +
            "LOGO=" + strLOGO + strPW +
            "ORDERID=" + strOrderID + strPW +
            "OWNERADDRESS=" + strAddressline1n2 + strPW +
            "OWNERCTY=" + strBillCountry + strPW +
            "OWNERTELNO=" + strContactTel + strPW +
            "OWNERTOWN=" + strBillTown + strPW +
            "OWNERZIP=" + strPcde + strPW +
            "PMLISTTYPE=" + strPMLISTTYPE + strPW +
            "PSPID=" + strPSPID + strPW +
            "TBLBGCOLOR=" + strTBLBGCOLOR + strPW +
            "TBLTXTCOLOR=" + strTBLTXTCOLOR + strPW +
            "TITLE=" + strTITLE + strPW +
            "TXTCOLOR=" + strTXTCOLOR + strPW +
            "";

            if (isAlias)
            {
                plainDigest =
                plainDigest +
                "ALIAS=" + strALIAS + strPW +
                "ALIASUSAGE=" + strALIASUSAGE + strPW +
                "ALIASOPERATION=" + strALIASOPERATION + strPW +
                "";
            }

            //Payment
            //-- insert payment details into hidden fields -- //
            AMOUNT.Value = strPaymentAmount;            // PaymentAmmount : (100 pence)
            CN.Value = strCustomerName;                 // Customer Name
            COM.Value = strOrderDataRaw;                // OrderDataRaw (order description)
            CURRENCY.Value = strCurrencyCode;           // CurrecncyCode
            EMAIL.Value = strShopperEmail;              // shopper Email
            FONTTYPE.Value = strFONTTYPE;               // fonttype
            LANGUAGE.Value = strShopperLocale;          // shopper locale
            LOGO.Value = strLOGO;                       // logo location
            ORDERID.Value = strOrderID;                 // *this ORDER ID*
            OWNERADDRESS.Value = strAddressline1n2;     // AddressLine2
            OWNERCTY.Value = strBillCountry;            // Bill Country
            OWNERTELNO.Value = strContactTel;           // Contact Telephone number
            OWNERTOWN.Value = strBillTown;              // Bill Town
            OWNERZIP.Value = strPcde;                   // Postcode
            PMLISTTYPE.Value = strPMLISTTYPE;           // Payment Method List type
            PSPID.Value = strPSPID;                     // *Your PSPID*
            BGCOLOR.Value = strBGCOLOR;                 // Page Background Colour
            BUTTONBGCOLOR.Value = strBUTTONBGCOLOR;     // Button Colour
            BUTTONTXTCOLOR.Value = strBUTTONTXTCOLOR;   // Button Text Colour
            TBLBGCOLOR.Value = strTBLBGCOLOR;           // Table BG Colour
            TBLTXTCOLOR.Value = strTBLTXTCOLOR;         // Table Text Colour
            TITLE.Value = strTITLE;                     // Title
            TXTCOLOR.Value = strTXTCOLOR;               // Page Text Colour

            if (isAlias)
            {
                ALIAS.Value = strALIAS;
                ALIASUSAGE.Value = strALIASUSAGE;
                ALIASOPERATION.Value = strALIASOPERATION;
            }

            SHASign.Value = SHA1HashData(plainDigest);  // Hashed String of plain digest put into sha sign using SHA1HashData function

        }

    }

最佳答案

我通过 Barclaycard epdq 的客户服务找到了问题的答案。我希望这对其他人有帮助。对我来说,答案是在下面的粗体中选择的点。

请参阅下面有关如何纠正错误“未知订单/1/s/”的详细信息:

此错误表明当您将客户从您的网站重定向到 ePDQ 托管支付页面时,ePDQ 无法解密与客户一起发送的 SHASIGN HTML 表单值。

此错误的典型原因是:

• 在 ePDQ 后台配置的 SHA-IN 密码值与您用于加密创建 SHASIGN 参数的交易数据的值不匹配(另请确保您将交易发送到正确的 ePDQ 环境 – TEST 或制作)

• 您在服务器端代码中计算 SHASIGN 时没有按字母顺序排列参数

• 您没有正确声明一些参数——所有参数和值都区分大小写(所有参数名称必须大写)

• 您设置的哈希算法值与服务器端脚本中使用的 SHA 方法不同(例如,您在 ePDQ 后台技术信息设置中配置了 SHA-256,但使用的是 SHA-1加密过程中的方法)。

• 您已在 HTML 表单中传递了未包含在 SHA-IN 计算中的其他参数/​​值对

有关更多信息,请参阅位于支持 –> 集成和用户手册下的 ePDQ 后台的基本和高级电子商务集成指南。

关于paypal - 使用 barclaycard 付款 epdq 创建别名 - 未知订单/1/s/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24868067/

相关文章:

spring - 我必须在我的应用程序中做什么才能接收付款? (java - Spring )

android - 第三方支付整合

php - Magento 2 : How to change Payment Action Method on the fly in Paypal Express

php - PayPal证书升级&加密网站支付

scala - com.paypal.core.rest.PayPalRESTException :Read timed out

encoding - www.paypal.com/jp/cgi-bin/webscr? item_name 编码

PHP Paypal API : How to Capture Authorized Payment Partially?

php - Paypal 付款给多个收款人。自适应支付?

paypal - 订购少于 2 件商品时,如何在 PayPal 中指定管理费?

php - Laravel Omnipay - transactionReference 参数是必需的