在C#中为PayPal身份validation标头生成签名

我的目标是代表第三方商家向另一个PayPal帐户发送发票。 我正在使用权限服务来成功获取权限,从而产生访问令牌和相关秘密。

但是,我不明白在创建/发送发票时如何使用访问令牌和相关秘密来构建标头。

我正在使用C#.NET Invoicing SDK与Invoicing Service API进行通信。

这是我用来创建和发送发票的代码。

RequestEnvelope envelopeRequest = new RequestEnvelope(); envelopeRequest.errorLanguage = "en_GB"; List invoiceItemList = new List(); InvoiceItemType invoiceItem = new InvoiceItemType("Item", Convert.ToDecimal("2"), Convert.ToDecimal("4.00")); invoiceItemList.Add(invoiceItem); InvoiceItemListType itemList = new InvoiceItemListType(invoiceItemList); InvoiceType invoice = new InvoiceType("jb-us-seller@paypal.com", "jbui-us-personal1@paypal.com", itemList, "USD"); CreateAndSendInvoiceRequest requestCreateAndSendInvoice = new CreateAndSendInvoiceRequest(envelopeRequest, invoice); InvoiceService service = new InvoiceService(); responseCreateAndSendInvoice = service.CreateAndSendInvoice(requestCreateAndSendInvoice); 

在黑暗中磕磕绊绊了一段时间后,我发现.NET Invoicing SDK负责创建标题。 InvoiceService有两种方法可以将标记和密钥分配给标头。 请参阅下文了解详情。

 RequestEnvelope envelopeRequest = new RequestEnvelope(); envelopeRequest.errorLanguage = "en_GB"; List invoiceItemList = new List(); InvoiceItemType invoiceItem = new InvoiceItemType("Item", Convert.ToDecimal("2"), Convert.ToDecimal("4.00")); invoiceItemList.Add(invoiceItem); InvoiceItemListType itemList = new InvoiceItemListType(invoiceItemList); InvoiceType invoice = new InvoiceType("shop1@test.co.uk", "buyer1@gmail.com", itemList, "USD"); CreateAndSendInvoiceRequest requestCreateAndSendInvoice = new CreateAndSendInvoiceRequest(envelopeRequest, invoice); Dictionary list = new Dictionary(); list.Add("mode", "sandbox"); list.Add("account1.apiUsername", "contact-facilitator_api1.testdomain.com"); list.Add("account1.apiPassword", "xxxx"); list.Add("account1.apiSignature", "xxxx--xxx"); InvoiceService service = new InvoiceService(list); service.SetAccessToken(accessToken); service.SetAccessTokenSecret(secret); responseCreateAndSendInvoice = service.CreateAndSendInvoice(requestCreateAndSendInvoice);