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
82
83
84
85
86
87
88
89
90
91
92
93
|
<?php
/**
* Return a contract proposition to forward to the backend
* Note that `teatax` is an associative array representing a
* Taler-style amount (so it has the usual <amount,fration,currency>
* triple). Moreover, `teatax` should be a *list* of taxes
*/
function generate_contract($amount_value,
$amount_fraction,
$currency,
$transaction_id,
$desc,
$p_id,
$corr_id,
$taxes,
$now,
$fulfillment_url){
include("../frontend_lib/config.php");
file_put_contents("/tmp/ddd", $REFUND_DELTA);
$contract = array ('amount' => array ('value' => $amount_value,
'fraction' => $amount_fraction,
'currency' => $currency),
'max_fee' => array ('value' => 3,
'fraction' => 01010,
'currency' => $currency),
'transaction_id' => $transaction_id,
'products' => array (
array ('description' => $desc,
'quantity' => 1,
'price' => array ('value' => $amount_value,
'fraction' => $amount_fraction,
'currency' => $currency),
'product_id' => $p_id,
'taxes' => $taxes,
'delivery_date' => "Some Date Format",
'delivery_location' => 'LNAME1')),
'timestamp' => "/Date(" . $now->getTimestamp() . ")/",
'expiry' => "/Date(" . $now->add(new DateInterval('P2W'))->getTimestamp() . ")/",
'refund_deadline' => "/Date(" . $now->add(new DateInterval($REFUND_DELTA))->getTimestamp() . ")/",
'repurchase_correlation_id' => $corr_id,
'fulfillment_url' => $fulfillment_url,
'merchant' => array ('address' => 'LNAME2',
'name' => 'test merchant',
'jurisdiction' => 'LNAME3'),
'locations' => array ('LNAME1' => array ('country' => 'Test Country',
'city' => 'Test City',
'state' => 'Test State',
'region' => 'Test Region',
'province' => 'Test Province',
'ZIP code' => 4908,
'street' => 'test street',
'street number' => 20),
'LNAME2' => array ('country' => 'Test Country',
'city' => 'Test City',
'state' => 'Test State',
'region' => 'Test Region',
'province' => 'Test Province',
'ZIP code' => 4908,
'street' => 'test street',
'street number' => 20),
'LNAME3' => array ('country' => 'Test Country',
'city' => 'Test City',
'state' => 'Test State',
'region' => 'Test Region',
'province' => 'Test Province',
'ZIP code' => 4908)));
$json = json_encode (array ('contract' => $contract), JSON_PRETTY_PRINT);
return $json;
}
/**
* Feed `$json` to the backend and return the "(pecl) http response object"
* corresponding to the `$backend_relative_url` call
*/
function give_to_backend($backend_host, $backend_relative_url, $json){
$url = (new http\URL("http://$backend_host"))
->mod(array ("path" => $backend_relative_url), http\Url::JOIN_PATH);
$req = new http\Client\Request("POST",
$url,
array ("Content-Type" => "application/json"));
$req->getBody()->append($json);
// Execute the HTTP request
$client = new http\Client;
$client->enqueue($req)->send();
return $client->getResponse();
}
?>
|