Skip to content

Commit 7f8c56e

Browse files
authored
Merge pull request #22 from codemascot/f/13/refunds
FIX #13
2 parents f5f7f14 + 0123e40 commit 7f8c56e

File tree

3 files changed

+122
-0
lines changed

3 files changed

+122
-0
lines changed

src/wc_api_clj/v3/order_refunds.clj

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
(ns wc-api-clj.v3.order-refunds
2+
"Helper functions to communicate with the WooCommerce REST API's order refund endpoints.
3+
These functions need authentication by `consumer_key` and `consumer_secret`.</br>
4+
https://woocommerce.github.io/woocommerce-rest-api-docs/#order-refunds"
5+
(:require [wc-api-clj.core :as woo]
6+
[wc-api-clj.util :as util]))
7+
8+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9+
;; Order Refunds REST API v3 wrapper functions ;;
10+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
11+
12+
(defn create-order-refund
13+
"Create an order refund."
14+
[{:keys [url consumer_key consumer_secret order api_refund body exception insecure]}]
15+
(try (woo/post-req {:siteurl url
16+
:uri (str "/wp-json/wc/v3/orders/" order "/refunds" (util/edn-to-query-str {:api_refund api_refund}))
17+
:username consumer_key
18+
:password consumer_secret
19+
:body body
20+
:exception (not (not exception))
21+
:insecure (not (not insecure))})
22+
(catch clojure.lang.ExceptionInfo e (str (.getMessage e)))))
23+
24+
(defn get-order-refund-by-id
25+
"Retrieve an order refund by the order and refund ID."
26+
[{:keys [url consumer_key consumer_secret order refund exception insecure]}]
27+
(try (woo/get-req {:siteurl url
28+
:uri (str "/wp-json/wc/v3/orders/" order "/refunds/" refund)
29+
:username consumer_key
30+
:password consumer_secret
31+
:exception (not (not exception))
32+
:insecure (not (not insecure))})
33+
(catch clojure.lang.ExceptionInfo e (str (.getMessage e)))))
34+
35+
(defn get-order-refunds
36+
"Retrieve all order refunds."
37+
[{:keys [url consumer_key consumer_secret order exception insecure]}]
38+
(try (woo/get-req {:siteurl url
39+
:uri (str "/wp-json/wc/v3/orders/" order "/refunds")
40+
:username consumer_key
41+
:password consumer_secret
42+
:exception (not (not exception))
43+
:insecure (not (not insecure))})
44+
(catch clojure.lang.ExceptionInfo e (str (.getMessage e)))))
45+
46+
(defn delete-order-refund-by-id
47+
"Delete an order by the order and refund ID."
48+
[{:keys [url consumer_key consumer_secret order refund exception insecure]}]
49+
(try (woo/delete-req {:siteurl url
50+
:uri (str "/wp-json/wc/v3/orders/" order "/refunds/" refund (util/edn-to-query-str {:force true}))
51+
:username consumer_key
52+
:password consumer_secret
53+
:exception (not (not exception))
54+
:insecure (not (not insecure))})
55+
(catch clojure.lang.ExceptionInfo e (str (.getMessage e)))))

test/wc_api_clj/core_test.clj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
:shipping_lines [{:method_id "flat_rate"
4848
:method_title "Flat Rate"
4949
:total "10.00"}]}
50+
:refund_to_create {:amount "5"}
5051
:ckr "ck_86e637eef49ca8f2c864ad7b84dc17b0a7b78750"
5152
:csr "cs_0890a046f5b9a30825970a65d8ab8e9c7fa0deb6"
5253
:ckw "ck_469b67ce2e12bd1a1b290abf4b1c108e61b4f71c"
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
(ns wc-api-clj.v3.order-refunds-test
2+
(:require [clojure.test :refer :all]
3+
[wc-api-clj.v3.orders :refer :all]
4+
[wc-api-clj.v3.order-refunds :refer :all]
5+
[wc-api-clj.core-test :refer [credentials]]
6+
[clojure.data.json :as json]))
7+
8+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9+
;; Test for v3/order-refunds API ;;
10+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
11+
12+
(deftest order-refund-v3-api-create-read-delete-success-test
13+
(testing "Testing order-refund v3 API for create, read and delete."
14+
(let [order (-> {:url (:siteurl credentials)
15+
:consumer_key (:ckw credentials)
16+
:consumer_secret (:csw credentials)
17+
:exception false
18+
:insecure true
19+
:body (json/write-str (:order_to_create credentials))}
20+
(create-order))]
21+
(is (< 0 (:id order)))
22+
(let [refund (-> {:url (:siteurl credentials)
23+
:consumer_key (:ckw credentials)
24+
:consumer_secret (:csw credentials)
25+
:exception false
26+
:order (:id order)
27+
:api_refund false
28+
:insecure true
29+
:body (json/write-str {:refund_to_create credentials})}
30+
create-order-refund)]
31+
(is (< 0 (:id refund)))
32+
(is (< 0 (-> {:url (:siteurl credentials)
33+
:consumer_key (:ckr credentials)
34+
:consumer_secret (:csr credentials)
35+
:order (:id order)
36+
:exception false
37+
:insecure true}
38+
get-order-refunds
39+
first
40+
:id)))
41+
(is (= (:id refund) (-> {:url (:siteurl credentials)
42+
:consumer_key (:ckr credentials)
43+
:consumer_secret (:csr credentials)
44+
:order (:id order)
45+
:refund (:id refund)
46+
:exception false
47+
:insecure true}
48+
get-order-refund-by-id
49+
:id)))
50+
(is (= (:id refund) (-> {:url (:siteurl credentials)
51+
:consumer_key (:ckw credentials)
52+
:consumer_secret (:csw credentials)
53+
:order (:id order)
54+
:refund (:id refund)
55+
:exception false
56+
:insecure true}
57+
delete-order-refund-by-id
58+
:id))))
59+
(is (= (:id order) (-> {:url (:siteurl credentials)
60+
:consumer_key (:ckw credentials)
61+
:consumer_secret (:csw credentials)
62+
:order (:id order)
63+
:exception false
64+
:insecure true}
65+
delete-order-by-id
66+
:id))))))

0 commit comments

Comments
 (0)