The Microsoft® Wallet implements the clear text protocol, which is built into the Credit Card client payment component (CPC) and supports the type CCPMNT and all of the additional fields that contain the credit-card and billing information.
All other protocols are installed into the Credit Card CPC by registry entries in the /Credit Card/Protocol/Install registry key. When a protocol is installed, it writes its program identifier (ProgID) of the Component Object Model (COM) object that implements ICreditCardEncryption2 to this key.
When a user attempts some action that affects a given protocol, the Wallet retrieves the protocol's ProgID from the Registry and uses it to create an instance of the affected protocol's ICreditCardEncryption2 implementation. The Wallet then calls the appropriate interface method. Thus, for example, when a user attempts to delete a Credit Card through the Payment control interface, the Wallet calls the affected protocol's implementation of ICreditCardEncryption2::PreDelete.
For a given payment protocol, some of the payment information stored in the Wallet (such as a credit-card number), must remain constant for the protocol to work. For example, with SET, the certificate must be valid, and that certificate is dependent on the card number and the expiration date. As such, if the shopper is able to change this information, it will invalidate the certificate for use in subsequent purchases. Using the ICreditCardEncryption2 interface, the Payment Builder is notified when the shopper is changing information about the credit card, prior to the change, and should display a warning as to the results of choosing to proceed. The Payment Builder also needs an opportunity to tell the shopper that this is happening.
The ICreditCardEncryption2_CallBack interface implements callback methods that return pointers to credit card and billing information, replacing the GetCreditCard and GetAddress function pointers in the old ICreditCardEncryption::GenPayInstruction method. Additionally, ICreditCardEncryption2_CallBack defines two methods, GetExtensionProperty and SetExtensionProperty, that the protocol can use to set or query the custom property values for the affected Credit Card.
Note The ICreditCardEncryption interface is no longer supported. You need to port existing code to use the ICreditCardEncryption2 interface.