1

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

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

什么是通过API来做到这一点的方法?我检查了arb指南,但无法找到提交cimid的字段。

回答

3

ARB和CIM没有连接。如果您使用的是CIM,则需要创建自己的循环计费引擎来针对配置文件进行收费。

0

我已经为ARB实现:

创建了一个Web服务,当web服务被称为从数据库提取记录和对未来交易日,执行针对特定客户编号的交易。

现在,我计划在SQL作业本次交易是这样

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