USP_BATCHBBNCDONATION_SETTOKEN

Updates a Blackbaud Internet Solutions batch donation record to use a BBPS token instead of a full card number.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@CREDITCARDTOKEN uniqueidentifier IN
@PARTIALCARDNUMBER nvarchar(4) IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_BATCHBBNCDONATION_SETTOKEN
            (
                @ID uniqueidentifier,
                @CREDITCARDTOKEN uniqueidentifier,
                @PARTIALCARDNUMBER nvarchar(4),
                @CHANGEAGENTID uniqueidentifier,
                @CURRENTDATE datetime
            )
            as
                set nocount on

                if @CURRENTDATE is null
                    set @CURRENTDATE = getdate()

                if @CHANGEAGENTID is null
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

                exec dbo.USP_GET_KEY_ACCESS

                begin try
                    update dbo.BATCHBBNCDONATION set 
                        GIFTINFORMATION.modify ('
                            insert    <ITEM>
                                        <PROCESS>True</PROCESS>
                                        <FIELD>Credit card token</FIELD>
                                        <NEWVALUE>{sql:variable("@CREDITCARDTOKEN")}</NEWVALUE>
                                        <ACTION>0</ACTION>
                                        <FIELDKEY>CREDITCARDTOKEN</FIELDKEY>
                                        <DATATYPE>1</DATATYPE>
                                    </ITEM>
                            as last
                            into (/GIFTINFORMATION)[1]'), 
                        DATECHANGED = @CURRENTDATE
                        CHANGEDBYID = @CHANGEAGENTID 
                    where ID = @ID

                    declare @MASKEDPARTIALCARDNUMBER nvarchar(16)
                    if coalesce(@PARTIALCARDNUMBER, '') <> ''
                        set @MASKEDPARTIALCARDNUMBER = '************' + @PARTIALCARDNUMBER
                    else
                        set @MASKEDPARTIALCARDNUMBER = ''

                    declare @ENCRYPTEDPARTIALCARDNUMBER varbinary(4000)
                    set @ENCRYPTEDPARTIALCARDNUMBER = EncryptByKey(key_GUID('sym_BBInfinity'), @MASKEDPARTIALCARDNUMBER)

                    update dbo.BATCHBBNCDONATION set 
                        GIFTINFORMATION.modify ('
                            replace value of (/GIFTINFORMATION/ITEM[FIELDKEY="CREDITCARDNUMBER"]/NEWVALUE/text())[1]
                            with sql:variable("@ENCRYPTEDPARTIALCARDNUMBER")'), 
                        DATECHANGED = @CURRENTDATE
                        CHANGEDBYID = @CHANGEAGENTID 
                    where ID = @ID

                    -- Remove the audit records since they contain the full card number

                    delete from dbo.BATCHBBNCDONATIONAUDIT where AUDITRECORDID = @ID

                    close symmetric key sym_BBInfinity
                end try
                begin catch
                    close symmetric key sym_BBInfinity
                    return 1
                end catch

                return 0