Skip to content

Commit e7a68b9

Browse files
agwoosignalagordn52
authored andcommitted
Merged in feature/WFA-5-api-refunds (pull request #8)
Feature/WFA-5 api refunds Approved-by: Anthony Gordon <ants52@aol.com>
2 parents ae6857e + 9247412 commit e7a68b9

File tree

2 files changed

+211
-0
lines changed

2 files changed

+211
-0
lines changed

lib/models/response/refund.dart

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
// To parse this JSON data, do
2+
//
3+
// final refund = refundFromJson(jsonString);
4+
5+
import 'dart:convert';
6+
7+
Refund refundFromJson(String str) => Refund.fromJson(json.decode(str));
8+
9+
String refundToJson(Refund data) => json.encode(data.toJson());
10+
11+
class Refund {
12+
Refund({
13+
this.id,
14+
this.dateCreated,
15+
this.dateCreatedGmt,
16+
this.amount,
17+
this.reason,
18+
this.refundedBy,
19+
this.refundedPayment,
20+
this.metaData,
21+
this.lineItems,
22+
this.links,
23+
});
24+
25+
int id;
26+
DateTime dateCreated;
27+
DateTime dateCreatedGmt;
28+
String amount;
29+
String reason;
30+
int refundedBy;
31+
bool refundedPayment;
32+
List<dynamic> metaData;
33+
List<dynamic> lineItems;
34+
Links links;
35+
36+
factory Refund.fromJson(Map<String, dynamic> json) => Refund(
37+
id: json["id"],
38+
dateCreated: DateTime.parse(json["date_created"]),
39+
dateCreatedGmt: DateTime.parse(json["date_created_gmt"]),
40+
amount: json["amount"],
41+
reason: json["reason"],
42+
refundedBy: json["refunded_by"],
43+
refundedPayment: json["refunded_payment"],
44+
metaData: List<dynamic>.from(json["meta_data"].map((x) => x)),
45+
lineItems: List<dynamic>.from(json["line_items"].map((x) => x)),
46+
links: Links.fromJson(json["_links"]),
47+
);
48+
49+
Map<String, dynamic> toJson() => {
50+
"id": id,
51+
"date_created": dateCreated.toIso8601String(),
52+
"date_created_gmt": dateCreatedGmt.toIso8601String(),
53+
"amount": amount,
54+
"reason": reason,
55+
"refunded_by": refundedBy,
56+
"refunded_payment": refundedPayment,
57+
"meta_data": List<dynamic>.from(metaData.map((x) => x)),
58+
"line_items": List<dynamic>.from(lineItems.map((x) => x)),
59+
"_links": links.toJson(),
60+
};
61+
}
62+
63+
class Links {
64+
Links({
65+
this.self,
66+
this.collection,
67+
this.up,
68+
});
69+
70+
List<Collection> self;
71+
List<Collection> collection;
72+
List<Collection> up;
73+
74+
factory Links.fromJson(Map<String, dynamic> json) => Links(
75+
self: List<Collection>.from(
76+
json["self"].map((x) => Collection.fromJson(x))),
77+
collection: List<Collection>.from(
78+
json["collection"].map((x) => Collection.fromJson(x))),
79+
up: List<Collection>.from(
80+
json["up"].map((x) => Collection.fromJson(x))),
81+
);
82+
83+
Map<String, dynamic> toJson() => {
84+
"self": List<dynamic>.from(self.map((x) => x.toJson())),
85+
"collection": List<dynamic>.from(collection.map((x) => x.toJson())),
86+
"up": List<dynamic>.from(up.map((x) => x.toJson())),
87+
};
88+
}
89+
90+
class Collection {
91+
Collection({
92+
this.href,
93+
});
94+
95+
String href;
96+
97+
factory Collection.fromJson(Map<String, dynamic> json) => Collection(
98+
href: json["href"],
99+
);
100+
101+
Map<String, dynamic> toJson() => {
102+
"href": href,
103+
};
104+
}

lib/woosignal.dart

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ library woosignal;
1616
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
1717

1818
import 'package:flutter/cupertino.dart';
19+
import 'package:woosignal/models/response/refund.dart';
1920
import 'package:woosignal/models/response/order_notes.dart';
2021
import 'package:woosignal/models/response/coupon.dart';
2122
import 'package:woosignal/models/response/coupon_batch.dart';
@@ -490,6 +491,112 @@ class WooSignal {
490491
return customers;
491492
}
492493

494+
// https://woocommerce.github.io/woocommerce-rest-api-docs/?php#refunds
495+
//Refunds
496+
// Create a refund
497+
// This API helps you to create a new refund for an order.
498+
Future<Refund> createRefund({
499+
@required String amount,
500+
@required int orderId,
501+
}) async {
502+
Map<String, dynamic> payload = {};
503+
if (amount != null) payload['amount'] = amount;
504+
505+
_printLog(payload.toString());
506+
payload = _standardPayload(
507+
"post", payload, "orders/${orderId.toString()}/refunds");
508+
Refund refund;
509+
await _apiProvider.post("/request", payload).then((json) {
510+
refund = Refund.fromJson(json);
511+
});
512+
_printLog(refund.toString());
513+
return refund;
514+
}
515+
516+
// Retrieve a refund
517+
// This API lets you retrieve and view a specific refund from an order.
518+
Future<Refund> retrieveRefund({
519+
@required int orderId,
520+
@required int refundId,
521+
String dp,
522+
}) async {
523+
Map<String, dynamic> payload = {};
524+
if (dp != null) payload["dp"] = dp;
525+
_printLog("Parameters: " + payload.toString());
526+
payload = _standardPayload("get", payload,
527+
"orders/${orderId.toString()}/refunds/${refundId.toString()}");
528+
529+
Refund refund;
530+
await _apiProvider.post("/request", payload).then((json) {
531+
refund = Refund.fromJson(json);
532+
});
533+
_printLog(refund.toString());
534+
return refund;
535+
}
536+
537+
// List all refunds
538+
// This API helps you to view all the refunds from an order.
539+
Future<List<Refund>> getRefunds({
540+
String context,
541+
int page,
542+
int perPage,
543+
String search,
544+
String after,
545+
String before,
546+
List<int> exclude,
547+
List<int> include,
548+
int offset,
549+
String order,
550+
String orderby,
551+
List<int> parent,
552+
List<int> parentExclude,
553+
int dp
554+
}) async {
555+
Map<String, dynamic> payload = {};
556+
if (page != null) payload["page"] = page;
557+
if (perPage != null) payload["per_page"] = perPage;
558+
if (search != null) payload["search"] = search;
559+
if (after != null) payload["after"] = after;
560+
if (before != null) payload["before"] = before;
561+
if (exclude != null) payload["exclude"] = exclude;
562+
if (include != null) payload["include"] = include;
563+
if (offset != null) payload["include"] = offset;
564+
if (order != null) payload["order"] = order;
565+
if (orderby != null) payload["orderby"] = orderby;
566+
if (parent != null) payload["code"] = parent;
567+
if (parentExclude != null) payload["code"] = parentExclude;
568+
if (dp != null) payload["code"] = dp;
569+
570+
_printLog("Parameters: " + payload.toString());
571+
payload = _standardPayload(
572+
"get", payload, "orders/${orderId.toString()}/refunds");
573+
574+
List<Refund> refunds = [];
575+
await _apiProvider.post("/request", payload).then((json) {
576+
refunds = (json as List).map((i) => Refund.fromJson(i)).toList();
577+
});
578+
_printLog(refunds.toString());
579+
return refunds;
580+
}
581+
582+
// Delete a refund
583+
// This API helps you delete an order refund.
584+
Future<Refund> deleteRefund({
585+
@required int orderId,
586+
@required int refundId,
587+
}) async {
588+
Map<String, dynamic> payload = {};
589+
payload = _standardPayload("delete", payload,
590+
"orders/${orderId.toString()}/refunds/${refundId.toString()}");
591+
592+
Refund refund;
593+
await _apiProvider.post("/request", payload).then((json) {
594+
refund = Refund.fromJson(json);
595+
});
596+
_printLog(refund.toString());
597+
return refund;
598+
}
599+
493600
/// https://woosignal.com/docs/api/1.0/orders
494601
Future<List<Order>> getOrders(
495602
{int page,

0 commit comments

Comments
 (0)