-
Notifications
You must be signed in to change notification settings - Fork 0
/
klarna-woo-translator.php
81 lines (78 loc) · 3.1 KB
/
klarna-woo-translator.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
class KlarnaWooTranslator
{
function GetWCLineItemsFromKlarnaOrder($klarnaOrder)
{
$newlineitems = array();
foreach ($klarnaOrder->order_lines as $orderline) {
if ($orderline->type != "shipping_fee") {
$newline = array(
"name" => $orderline->name,
"product_id" => json_decode($orderline->merchant_data)->prod_id,
"quantity" => $orderline->quantity,
"price" => (float)($orderline->unit_price / 100),
"sku" => $orderline->reference
);
if (json_decode($orderline->merchant_data)->variation_id) {
$newline["variation_id"] = json_decode($orderline->merchant_data)->variation_id;
}
$newlineitems[] = $newline;
}
}
return $newlineitems;
}
function GetWCShippingLinesFromKlarnaOrder($klarnaOrder)
{
$newlineitems = array();
foreach ($klarnaOrder->order_lines as $orderline) {
if ($orderline->type == "shipping_fee") {
$newlineitems[] = array(
"name" => $orderline->name,
"quantity" => $orderline->quantity,
"price" => (float)($orderline->unit_price / 100) - (float)($orderline->total_tax_amount / 100),
"instance_id" => $orderline->reference
);
}
}
return $newlineitems[0];
}
function ConvertWCOrderLineToKlarna($orderlines)
{
foreach ($orderlines as $cartitem) {
$price = (int)$cartitem["price"] * 100;
$vat = $price / 5;
$klarnaOrderLines[] = [
"type" => "physical",
"reference" => $cartitem["sku"],
"name" => $cartitem["name"],
"quantity" => $cartitem["quantity"],
"quantity_unit" => "pc",
"unit_price" => $price,
"tax_rate" => 2500,
"total_amount" => $price * $cartitem["quantity"],
"total_tax_amount" => $vat * $cartitem["quantity"],
"merchant_data" => json_encode(
[
"prod_id" => $cartitem["product_id"],
"variation_id" => $cartitem["variation_id"]
]
)
];
};
return $klarnaOrderLines;
}
function GetWooAdressFromKlarnaOrder($klarnaOrder)
{
$adress = array(
'first_name' => $klarnaOrder->billing_address->given_name,
'last_name' => $klarnaOrder->billing_address->family_name,
'email' => $klarnaOrder->billing_address->email,
'phone' => $klarnaOrder->billing_address->phone,
'address_1' => $klarnaOrder->billing_address->street_address,
'city' => $klarnaOrder->billing_address->city,
'postcode' => $klarnaOrder->billing_address->postal_code,
'country' => $klarnaOrder->billing_address->country,
);
return $adress;
}
}