Projet

Général

Profil

0001-add-transaction-id-and-date-to-invoice-payment-notif.patch

Serghei Mihai (congés, retour 15/05), 19 décembre 2015 10:55

Télécharger (3,86 ko)

Voir les différences:

Subject: [PATCH] add transaction id and date to invoice payment notification
 (#9280)

Send data through POST
 lingo/models.py | 26 +++++++++++++++-----------
 lingo/views.py  |  3 ++-
 2 files changed, 17 insertions(+), 12 deletions(-)
lingo/models.py
109 109
                url = self.webservice_url + '/invoices/'
110 110
                if past:
111 111
                    url += 'history'
112
                items = self.get_url(context['request'], url,
113
                            NameID=mellon['name_id_content']).json()
112
                items = requests.get(self.signed_url(context['request'], url,
113
                            NameID=mellon['name_id_content'])).json()
114 114
                if items.get('data'):
115 115
                    return [build_remote_item(item, self) for item in items.get('data')]
116 116
                return []
......
124 124
            if hasattr(request, 'session') and request.session.get('mellon_session'):
125 125
                mellon = request.session.get('mellon_session')
126 126
                url = self.webservice_url + '/invoice/%s/pdf' % item_id
127
                return self.get_url(request, url, NameID=mellon['name_id_content'])
127
                return requests.get(self.signed_url(request, url,
128
                                    NameID=mellon['name_id_content']))
128 129
            raise PermissionDenied
129 130

  
130 131
    def get_item(self, request, item):
......
134 135
        if hasattr(request, 'session') and request.session.get('mellon_session'):
135 136
            mellon = request.session.get('mellon_session')
136 137
            url = self.webservice_url + '/invoice/%s/' % item
137
            item = self.get_url(request, url,
138
                        NameID=mellon['name_id_content']).json()
138
            item = requests.get(self.signed_url(request, url,
139
                        NameID=mellon['name_id_content'])).json()
139 140
            return build_remote_item(item.get('data'), self)
140 141
        return {}
141 142

  
142
    def pay_item(self, request, item):
143
        url = self.webservice_url + '/invoice/%s/pay/' % item
144
        return self.get_url(request, url)
143
    def pay_item(self, request, item, transaction_id, transaction_date):
144
        url = self.webservice_url + '/invoice/pay/'
145
        data = {'invoice_id': item, 'transaction_id': transaction_id,
146
                'transaction_date': transaction_date.isoformat()}
147
        headers = {'content-type': 'application/json'}
148
        return requests.post(self.signed_url(request, url),
149
                             data=json.dumps(data), headers=headers).json()
145 150

  
146 151
    def as_api_dict(self):
147 152
        return {'slug': self.slug,
148 153
                'label': self.label,
149 154
                'description': self.description}
150 155

  
151
    def get_url(self, request, url, **params):
156
    def signed_url(self, request, url, **params):
152 157
        orig = request.get_host()
153 158
        url += '?orig=' + orig +'&' + urllib.urlencode(params)
154 159
        signature_key = settings.LINGO_SIGNATURE_KEY
155
        url = sign_url(url, key=signature_key)
156
        return requests.get(url)
160
        return sign_url(url, key=signature_key)
157 161

  
158 162

  
159 163
class BasketItem(models.Model):
lingo/views.py
200 200
                pass
201 201
        if transaction.remote_items:
202 202
            for item in transaction.remote_items.split(','):
203
                regie.pay_item(request, item)
203
                regie.pay_item(request, item, transaction.order_id,
204
                            transaction.end_date)
204 205

  
205 206
        return HttpResponse()
206 207

  
207
-