Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Dart POST表单url编码正文_Flutter_Dart_Post_Stripe Payments - Fatal编程技术网

Flutter Dart POST表单url编码正文

Flutter Dart POST表单url编码正文,flutter,dart,post,stripe-payments,Flutter,Dart,Post,Stripe Payments,需要发布此嵌套结构 Map<String, dynamic> body = { 'amount': amount, 'currency': currency, 'description' : description, 'payment_method_types[]': 'card', 'shipping': json.encode({ 'name':'some name', 'ad

需要发布此嵌套结构

Map<String, dynamic> body = {
    'amount': amount,
    'currency': currency,
    'description' : description,
    'payment_method_types[]': 'card',
    'shipping': json.encode({
                'name':'some name',
                'address':{
                            'city':'some city',
                            'country':'some country',
                          },
                })

  };

  var response = await http.post(
      StripeService.paymentApiUrl,
      body: body,
      headers: StripeService.headers
  );
  return jsonDecode(response.body);
日志中的数据显示

{
  "amount": "500",
  "currency": "USD",
  "description": "payment for xxxx",
  "payment_method_types": [
    "card"
  ],
  "shipping": "{\"name\":\"some name\",\"address\":{\"city\":\"some city\",\"country\":\"some country\"}}"
}

您也尝试了映射。

您需要对post模型的主体进行编码。试试这个:


Map<String, dynamic> body = {
    'amount': amount,
    'currency': currency,
    'description' : description,
    'payment_method_types[]': 'card',
    'shipping': {
                'name':'some name',
                'address':{
                            'city':'some city',
                            'country':'some country',
                          },
                }

  };

  var response = await http.post(
      StripeService.paymentApiUrl,
      body: jsonEncode(body), // Encode only the total of post model 
      headers: StripeService.headers
  );


地图正文={
“金额”:金额,
“货币”:货币,
“描述”:描述,
“付款方式类型[]”:“卡”,
‘航运’:{
“名字”:“某个名字”,
“地址”:{
‘城市’:‘某个城市’,
‘国家’:‘某个国家’,
},
}
};
var response=wait http.post(
StripeService.paymentApiUrl,
body:jsonEncode(body),//只编码post模型的总数
标题:StripeService.headers
);
试试看

因为我认为编码有问题。按照文档进行操作

您是否尝试过以下方法:

Map<String, dynamic> body = {
    'amount': amount,
    'currency': currency,
    'description' : description,
    'payment_method_types[]': 'card',
    'shipping[name]': 'some name',
    'shipping[address][city]': 'some city',
    'shipping[address][country]': 'some country',
  };
映射体={
“金额”:金额,
“货币”:货币,
“描述”:描述,
“付款方式类型[]”:“卡”,
“shipping[名称]”:“some name”,
"航运(地址)(城市):"某城市",,
“发货[地址][国家]:“某个国家”,
};

请将
json.encode
替换为。另外,在
地址
对象放在
{
@ikerfah之前尝试了这一点,得到的错误是“type'\u InternalLinkedHashMap'不是type cast中“String”类型的子类型“你能给我发一个新代码来检查一下吗?@ikerfah Map body={'amount':金额,'currency':货币,'description':描述,'payment_method_types[]:'card','shipping':{'name':'some name','address':{'city':'some city','country':'some country',};您是否注意到有
'
'
,您是否可以检查这只是复制粘贴问题,或者您真的在这样使用它?不起作用,它将请求格式化,这是输出,{{{amount:“500”,“currency:“USD”,“description:“neighbro事件发布的付款”,“付款方法类型”:[{”“:“card”配送:{“名称”:“shipAddress.name”,“地址”:{“城市”:“shipAddress.address.city”,“国家”:“shipAddress.address.country”,“第1行”:“shipAddress.address.line1”,“第2行”:“shipAddress.address.line2”,“名称”:“shipAddress.address.name”,“postalCode”:“shipAddress.address.postalCode”,“州”:“shipAddress.address.state”}}}:null}]太棒了,为什么我错过了!!
: "{\"name\":\"$name\",\"address\":{\"city\":\"$city\",\"country\":\"$country\"}}"
Map<String, dynamic> body = {
    'amount': amount,
    'currency': currency,
    'description' : description,
    'payment_method_types[]': 'card',
    'shipping[name]': 'some name',
    'shipping[address][city]': 'some city',
    'shipping[address][country]': 'some country',
  };