使用.NET中的CyberSource API取消/退款交易
我正在使用CyberSourceAPI作为支付网关。我查阅了所有可用的文档,得出了以下代码:使用.NET中的CyberSource API取消/退款交易,.net,payment-gateway,.net,Payment Gateway,我正在使用CyberSourceAPI作为支付网关。我查阅了所有可用的文档,得出了以下代码: 首先,我使用url将服务引用添加到CyberSource 然后,我添加了下面的代码,用于创建一个事务,然后取消它。但不知何故,取消似乎不起作用。我不确定我做错了什么,因为网上几乎没有可用的文档 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Servic
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using PaymentGatewayConsole.CyberSourceTest;
namespace PaymentGatewayConsole
{
class Program
{
private const String MERCHANT_ID = "removed";
private const String TRANSACTION_KEY = "removed";
private static string REQUEST_TOKEN = string.Empty;
private static string REQUEST_ID = string.Empty;
static void Main(string[] args)
{
MakePayment();
RequestRefund();
}
private static void MakePayment()
{
RequestMessage request = new RequestMessage();
request.merchantID = MERCHANT_ID;
// replace request.merchantReferenceCode with reference number for the current transaction.
request.merchantReferenceCode = "123";
request.clientLibrary = ".NET WCF";
request.clientLibraryVersion = Environment.Version.ToString();
request.clientEnvironment = Environment.OSVersion.Platform + Environment.OSVersion.Version.ToString();
request.ccAuthService = new CCAuthService();
request.ccAuthService.run = "true";
BillTo billTo = new BillTo();
billTo.firstName = "John";
billTo.lastName = "Doe";
billTo.street1 = "1295 Charleston Road";
billTo.city = "Mountain View";
billTo.state = "CA";
billTo.postalCode = "94043";
billTo.country = "US";
billTo.email = "null@cybersource.com";
billTo.ipAddress = "10.7.111.111";
request.billTo = billTo;
Card card = new Card();
card.accountNumber = "4111111111111111";
card.expirationMonth = "12";
card.expirationYear = "2020";
card.cardType = "Visa";
request.card = card;
PurchaseTotals purchaseTotals = new PurchaseTotals();
purchaseTotals.currency = "USD";
request.purchaseTotals = purchaseTotals;
request.item = new Item[1];
Item item = new Item();
item.id = "0";
item.unitPrice = "49.00";
request.item[0] = item;
try
{
TransactionProcessorClient proc = new TransactionProcessorClient();
proc.ChannelFactory.Credentials.UserName.UserName = request.merchantID;
proc.ChannelFactory.Credentials.UserName.Password = TRANSACTION_KEY;
ReplyMessage reply = proc.runTransaction(request);
REQUEST_ID = reply.requestID;
REQUEST_TOKEN = reply.requestToken;
Console.WriteLine("decision = " + reply.decision);
Console.WriteLine("reasonCode = " + reply.reasonCode);
Console.WriteLine("requestID = " + reply.requestID);
Console.WriteLine("requestToken = " + reply.requestToken);
Console.WriteLine("ccAuthReply.reasonCode = " + reply.ccAuthReply.reasonCode);
}
catch (TimeoutException e)
{
Console.WriteLine("TimeoutException: " + e.Message + "\n" + e.StackTrace);
}
catch (FaultException e)
{
Console.WriteLine("FaultException: " + e.Message + "\n" + e.StackTrace);
}
catch (CommunicationException e)
{
Console.WriteLine("CommunicationException: " + e.Message + "\n" + e.StackTrace);
}
Console.ReadLine();
}
/// <summary>
/// Method for requesting refund
/// </summary>
private static void RequestRefund()
{
RequestMessage request = new RequestMessage();
request.merchantID = MERCHANT_ID;
request.merchantReferenceCode = "123";
request.clientLibrary = ".NET WCF";
request.clientLibraryVersion = Environment.Version.ToString();
request.clientEnvironment = Environment.OSVersion.Platform + Environment.OSVersion.Version.ToString();
request.ccAuthService = new CCAuthService();
request.ccAuthService.run = "true";
//request.ccAuthReversalService = new CCAuthReversalService();
//request.ccAuthReversalService.run = "true";
//request.ccAuthReversalService.authRequestID = REQUEST_ID;
//request.orderRequestToken = REQUEST_TOKEN;
//request.purchaseTotals = new PurchaseTotals();
//request.purchaseTotals.currency = "USD";
//request.purchaseTotals.grandTotalAmount = "10";
VoidService reqVoid = new VoidService();
reqVoid.voidRequestID = REQUEST_ID;
reqVoid.voidRequestToken = REQUEST_TOKEN;
reqVoid.run = "true";
request.voidService = reqVoid;
try
{
TransactionProcessorClient proc = new TransactionProcessorClient();
proc.ChannelFactory.Credentials.UserName.UserName = request.merchantID;
proc.ChannelFactory.Credentials.UserName.Password = TRANSACTION_KEY;
ReplyMessage reply = proc.runTransaction(request);
Console.WriteLine("decision = " + reply.decision);
Console.WriteLine("reasonCode = " + reply.reasonCode);
Console.WriteLine("requestID = " + reply.requestID);
Console.WriteLine("requestToken = " + reply.requestToken);
}
catch (TimeoutException e)
{
Console.WriteLine("TimeoutException: " + e.Message + "\n" + e.StackTrace);
}
catch (FaultException e)
{
Console.WriteLine("FaultException: " + e.Message + "\n" + e.StackTrace);
}
catch (CommunicationException e)
{
Console.WriteLine("CommunicationException: " + e.Message + "\n" + e.StackTrace);
}
Console.ReadLine();
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.ServiceModel;
使用PaymentGatewayConsole.CyberSourceTest;
命名空间PaymentGatewayConsole
{
班级计划
{
私有常量字符串\u ID=“已删除”;
私有常量字符串事务\u KEY=“已删除”;
私有静态字符串请求\u令牌=string.Empty;
私有静态字符串请求\u ID=string.Empty;
静态void Main(字符串[]参数)
{
付款();
请求退款();
}
私人静态支付()
{
RequestMessage请求=新的RequestMessage();
request.merchantID=商户ID;
//用当前交易的参考号替换request.merchantReferenceCode。
request.merchantReferenceCode=“123”;
request.clientLibrary=“.NET WCF”;
request.clientLibraryVersion=Environment.Version.ToString();
request.clientEnvironment=Environment.OSVersion.Platform+Environment.OSVersion.Version.ToString();
request.ccAuthService=新的ccAuthService();
request.ccAuthService.run=“true”;
BillTo BillTo=新BillTo();
billTo.firstName=“约翰”;
billTo.lastName=“Doe”;
billTo.street1=“查尔斯顿路1295号”;
billTo.city=“山景”;
billTo.state=“CA”;
billTo.postalCode=“94043”;
billTo.country=“美国”;
billTo.email=”null@cybersource.com";
billTo.ipAddress=“10.7.111.111”;
request.billTo=billTo;
卡片=新卡片();
card.accountNumber=“4111111111”;
card.expirationMonth=“12”;
card.expirationYear=“2020”;
card.cardType=“Visa”;
request.card=卡片;
PurchaseTotals PurchaseTotals=新的PurchaseTotals();
purchaseTotals.currency=“USD”;
request.purchaseTotals=purchaseTotals;
request.item=新项[1];
项目=新项目();
item.id=“0”;
item.unitPrice=“49.00”;
请求.项[0]=项;
尝试
{
TransactionProcessorClient proc=新建TransactionProcessorClient();
proc.ChannelFactory.Credentials.UserName.UserName=request.merchantID;
proc.ChannelFactory.Credentials.UserName.Password=事务密钥;
ReplyMessage reply=proc.runTransaction(请求);
REQUEST\u ID=reply.requestID;
REQUEST_TOKEN=reply.requestToken;
Console.WriteLine(“decision=“+reply.decision”);
Console.WriteLine(“reasonCode=“+reply.reasonCode”);
Console.WriteLine(“requestID=“+reply.requestID”);
Console.WriteLine(“requestToken=“+reply.requestToken”);
Console.WriteLine(“ccAuthReply.reasonCode=“+reply.ccAuthReply.reasonCode”);
}
捕获(超时异常e)
{
Console.WriteLine(“TimeoutException:”+e.Message+“\n”+e.StackTrace);
}
捕获(错误异常e)
{
Console.WriteLine(“FaultException:+e.Message+”\n“+e.StackTrace);
}
捕获(通信异常e)
{
Console.WriteLine(“通信异常:“+e.Message+”\n“+e.StackTrace”);
}
Console.ReadLine();
}
///
///申请退款的方法
///
私有静态void requestreturn()
{
RequestMessage请求=新的RequestMessage();
request.merchantID=商户ID;
request.merchantReferenceCode=“123”;
request.clientLibrary=“.NET WCF”;
request.clientLibraryVersion=Environment.Version.ToString();
request.clientEnvironment=Environment.OSVersion.Platform+Environment.OSVersion.Version.ToString();
request.ccAuthService=新的ccAuthService();
request.ccAuthService.run=“true”;
//request.ccAuthReversalService=新的ccAuthReversalService();
//request.ccAuthReversalService.run=“true”;
//request.ccAuthReversalService.authRequestID=请求\u ID;
//request.orderRequestToken=请求\令牌;
//request.purchaseTotals=新的purchaseTotals();
//request.purchaseTotals.currency=“USD”;
//request.purchaseTotals.grandTotalAmount=“10”;
VoidService reqVoid=新的VoidService();
reqVoid.voidRequestID=请求\u ID;
reqVoid.voidRequestToken=请求令牌;
reqVoid.run=“true”;
request.voidService=reqVoid;
尝试
{
TransactionProcessorClient proc=新建TransactionProcessorClient();
proc.ChannelFactory.Credentials.UserName.UserName=request.merchantID;
proc.ChannelFactory.Credentials.UserName.Password=事务密钥;
ReplyMessage reply=proc.runTransaction(请求);
Console.WriteLine(“decision=“+reply.decision”);
Console.WriteLine(“reasonCode=“+reply.reasonCode”);
Console.WriteLine(“requestID=“+reply.requestID”);
Console.WriteLine(“requestToken=“+reply.requestToken”);
}
捕获(超时异常e)
{
Console.WriteLine(“TimeoutException:”+e.Message+“\n”+e.StackTrace);
}
捕获(错误异常e)
{
Console.WriteLine(“FaultException:+e.Message+”\n“+e.StackTrace);
}
捕获(通信异常e)
{
Console.WriteLine(“通信异常:“+e.Message+”\n“+e.StackTrace”);
}
Console.ReadLine();
}
}
}
RequestMessage request = new RequestMessage();
request.ccAuthReversalService = new CCAuthReversalService();
request.ccAuthReversalService.run = "true";
request.ccAuthReversalService.authRequestID = order.Transactionno;
request.ccAuthReversalService.authRequestToken = order.RequestToken;
request.purchaseTotals = new PurchaseTotals();
request.purchaseTotals.currency = "USD";
request.purchaseTotals.grandTotalAmount = (order.Total).ToString("0.00");
request.merchantID = MerchantId;
request.merchantReferenceCode = order.OrderNumber;
TransactionProcessorClient proc = new TransactionProcessorClient();
proc.ChannelFactory.Credentials.UserName.UserName = request.merchantID;
proc.ChannelFactory.Credentials.UserName.Password = Key;
ReplyMessage reply = proc.runTransaction(request);
request.ccAuthReversalService.authRequestToken = order.RequestToken;
request.purchaseTotals.currency = "USD";
request.ecDebitService = new ECDebitService();
request.ecDebitService.run = "true";
request.ecCreditService = new ECCreditService();
equest.ecCreditService.run = "true";