如何通过PayPal C# API取消参考交易?
取消PayPal参考交易的正确API调用
首先明确:你混淆了参考交易(Reference Transactions)和定期付款/订阅配置文件的API使用场景:
ManageRecurringPaymentsProfileStatus仅适用于B-开头的定期付款配置文件,参考交易没有这类配置文件,所以传入B-开头ID必然报错“配置文件ID无效”。DoVoid仅能撤销未结算的授权交易或已授权但未捕获的交易,如果你的参考交易是已完成的扣款,或者你要取消的是后续发起扣款的权限,这个API也不适用。
针对参考交易的取消需求,分两种场景处理:
场景1:撤销已发起的参考交易扣款
如果已经通过参考交易完成了一笔扣款,想要撤销该笔交易,直接使用DoVoid API,但需要传入该扣款交易的ID(而非原始参考ID或配置文件ID),同时确保交易处于可撤销状态(通常是交易完成后短时间内)。
C#代码示例:
var voidRequest = new VoidRequestType { AuthorizationID = "你的扣款交易ID", // 注意是具体扣款的交易ID,不是参考ID Version = PayPalAPIInterfaceServiceService.API_VERSION }; var service = new PayPalAPIInterfaceServiceService(); VoidResponseType response = service.DoVoid(voidRequest);
场景2:取消后续发起参考交易扣款的权限
如果要彻底取消商家通过该参考ID发起后续扣款的权限,需要调用DoReferenceTransaction API,并设置TransactionType为VoidReferenceTransaction,传入原始的参考交易ID(即最初授权/交易的ID)。
C#代码示例:
var referenceRequest = new DoReferenceTransactionRequestType { Version = PayPalAPIInterfaceServiceService.API_VERSION, DoReferenceTransactionRequestDetails = new DoReferenceTransactionRequestDetailsType { ReferenceID = "你的原始参考交易ID", // 最初的授权/交易ID TransactionType = TransactionTypeCodeType.VoidReferenceTransaction, Amount = new BasicAmountType { Value = "0.00", CurrencyID = CurrencyCodeType.USD } // 金额填0即可 } }; var service = new PayPalAPIInterfaceServiceService(); DoReferenceTransactionResponseType response = service.DoReferenceTransaction(referenceRequest);
另外需要注意:
- 确保你的PayPal账户已开通参考交易权限,否则相关API调用会失败。
- 传入的交易ID/参考ID必须正确,避免混淆定期付款配置文件ID(B-开头)和交易ID(通常是P-或TXN-开头)。
内容的提问来源于stack exchange,提问作者Jimmy
相关产品推荐
相关产品推荐

