Documentos duplicados “Em processamento” + PayPal
-
Boa tarde,
Conforme informado por um nosso cliente via suporte directo convosco, há situa??es em que o PayPal enviar duas notifica??es de pagamento imediatas pode acontecer que sejam criados dois documentos, porque quando acabam de criar o primeiro já come?aram a fazer o segundo.
O que eu sugiro é que logo no início do método
createDocument
da classDocuments
gravem na encomenda um meta temporário de bloqueio e gravem o mesmo e ainda antes disso validem se esse meta existe e só continuam caso n?o exista. No final removem o meta temporário.Isto deverá resolver o problema do método
isReferencedInDatabase
só devolver true depois de ter sido criado o documento (o que leva tempo por causa das chamadas à API) e portanto corrermos o risco de obter duplicados.Seria algo tipo:
public function createDocument() { try { if ( ! $this->order->get_meta( '_moloni_locked' ) ) { $this->order->add_meta_data( '_moloni_locked', 1 ); $this->order->save(); //the rest of the function $this->order->delete_meta_data( '_moloni_locked' ); $this->order->save(); } else { //It's locked, don't issue } } catch (Error $error) { $this->document_id = 0; $this->error = $error; } return $this; }
A ideia é que seja feito e gravado na base de dados o mais cedo possível, para que a próxima vez que o método
createDocument
corra já lá esteja.
- The topic ‘Documentos duplicados “Em processamento” + PayPal’ is closed to new replies.