restsharp如何添加键值对作为参数

本文关键字:键值对 参数 添加 何添加 restsharp | 更新日期: 2023-09-27 18:26:53

我正在尝试使用restsharp使用stripe.comapi,使用charge命令

https://stripe.com/docs/api/php#create_charge

有机会将元数据作为键值对传递,但我似乎没有成功

  const string baseUrl = "https://api.stripe.com/";
  const string endPoint = "v1/charges";
  var apiKey = this.SecretKey;
  var client = new RestClient(baseUrl) { Authenticator = new HttpBasicAuthenticator(apiKey, "") };
  var request = new RestRequest(endPoint, Method.POST);
  request.AddParameter("card", token);
  request.AddParameter("amount", wc.totalToPayForStripe);
  request.AddParameter("currency", "eur");
  request.AddParameter("description", wc.crt.cartid + " - " + wc.co.oid);
  request.AddParameter("metadata", "{cartid: " + wc.crt.cartid + ", oid: " + wc.co.oid + "}");
  request.AddParameter("statement_description", "# " + wc.crt.cartid);
  request.AddParameter("description", wc.crt.cartid + " - " + wc.co.oid);

总是得到以下错误:

Invalid metadata: metadata must be a set of key-value pairs

很明显,我没有按照应该的方式传递键值对,但我找不到任何关于这方面的restsharp文档。

有人能帮忙吗?

restsharp如何添加键值对作为参数

试试这个:

  const string baseUrl = "https://api.stripe.com/";
  const string endPoint = "v1/charges";
  var apiKey = this.SecretKey;
  var client = new RestClient(baseUrl) { Authenticator = new HttpBasicAuthenticator(apiKey, "") };
  var request = new RestRequest(endPoint, Method.POST);
  request.AddParameter("card", token);
  request.AddParameter("amount", wc.totalToPayForStripe);
  request.AddParameter("currency", "eur");
  request.AddParameter("description", wc.crt.cartid + " - " + wc.co.oid);
  request.AddParameter("metadata[cartid]", wc.crt.cartid);
  request.AddParameter("metadata[oid]", wc.co.oid);
  request.AddParameter("statement_description", "# " + wc.crt.cartid);
  request.AddParameter("description", wc.crt.cartid + " - " + wc.co.oid);

由于某些原因,HTTPPost请求不能接受键值对象,必须以这种格式发送。这不是条带限制,而是HTTP的一般限制。

我认为这是在告诉你这样输入它们:

request.AddParameter("metadata", "[ { cartid: " + wc.crt.cartid + "} ,{ oid: " + wc.co.oid + " }]" );