Erro de botão personalizado do DocuSign eSignature para Salesforce 7.0 - Esta página requer um token de confirmação de CSRF



A partir do DocuSign eSignature for Salesforce 7.0, existirá um novo requisito para um botão personalizado de quebra de página ou um valor de windows.location.href. Isso servirá para suportar as últimas atualizações de segurança do Salesforce.

Caso não atualizar, será apresentado o seguinte erro:
Imagem adicionada pelo usuário

Tradução do erro acima: "O link que você seguiu não é válido. Esta página requer um token de confirmação de CSRF. Reporte esse erro ao seu administrador do Salesforce".


O novo requisito de segurança do Salesforce que estamos cumprindo é uma camada extra de segurança para as nossas páginas do Visualforce que protegem contra falsificação de solicitações entre sites (em inglês, cross-site request forgery, CSRF).

Solução:
Para oferecer suporte às atualizações de segurança mais recentes do Salesforce, os formatos de botão personalizados DEVEM ser atualizados para o formato URLFOR.​

*** O URLFOR funciona com os botões personalizados de URL no 6.9, caso os clientes também desejem testar antes de passar para o 7.0. ***

Um exemplo de transição de botão poderia ser:
Exemplo Classic Javascript:

 

{!REQUIRESCRIPT("/apex/dsfs__DocuSign_JavaScript")}
//********* Option Declarations (Do not modify )*********//
var RC = '';var RSL='';var RSRO='';var RROS='';var CCRM='';var CCTM='';var CCNM='';var CRCL='';var OCO='';var DST='';var LA='';var CEM='';var CES='';var STB='';var SSB='';var SES='';var SEM='';var SRS='';var SCS ='';var RES='';
//*************************************************//

OCO = 'Tag';
DST = 'a2e2cd02-f11e-4c8c-a830-c9f2b6564a9e';
LA = '0';
LF = '0';
CCRM = 'Decision Maker~Signer 1';
CCTM = 'Decision Maker~Signer';

//********* Page Callout (Do not modify) *********//
window.location.href = "/apex/dsfs__DocuSign_CreateEnvelope?DSEID=0&SourceID={!Opportunity.Id}&RC="+RC+"&RSL="+RSL+"&RSRO="+RSRO+"&RROS="+RROS+"&CCRM="+CCRM+"&CCTM="+CCTM+"&CRCL="+CRCL+"&OCO="+OCO+"&DST="+DST+"&CCNM="+CCNM+"&LA="+LA+"&CEM="+CEM+"&CES="+CES+"&SRS="+SRS+"&STB="+STB+"&SSB="+SSB+"&SES="+SES+"&SEM="+SEM+"&SRS="+SRS+"&SCS="+SCS+"&RES="+RES;
//*******************************************//



Formato de URL para o Lightning (suportado pela v6.9):
* nota: a fonte de conteúdo deve ser definida como URL

 

/apex/dsfs__DocuSign_CreateEnvelope?DSEID=0
&SourceID={!Opportunity.Id}
&DST=a2e2cd02-f11e-4c8c-a830-c9f2b6564a9e
&CCRM=Decision+Maker~Signer+1
&CCTM=Decision+Maker~Signer
&LA=0
&LF=0
&OCO=Tag




Formato URLFOR (requerido para v7.0 +):
*nota: a fonte de conteúdo deve ser definida como URL

 

{!URLFOR('/apex/dsfs__DocuSign_CreateEnvelope', null, [
SourceID = Opportunity.Id,
CCRM = 'Decision Maker~Signer 1',
CCTM = 'Decision Maker~Signer',
DST = 'a2e2cd02-f11e-4c8c-a830-c9f2b6564a9e',
LA = '0',
LF = '0',
OCO = 'Tag'
]
)}



Fácil atualização do botão JavaScript para a seção de quebra de página (para botões Clássicos na v7.0 +)
 
Como uma alternativa ao formato URLFOR acima, se você quiser manter o formato de botão JavaScript existente, também poderá alterar a seção de quebra de página e preservar seu código personalizado.
 
- Copie e cole a seção "Chamada de página" abaixo no código do botão para substituir o texto explicativo de sua página existente (variável window.location.href)
- Observe que este exemplo é para envio de uma oportunidade, para outros objetos, altere Opportunity.Id para qualquer objeto que você esteja usando
- Por favor, certifique-se de ter a seção Declaração de Opções no topo para garantir que declaramos cada variável.
 
Nota: a seção destacada indica o que foi alterado da chamada de página padrão anterior:
 


 

//********* Option Declarations (Do not modify )*********// 
var RC = '';var RSL='';var RSRO='';var RROS='';var CCRM='';var CCTM='';var CCNM='';var CRCL=''; var CRL='';var OCO='';var DST='';var LA='';var LF='';var CEM='';var CES='';var STB='';var SSB='';var SES='';var SEM='';var SRS='';var SCS ='';var RES='';
//*************************************************// 


//custom code goes here// 


//********* Page Callout (Do not modify) *********// 
window.location.href = '{!URLFOR('/apex/dsfs__DocuSign_CreateEnvelope',null,[SourceID=Opportunity.Id])}&RC='+RC+'&RSL='+RSL+'&RSRO='+RSRO+'&RROS='+RROS+'&CCRM='+CCRM+'&CCTM='+CCTM+'&CRCL='+CRCL+'&CRL='+CRL+'&OCO='+OCO+'&DST='+DST+'&CCNM='+CCNM+'&LA='+LA+'&LF='+LF+'&CEM='+CEM+'&CES='+CES+'&SRS='+SRS+'&STB='+STB+'&SSB='+SSB+'&SES='+SES+'&SEM='+SEM+'&SRS='+SRS+'&SCS='+SCS+'&RES='+RES;