在c#中生成PayPal认证头的签名

本文关键字:认证 PayPal | 更新日期: 2023-09-27 18:11:43

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

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

我正在使用c# . net发票SDK与发票服务API进行通信。

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

RequestEnvelope envelopeRequest = new RequestEnvelope();
envelopeRequest.errorLanguage = "en_GB";
List<InvoiceItemType> invoiceItemList = new List<InvoiceItemType>();
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);

在c#中生成PayPal认证头的签名

在黑暗中摸索了一段时间后,我发现。net Invoicing SDK负责创建头文件。InvoiceService有两个方法,它们将令牌和密钥分配给消息头。详情见下文

RequestEnvelope envelopeRequest = new RequestEnvelope();
envelopeRequest.errorLanguage = "en_GB";
List<InvoiceItemType> invoiceItemList = new List<InvoiceItemType>();
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<string, string> list = new Dictionary<string, string>();
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);