C# PayPal加密按钮电子邮件地址错误

C# PayPal加密按钮电子邮件地址错误,c#,paypal,paypal-sandbox,C#,Paypal,Paypal Sandbox,我正在对我们网站上的PayPal按钮进行加密,我将一些示例代码从Java转换为C#,当我在测试网站上使用这些代码时,我们从PayPal得到以下错误: 我们的守则是: string data = "our hosted button parameters"; AsymmetricKeyParameter myKey = readPrivateKey("mma-prvkey.pem"); //2. Read certificate X509 X509Certificate myCert = X5

我正在对我们网站上的PayPal按钮进行加密,我将一些示例代码从Java转换为C#,当我在测试网站上使用这些代码时,我们从PayPal得到以下错误:

我们的守则是:

string data = "our hosted button parameters";
AsymmetricKeyParameter myKey = readPrivateKey("mma-prvkey.pem");

//2. Read certificate X509
X509Certificate myCert = X509Certificate.CreateFromCertFile("mma-pubcert.pem");
Org.BouncyCastle.X509.X509Certificate bcCert = DotNetUtilities.FromX509Certificate(myCert);

//3. Read paypal cert
X509Certificate orgPaypalCert = X509Certificate.CreateFromCertFile("paypal_cert.pem");
Org.BouncyCastle.X509.X509Certificate paypalCert = DotNetUtilities.FromX509Certificate(orgPaypalCert);

//4. Create generator
CmsSignedDataGenerator signedGenerator = new CmsSignedDataGenerator();
signedGenerator.AddSigner(myKey, bcCert, CmsSignedGenerator.DigestSha1);

//5. Add cert store
ArrayList certList = new ArrayList();
certList.Add(bcCert);
IX509Store certStore = X509StoreFactory.Create("Certificate/Collection", new 
X509CollectionStoreParameters(certList));
signedGenerator.AddCertificates(certStore);
//Create data byte array
byte[] dataToBytes = Encoding.UTF8.GetBytes(data);
CmsProcessableByteArray cmsByteArray = new CmsProcessableByteArray(dataToBytes);

CmsSignedData signedData = signedGenerator.Generate(cmsByteArray, true);
byte[] signed = signedData.GetEncoded();

//6. Create Envelope with PayPal cert
CmsEnvelopedDataGenerator envGenerator = new CmsEnvelopedDataGenerator();
envGenerator.AddKeyTransRecipient(paypalCert);
CmsEnvelopedData envData = envGenerator.Generate(new CmsProcessableByteArray(signed), CmsEnvelopedDataGenerator.DesEde3Cbc);

byte[] pkcs7Bytes = envData.GetEncoded();

//7. return encryptedfile
var base64Data = Convert.ToBase64String(pkcs7Bytes);
File.WriteAllText(@"C:\Users\xxxx\Desktop\signed.xml", base64Data);
我不明白的是贝宝怎么知道我们是谁?我们的证书id位于加密数据中,html中似乎没有任何识别标记:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" target="_top">
    <input type="hidden" name="cmd" value="_xclick-subscriptions">
    <input type="hidden" name="encrypted" value="MIAGCSqGSIb3DQEHA6CAMIACAQAxggE6MIIBNgIBADCBnjC_redacted_data_AAAAAAAAAAAAA=">
    <input id="confirmNextGold" name="submit" style="display:none;" type="submit" value="Confirm Upgrade" class="widerButton" />
    <img alt="" border="0" src="https://www.sandbox.paypal.com/en_AU/i/scr/pixel.gif" width="1" height="1">
</form>


如有任何帮助,将不胜感激。

未加密的按钮是否有效?可能只是你帐户上的电子邮件地址有问题。是的,它们在未加密的情况下工作正常。这里有一个类似的问题,但没有答案: