Post 将Odoo中的请求获取/发布到外部API
我在为支付网关编写模块时遇到了一些问题。我们需要使用的外部API通过POST请求需要3件事: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
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