Post 将Odoo中的请求获取/发布到外部API

Post 将Odoo中的请求获取/发布到外部API,post,get,e-commerce,payment-gateway,odoo-12,Post,Get,E Commerce,Payment Gateway,Odoo 12,我在为支付网关编写模块时遇到了一些问题。我们需要使用的外部API通过POST请求需要3件事: ClientID:API颁发者提供的令牌 金额:支付的总金额 TransactionID:由Odoo提供的字段,具有整个事务的ID 当我在Odoo之外编写代码时,一切都很好,我不熟悉Odoo语法,所以我不知道如何将所有这些移到我的模块中,尽管我模仿了3个类似的模块,如“stripe”、“payumoney”和“paytm” 外部代码: import requests idcliente = '97bd

我在为支付网关编写模块时遇到了一些问题。我们需要使用的外部API通过POST请求需要3件事:

  • ClientID:API颁发者提供的令牌
  • 金额:支付的总金额
  • TransactionID:由Odoo提供的字段,具有整个事务的ID
  • 当我在Odoo之外编写代码时,一切都很好,我不熟悉Odoo语法,所以我不知道如何将所有这些移到我的模块中,尽管我模仿了3个类似的模块,如“stripe”、“payumoney”和“paytm”

    外部代码:

    import requests
    
    idcliente = '97bd8cf4-e894-4cb5-b8cc-3fc31f79c81a'
    valor = 42.75
    id_transaccioncomercio = 20354
    
    base_url = 'https://test.serfinsacheckout.com:8080/'
    query_tring = 'Pay/GateWay?token=' + idcliente + '&idTransaccion=2565'
    params = 'api/PayApi/TokeyTran'
    
    payload = {
        'TokeyComercio': idcliente,
        'Monto': valor,
        'IdTransaccionCliente': id_transaccioncomercio
    }
    
    r = requests.post(base_url + params, data = payload)
    print(r.json())
    
    r = requests.get(base_url + query_tring)
    # print("Status Code: {} [OK]".format(r.status_code))
    print(r.content)
    
    我在Odoo(控制器)中的代码:

    型号>付款中的我的代码:

    import logging
    from odoo import api, fields, models, _
    from odoo.addons.payment.models.payment_acquirer import ValidationError
    
    _logger = logging.getLogger(__name__)
    
    class PaymentAcquirerSerfinsa(models.Model):
        _inherit = 'payment.acquirer'
    
        provider = fields.Selection(selection_add=[('serfinsa_payment', 'Serfinsa')])
        idcliente = fields.Char(string='Serfinsa Token', required_if_provider='serfinsa_payment')
    
        def _get_serfinsa_urls(self, environment):
            if environment == 'prod':
                return {'base_url': 'https://test.serfinsacheckout.com:8080/'}
            else:
                return {'base_url': 'https://test.serfinsacheckout.com:8080/'}
    
        @api.multi
        def serfinsa_form_generate_values(self, values):
            self.ensure_one()
            base_url = self.get_base_url()
            serfinsa_values = dict(values,
                                    idcliente=self.idcliente,
                                    valor=values['amount'],
                                    id_transaccioncomercio=values['reference'],
                                    #txnid=values['reference'],
                                    #firstname=values.get('partner_name'),
                                    #email=values.get('partner_email'),
                                    #phone=values.get('partner_phone'),
                                    service_provider='serfinsa',
                                    )
    
            serfinsa_values['udf1'] = serfinsa_values.pop('return_url', '/')
            return serfinsa_values
    
    非常感谢您的帮助…提前谢谢

    import logging
    from odoo import api, fields, models, _
    from odoo.addons.payment.models.payment_acquirer import ValidationError
    
    _logger = logging.getLogger(__name__)
    
    class PaymentAcquirerSerfinsa(models.Model):
        _inherit = 'payment.acquirer'
    
        provider = fields.Selection(selection_add=[('serfinsa_payment', 'Serfinsa')])
        idcliente = fields.Char(string='Serfinsa Token', required_if_provider='serfinsa_payment')
    
        def _get_serfinsa_urls(self, environment):
            if environment == 'prod':
                return {'base_url': 'https://test.serfinsacheckout.com:8080/'}
            else:
                return {'base_url': 'https://test.serfinsacheckout.com:8080/'}
    
        @api.multi
        def serfinsa_form_generate_values(self, values):
            self.ensure_one()
            base_url = self.get_base_url()
            serfinsa_values = dict(values,
                                    idcliente=self.idcliente,
                                    valor=values['amount'],
                                    id_transaccioncomercio=values['reference'],
                                    #txnid=values['reference'],
                                    #firstname=values.get('partner_name'),
                                    #email=values.get('partner_email'),
                                    #phone=values.get('partner_phone'),
                                    service_provider='serfinsa',
                                    )
    
            serfinsa_values['udf1'] = serfinsa_values.pop('return_url', '/')
            return serfinsa_values