【问题标题】:recurring payment using authorize.net cim使用 authorize.net cim 定期付款
【发布时间】:2014-01-06 09:25:23
【问题描述】:

我有一个信用卡帐户部分,用户可以在其中输入他们的信用卡信息。我会将这些信息发送到 authorize.net 并为该用户创建一个 cim id(customerProfileId)。所以现在我们在我的网站上有了抄送信息。

我的网站在 4 个部分中有 4 种付款方式。其中一些是经常性付款。我想使用保存的 CIM id 创建这些付款。那不是强迫用户一次又一次地输入抄送信息。

通过API来做这件事的方法是什么?我检查了套利指南,但找不到提交 cimid 的字段。

【问题讨论】:

    标签: payment-gateway authorize.net payment-processing recurring-billing


    【解决方案1】:

    ARB 和 CIM 未连接。如果您使用 CIM,则需要创建自己的定期计费引擎以根据配置文件收费。

    【讨论】:

      【解决方案2】:

      我为 ARB 实现了什么:

      创建了一个 Web 服务,当调用 Web 服务时,它会从数据库中获取记录,并针对未来交易日期的特定客户 ID 执行交易。

      现在我像这样在 SQL JOB 中安排了这个事务

      Insert Into ARBSQLJobLog (SQLJobLoggedTime) VALUES(GetDATE())
      declare @xmlOut varchar(8000)
      Declare @RequestText as varchar(8000);
      set @RequestText=
      '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
         <soapenv:Header/>
         <soapenv:Body>
            <tem:CreateOrder>
               <!--Optional:-->
               <tem:OrderRequest>
                  <tem:OrderId>200</tem:OrderId>
                  <!--Optional:-->
                  <tem:OrderName>something</tem:OrderName>
               </tem:OrderRequest>
            </tem:CreateOrder>
         </soapenv:Body>
      </soapenv:Envelope>'
      exec sProc_XXB_InvokeARBWebService 
      'http://localhost/ZBC/XXXXX.asmx/CheckScheduledTransForToday', 
      

      存储过程

      --执行sProc_XXB_InvokeARBWebService

      CREATE PROCEDURE [dbo].[sProc_XXB_InvokeARBWebService]                
      
            @URI varchar(2000) = '',        
            @methodName varchar(50) = '',   
            @requestBody varchar(8000) = '',   
            @SoapAction varchar(255),   
            @UserName nvarchar(100), -- Domain\UserName or UserName   
            @Password nvarchar(100),   
            @responseText varchar(8000) output  
      AS         
      
      
      SET NOCOUNT ON  
      IF    @methodName = ''  
      BEGIN  
            select FailPoint = 'Method Name must be set'  
            return  
      END  
      set   @responseText = 'FAILED'  
      DECLARE @objectID int  
      DECLARE @hResult int  
      DECLARE @source varchar(255), @desc varchar(255)   
      EXEC @hResult = sp_OACreate 'MSXML2.ServerXMLHTTP', @objectID OUT  
      IF @hResult <> 0   
      BEGIN  
            EXEC sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT  
            SELECT      hResult = convert(varbinary(4), @hResult),   
                        source = @source,   
                        description = @desc,   
                        FailPoint = 'Create failed',   
                        MedthodName = @methodName   
            goto destroy   
            return  
      END  
      -- open the destination URI with Specified method   
      EXEC @hResult = sp_OAMethod @objectID, 'open', null, @methodName, @URI, 'false', @UserName, @Password  
      IF @hResult <> 0   
      BEGIN  
            EXEC sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT  
            SELECT      hResult = convert(varbinary(4), @hResult),   
                  source = @source,   
                  description = @desc,   
                  FailPoint = 'Open failed',   
                  MedthodName = @methodName   
            goto destroy   
            return  
      END  
      -- set request headers   
      EXEC @hResult = sp_OAMethod @objectID, 'setRequestHeader', null, 'Content-Type', 'text/xml;charset=UTF-8'  
      IF @hResult <> 0   
      BEGIN  
            EXEC sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT  
            SELECT      hResult = convert(varbinary(4), @hResult),   
                  source = @source,   
                  description = @desc,   
                  FailPoint = 'SetRequestHeader failed',   
                  MedthodName = @methodName   
            goto destroy   
            return  
      END  
      -- set soap action   
      EXEC @hResult = sp_OAMethod @objectID, 'setRequestHeader', null, 'SOAPAction', @SoapAction   
      IF @hResult <> 0   
      BEGIN  
            EXEC sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT  
            SELECT      hResult = convert(varbinary(4), @hResult),   
                  source = @source,   
                  description = @desc,   
                  FailPoint = 'SetRequestHeader failed',   
                  MedthodName = @methodName   
            goto destroy   
            return  
      END  
      declare @len int  
      set @len = len(@requestBody)   
      EXEC @hResult = sp_OAMethod @objectID, 'setRequestHeader', null, 'Content-Length', @len   
      IF @hResult <> 0   
      BEGIN  
            EXEC sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT  
            SELECT      hResult = convert(varbinary(4), @hResult),   
                  source = @source,   
                  description = @desc,   
                  FailPoint = 'SetRequestHeader failed',   
                  MedthodName = @methodName   
            goto destroy   
            return  
      END  
      /*   
      -- if you have headers in a table called RequestHeader you can go through them with this   
      DECLARE @HeaderKey varchar(500), @HeaderValue varchar(500)   
      DECLARE RequestHeader CURSOR  
      LOCAL FAST_FORWARD   
      FOR  
            SELECT      HeaderKey, HeaderValue   
            FROM RequestHeaders   
            WHERE       Method = @methodName   
      OPEN RequestHeader   
      FETCH NEXT FROM RequestHeader   
      INTO @HeaderKey, @HeaderValue   
      WHILE @@FETCH_STATUS = 0   
      BEGIN  
            --select @HeaderKey, @HeaderValue, @methodName   
            EXEC @hResult = sp_OAMethod @objectID, 'setRequestHeader', null, @HeaderKey, @HeaderValue   
            IF @hResult <> 0   
            BEGIN  
                  EXEC sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT  
                  SELECT      hResult = convert(varbinary(4), @hResult),   
                        source = @source,   
                        description = @desc,   
                        FailPoint = 'SetRequestHeader failed',   
                        MedthodName = @methodName   
               goto destroy   
                  return  
            END  
            FETCH NEXT FROM RequestHeader   
            INTO @HeaderKey, @HeaderValue   
      END  
      CLOSE RequestHeader   
      DEALLOCATE RequestHeader   
      */   
      -- send the request   
      EXEC @hResult = sp_OAMethod @objectID, 'send', null, @requestBody   
      IF    @hResult <> 0   
      BEGIN  
            EXEC sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT  
            SELECT      hResult = convert(varbinary(4), @hResult),   
                  source = @source,   
                  description = @desc,   
                  FailPoint = 'Send failed',   
                  MedthodName = @methodName   
            goto destroy   
            return  
      END  
      declare @statusText varchar(1000), @status varchar(1000)   
      -- Get status text   
      exec sp_OAGetProperty @objectID, 'StatusText', @statusText out  
      exec sp_OAGetProperty @objectID, 'Status', @status out  
      select @status, @statusText, @methodName   
      -- Get response text   
      exec sp_OAGetProperty @objectID, 'responseText', @responseText out  
      IF @hResult <> 0   
      BEGIN  
            EXEC sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT  
            SELECT      hResult = convert(varbinary(4), @hResult),   
                  source = @source,   
                  description = @desc,   
                  FailPoint = 'ResponseText failed',   
                  MedthodName = @methodName   
            goto destroy   
            return  
      END  
      destroy:   
            exec sp_OADestroy @objectID   
      SET NOCOUNT OFF  
      

      【讨论】:

        猜你喜欢
        • 2014-03-03
        • 2012-11-29
        • 2016-03-23
        • 2011-04-24
        • 2021-07-24
        • 2013-03-17
        • 2012-11-19
        • 2017-08-25
        • 2012-01-04
        相关资源
        最近更新 更多