2017-04-12 9 views
0

서버 측 결제 수단 (result = Braintree::PaymentMethod.delete("the_token"))을 삭제하는 기능이 있지만 결제 수단 토큰이 필요합니다. 고객으로부터의 nonce를 사용하여 지불 방법 토큰을 얻으려면 어떻게해야합니까?Braintree, 고객의 nonce가 포함 된 사용자 신용 카드를 어떻게 삭제합니까?

편집 : UI에서 드롭을 사용하고 있지 않습니다. 사용자가 가지고있는 신용 카드의 맞춤 목록이 있습니다 (Javascript v3 SDK 사용). 카드를 삭제할 수있는 버튼이 필요합니다. JS SDK dosnt는 신용 카드 토큰을 제공합니다. 클라이언트가 사용할 수있는 데이터를 서버의 카드를 삭제하는 데 사용할 수있게 만드는 프로세스는 무엇입니까?

edit2 : clent 측의 신용 카드 목록은 JavaScript v3 SDK의 VaultManager을 사용합니다. fetchPaymentMethodsPayload을 반환합니다.

_loadPaymentMethods() { 
    this.paymentService.getBraintreeToken().then(token => { 
     this.braintreeClient.create({ 
     authorization: token 
     }, (clientErr, clientInstance) => { 

     if (clientErr) { 
      // Handle error in client creation 
      return; 
     } 

     var options = { 
      client: clientInstance, 
     }; 

     this.vaultManager.create(options, (err, vaultInstance) => { 
      if (err) { 
      console.log(err); 
      return; 
      } 
      vaultInstance.fetchPaymentMethods({ defaultFirst: true }, (err, paymentMethods) => { 
      paymentMethods.forEach(paymentMethod => { 
       if(paymentMethod.type == 'CreditCard') { 
       this.cards.push(paymentMethod); 
       if(paymentMethod.default) { 
        this.card = paymentMethod; 
       } 
       } 
      }); 
      }); 
     }); 

     }); 
    }); 
    } 
+0

[결제 방법 nonce] (https://developers.braintreepayments.com/start/overview#payment-method-nonce)는 일반적으로 아예 보관 된 [결제 수단] (https : //developers.braintreepayments. co.kr/reference/response/payment-method). nonce는 소비 될 임시 지불 정보를 나타냅니다. 가장 큰 예외는 드롭 인 UI를 사용하고 클라이언트 토큰에 ['customer_id'를 포함하는 경우입니다 (https://developers.braintreepayments.com/guides/drop-in/javascript/#customer- 신분증). 드롭 인 UI의 자동 저장 기능을 사용하는지 여부를 묻는 질문을 편집 할 수 있습니까? – zepp

+0

[고객 오브젝트] (https://developers.braintreepayments.com/reference/response/customer)를 찾아 사용자의 신용 카드 사용자 정의 목록을 생성한다고 가정하면 [지불 방법 토큰] (https : //developers.braintreepayments.com/reference/response/payment-method)에서 [고객의 지불 방법 속성] (https://developers.braintreepayments.com/reference/response/customer/#payment_methods)을 참조하십시오. 이런 방식으로 결제 수단을 채우지 않는 경우 사용자의 신용 카드 목록을 생성하는 코드를 추가 할 수 있습니까? –

답변

1

전체 공개 :

는 클라이언트 측 코드입니다 내가 브레인 트리에서 작동합니다. 추가 질문이 있으시면 support으로 언제든지 문의하십시오.

클라이언트 측에서 VaultManager을 사용하여 카드를 채우는 경우 사용자가 카드를 삭제할 수있는 기능이 없습니다. 그 이유는 당신이 말한 것으로 돌아갑니다. 넌센스는 fetchPaymentMethodsPayload 메서드에서 반환되는 것입니다. VaultManager은 이미 생성 된 카드와 연결된 nonce을 채울 수 있습니다.이 카드는 해당 nonce를 Transaction.sale() call으로 전달하기 때문에. 양식이 렌더링 될 때 nonce가 채워지기 때문에 이전에 존재하지 않으며 nonce는 한 번만 사용하도록되어 있기 때문에 저장소의 결제 수단에 비해 nonce를 검색 할 수 없습니다. 따라서 nonces는 PaymentMethod.find() 호출에 전달되지 않습니다.

작업을 수행하려면 Vault Manager의 기능을 모방 한 사용자 정의 논리를 작성해야합니다. 그러나 토큰을 반환해야합니다. 한 가지 방법은 내 의견에 언급 된대로 : customer object을 찾아서 customer's payment methods을 붙잡고 그 지불 방법과 관련된 토큰을 꺼내는 것입니다.