使用authorize.net cim定期付款

时间:2013-12-18 09:25:31

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

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

我的网站分4个部分付款。其中一些是经常性付款。我想使用保存的CIM ID创建这些付款。这不是强制用户一次又一次地输入cc信息。

通过API执行此操作的方法是什么?我检查了arb指南,但找不到提交cimid的字段。

2 个答案:

答案 0 :(得分:3)

ARB和CIM未连接。如果您正在使用CIM,则需要创建自己的定期结算引擎,以便根据个人资料收费。

答案 1 :(得分:0)

我为ARB实施的内容:

创建一个Web服务,当调用Webservice时,它从DB获取记录,并针对Future Transaction日期针对特定的Customer 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', 

存储过程

- Exec 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