[英]How do I charge a stored credit card with the payflow pro API?
I'm using the PayflowNETAPI class of the PayflowPro API (Payflow_dotNET.dll) to submit a transaction to store credit cards so my company doesn't have to (for PCI Compliant reassons). 我正在使用PayflowPro API的PayflowNETAPI类(Payflow_dotNET.dll)来提交存储信用卡的交易,因此我的公司没有(针对PCI Compliant reassons)。 I'm using the PNREF from the credit card store transaction to make reference transaction but I keep getting "RESULT=2&PNREF=&RESPMSG=Invalid tender" I've tried Authorization, Capture, and Sale transactions and they all give the same result. 我正在使用信用卡商店交易中的PNREF进行参考交易,但我一直收到“RESULT = 2&PNREF =&RESPMSG =无效投标”我尝试了授权,捕获和销售交易,他们都给出了相同的结果。 What am I doing wrong? 我究竟做错了什么?
I've read through the Payflow Gateway Developer Guide and Reference several times ( https://developer.paypal.com/docs/classic/payflow/integration-guide/ ). 我已经多次阅读了Payflow Gateway开发人员指南和参考资料( https://developer.paypal.com/docs/classic/payflow/integration-guide/ )。 All the examples for Authorization, Capture, and Sale transactions have the credit card information in the request. 授权,捕获和销售交易的所有示例都在请求中包含信用卡信息。 There is some small sections that explain and outline credit card uploads but never use the result of the request in a reference transaction. 有一些小部分解释和概述了信用卡上传,但从未在参考交易中使用请求的结果。
Below is a sample application and the output 下面是一个示例应用程序和输出
string creditCardUploadRequest = "TRXTYPE=L&TENDER=C&ACCT=4111111111111111&EXPDATE=1218&CVV2=250&BILLTOFIRSTNAME=Homer&BILLTOLASTNAME=Simpson&BILLTOSTREET=350 5th Ave&BILLTOCITY=New York&BILLTOSTATE=NY&BILLTOZIP=10118&BILLTOCOUNTRY=840&USER=<USER>&VENDOR=<VENDOR>&PARTNER=<PARTNER>&PWD=<PASSWORD>&VERBOSITY=HIGH";
var client = new PayPal.Payments.Communication.PayflowNETAPI(HostAddress: "pilot-payflowpro.paypal.com", HostPort: 443, Timeout: 90);
var ccUploadResponse = client.SubmitTransaction(ParamList: creditCardUploadRequest, RequestId: PayflowUtility.RequestId);
//place the responses into collection
var payPalCollection = new NameValueCollection();
foreach (string element in ccUploadResponse.Split('&'))
{
string[] Temp = element.Split('=');
payPalCollection.Add(Temp[0], Temp[1]);
}
Console.WriteLine("creditCardUploadRequest succeeded = {0}", payPalCollection.Get("RESPMSG") == "Approved");
string authorizationRequest = "TRXTYPE=A&ORIGID=" + payPalCollection.Get("PNREF") + "&INVNUM=ORD123456&AMT=50&COMMENT1=My Product Sale&USER=<USER>&VENDOR=<VENDOR>&PARTNER=<PARTNER>&PWD=<PASSWORD>&VERBOSITY=HIGH";
var authorizationResponse = client.SubmitTransaction(ParamList: authorizationRequest, RequestId: PayflowUtility.RequestId);
foreach (string element in authorizationResponse.Split('&'))
{
Console.WriteLine(element);
}
Console.WriteLine("\nDONE");
Console.ReadKey();
OUTPUT: OUTPUT:
creditCardUploadRequest succeeded = True creditCardUploadRequest succeeded = True
RESULT=2 RESULT = 2
PNREF=A7X08AB571EC PNREF = A7X08AB571EC
RESPMSG=Invalid tender RESPMSG =投标无效
DONE DONE
In your second call you are missing the variable "TENDER=C" . 在您的第二个电话中,您缺少变量“TENDER = C”。 Add that and it should be fine . 添加它,它应该没问题。
"string authorizationRequest = "TRXTYPE=A&ORIGID=" + payPalCollection.Get("PNREF") + "&INVNUM=ORD123456&AMT=50&COMMENT1=My Product Sale&USER=<USER>&VENDOR=<VENDOR>&PARTNER=<PARTNER>&PWD=<PASSWORD>&VERBOSITY=HIGH"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.