summaryrefslogtreecommitdiff
path: root/copylib/merchants.php
blob: a0951f428f92e4acd40dfeed494ce961a4555d58 (plain)
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
94
95
96
97
98
99
100
101
102
103
104
105
<?php
/*
  This file is part of GNU TALER.
  Copyright (C) 2014, 2015 INRIA

  TALER is free software; you can redistribute it and/or modify it under the
  terms of the GNU Lesser General Public License as published by the Free Software
  Foundation; either version 2.1, or (at your option) any later version.

  TALER is distributed in the hope that it will be useful, but WITHOUT ANY
  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
  A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public License along with
  TALER; see the file COPYING.  If not, If not, see <http://www.gnu.org/licenses/>
*/

/**
 * 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($args){
  $contract = array ('amount' =>
                array ('value' => $args['amount_value'],
  		       'fraction' => $args['amount_fraction'],
                       'currency' => $args['currency']),
  		'max_fee' =>
		  array ('value' => 3,
  		         'fraction' => 01010,
  		         'currency' => $args['currency']),
                'transaction_id' => $args['transaction_id'],
                'products' => array (
  		   array ('description' => $args['description'],
  		          'quantity' => 1,
  		          'price' =>
			    array ('value' => $args['amount_value'],
  			           'fraction' => $args['amount_fraction'],
                                   'currency' => $args['currency']),
  		          'product_id' => $args['product_id'],
  		          'taxes' => $args['taxes'],
  		          'delivery_date' => "Some Date Format",
  		          'delivery_location' => 'LNAME1')),
  	        'timestamp' => "/Date(" . $args['now']->getTimestamp() . ")/",
  		'expiry' =>
		  "/Date(" . $args['now']->add(new DateInterval('P2W'))->getTimestamp() . ")/",
  		'refund_deadline' =>
		  "/Date(" . $args['now']->add(new DateInterval($args['refund_delta']))->getTimestamp() . ")/",
		'repurchase_correlation_id' => $args['correlation_id'],
		'fulfillment_url' => $args['fulfillment_url'],
  		'merchant' =>
		  array ('address' => 'LNAME2',
  		         'name' => $args['merchant_name'],
  		         '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_relative_url, $json){
  $url = url_join("http://".$_SERVER["HTTP_HOST"], $backend_relative_url);
  
  $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();
}
?>