You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cybersource API C#:Token化信用卡捕获付款时id参数取值疑问

解决Cybersource令牌化信用卡捕获付款的Id参数问题

首先明确:当使用令牌化信用卡完成授权后,调用CapturePayment时需要传入的是授权交易的Transaction ID,而非支付令牌(Token)的ID。

问题原因

你当前传入的id是令牌ID而非授权交易ID,Cybersource捕获接口不接受令牌ID作为参数,因此抛出Cannot call with a TOKEN错误。

正确步骤(C#示例)

  1. 发起授权请求(使用令牌)
    确保你的SimpleAuthorizationInternet.Run()方法返回授权交易的完整响应,而非仅令牌ID。修改该方法,返回授权接口返回的TransactionId:

    // 示例:SimpleAuthorizationInternet.Run() 内部逻辑
    public AuthorizationResponse Run()
    {
        var apiInstance = new AuthorizationApi();
        var requestObj = new CreateAuthorizationRequest();
        // 使用令牌而非信用卡号设置支付工具
        requestObj.PaymentInstrument = new Ptsv2paymentsPaymentInstrument
        {
            TokenId = "你的支付令牌ID(如 tok_xxxxxx)"
        };
        // 补充金额、商户信息等必要参数
        
        var response = apiInstance.CreateAuthorization(requestObj);
        // 返回完整授权响应,包含TransactionId
        return response;
    }
    
  2. 获取授权交易ID并调用捕获接口
    在捕获付款时,从授权响应中提取TransactionId作为参数传入:

    var authResponse = SimpleAuthorizationInternet.Run();
    var captureApiInstance = new CaptureApi();
    var captureRequest = new CreateCaptureRequest();
    // 设置捕获请求的金额等参数
    
    // 传入授权交易的TransactionId,而非令牌ID
    var captureResponse = captureApiInstance.CapturePayment(captureRequest, authResponse.TransactionId);
    

关键注意事项

  • 令牌仅用于发起授权/付款请求,后续的捕获、退款等操作都需要使用对应交易的TransactionId。
  • 确认SimpleAuthorizationInternet.Run()方法返回的是授权接口的完整响应对象,若之前仅返回令牌ID,需调整返回值类型以获取TransactionId。

内容的提问来源于stack exchange,提问作者user2660603

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:35:01