- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我的应用程序中,我需要使用 paypal advanced 设置定期计费部分,我正在使用 payflow 部分来执行相同的操作。我需要使用 PayPal 按钮流程(快速结账流程)和信用卡付款来创建定期配置文件。我最初的要求是这样的:
public static PayPalRedirectAdv PayFlow()
{
NameValueCollection requestArray = new NameValueCollection()
{
{"PARTNER", "PayPal"}, // You'll want to change these 4
{"VENDOR", "merchantname"}, // To use your own credentials
{"USER", "username"},
{"PWD", "abcdenfg"},
{"TRXTYPE", "A"},
{"AMT", "1.00"},
{"CURRENCY", "USD"},
{"CREATESECURETOKEN", "Y"},
{"SECURETOKENID", "tokenId generated"},
{"RETURNURL", UrlReturn},
{"CANCELURL", UrlCancel},
{"ERRORURL", lUrlError},
{"BILLINGTYPE","RecurringBilling"}
};
NameValueCollection resp = run_payflow_call(requestArray); // Will call the payflow end point via HttpWebRequest
if (resp["RESULT"] == "0")
{
string mode = "TEST";
return new PayPalRedirectAdv
{
Url = "https://payflowlink.paypal.com?SECURETOKEN=" + resp["SECURETOKEN"] + "&SECURETOKENID=" + resp["SECURETOKENID"] + "&MODE=" + mode
};
}
else
{
return new PayPalRedirectAdv { Url = string.Empty };
}
}
该过程完成后,我将 url 设置为 IFrame,并将其嵌入到我的 mvc 项目的一个 View 中。加载 IFrame 时,它有两个问题。
1) 页面被重定向到顶层。这意味着浏览器窗口被重定向到 IFrame url。我选择布局 C 作为我的托管结帐页面。当我使用演示项目中提供的凭据时,浏览器导航就解决了;即 Iframe 在我的 View 中正确加载。Paypal 管理器设置中是否有任何设置可以防止这种情况发生?我尝试通过沙盒顶级导航来解决此问题,但这不允许我通过单击“使用 Paypal 结账”按钮重定向到 PayPal 网站。
2) 对于信用卡支付,一旦交易成功,我将通过以下方式将现有交易转换为配置文件:
"TRXTYPE=R&TENDER=C&PARTNER=PayPal&VENDOR=Acme&USER=Acme&PWD=a1b2c3d4&ACTION=A&PROFILENAME=RegularSubscription&ORIGID=<PNREF>&START=12012002&PAYPERIOD=
WEEK&TERM=12&OPTIONALTRX=S&OPTIONALTRXAMT=2.00&COMMENT1=First-time
customer&AMT=42.00"
这工作正常,并创建了重复配置文件。
但是,当我单击“使用 Paypal 结账”按钮时,这会将我带到 Paypal 页面,我可以在该页面上使用我的 Paypal 凭据登录 Paypal,然后当我单击“paynow”按钮时,它将扣除从我的帐户中取钱。这也有一个 PNERF 值,当我使用上面相同的代码通过将 Tender 替换为 P 将交易转换为重复配置文件时,它向我显示了一条响应消息“未找到与此 ID 对应的交易 ID”。 Paypal 结帐流程不会显示任何有关用户要进行定期付款部分的信息。
另外,我关注了Express Checkout with recurring billing完成任务,但我在 DoExpressCheckout 步骤中将 BAID 设置为 null。
我需要在我的网站上同时使用 paypal 和信用卡支付选项,那么我应该使用什么参数来完成此操作?
提前致谢。
最佳答案
string strUsername = "<<paypal_username>>";
string strPassword = "<<paypal_password>>";
string strSignature = "<<paypal_signature>>";
string strCredentials = "USER=" + strUsername + "&PWD=" + strPassword + "&SIGNATURE=" + strSignature;
string strNVPSandboxServer = "https://api-3t.sandbox.paypal.com/nvp";
string strAPIVersion = "2.3";
//4456193676582624 4025609244685781
string strNVP = strCredentials + "&METHOD=DoDirectPayment" +
"&CREDITCARDTYPE=VISA" +
"&ACCT=<<CARDNO>>" +
"&EXPDATE=<<EXPDATE>>" +
"&CVV2=<<CVV>" +
"&AMT=<<AMOUNT>>" +
"&FIRSTNAME=<<CUST_NAME>>" +
"&LASTNAME=<<CUST_LASTNAME>>" +
"&CURRENCYCODE=<<CURRENCY_CODE>>" +
"&IPADDRESS=<<USER_IP>>" +
"&STREET=<<ADDRESS>>" +
"&CITY=<<CITY>>" +
"&STATE=<<STATE>>" +
"&COUNTRY=<<COUNTRY>>" +
"&ZIP=<<XIPCODE>>" +
"&COUNTRYCODE=<<COUNTRY>>" +
"&PAYMENTACTION=SALE" +
"&L_NAME0=item1&L_DESC0=test1description&L_AMT0=1&L_QTY0=1" +
"&L_NAME1=item2&L_DESC1=test2description&L_AMT1=2&L_QTY1=2" +
"&L_NAME2=item3&L_DESC2=test3description&L_AMT2=3&L_QTY2=3" +
"&VERSION=" + strAPIVersion;
//strNVP = Server.UrlEncode(strNVP);
try
{
//Create web request and web response objects, make sure you using the correct server (sandbox/live)
HttpWebRequest wrWebRequest = (HttpWebRequest)WebRequest.Create(strNVPSandboxServer);
wrWebRequest.Method = "POST";
StreamWriter requestWriter = new StreamWriter(wrWebRequest.GetRequestStream());
requestWriter.Write(strNVP);
requestWriter.Close();
// Get the response.
HttpWebResponse hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse();
StreamReader responseReader = new StreamReader(wrWebRequest.GetResponse().GetResponseStream());
//and read the response
string responseData = responseReader.ReadToEnd();
responseReader.Close();
string result = Server.UrlDecode(responseData);
string[] arrResult = result.Split('&');
Hashtable htResponse = new Hashtable();
string[] responseItemArray;
foreach (string responseItem in arrResult)
{
responseItemArray = responseItem.Split('=');
htResponse.Add(responseItemArray[0], responseItemArray[1]);
}
string strAck = htResponse["ACK"].ToString();
if (strAck == "Success" || strAck == "SuccessWithWarning")
{
string strAmt = htResponse["AMT"].ToString();
string strCcy = htResponse["CURRENCYCODE"].ToString();
string strTransactionID = htResponse["TRANSACTIONID"].ToString();
//ordersDataSource.InsertParameters["TransactionID"].DefaultValue = strTransactionID;
string strSuccess = "Thank you, your order for: $" + strAmt + " " + strCcy + " has been processed.";
Response.Write(strSuccess);
//successLabel.Text = strSuccess;
}
else
{
string strErr = "Error: " + htResponse["L_LONGMESSAGE0"].ToString();
string strErrcode = "Error code: " + htResponse["L_ERRORCODE0"].ToString();
//errLabel.Text = strErr;
//errcodeLabel.Text = strErrcode;
return;
}
}
catch (Exception ex)
{
// do something to catch the error, like write to a log file.
Response.Write("error processing");
}`enter code here`
尝试使用此代码....无需 DLL 即可请求 paypal 付款。
关于c# - 使用托管页面的 Express Checkout 和信用卡付款的 Paypal Advanced 定期计费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18379081/
我是 .NET 编程的新手,目前我正在开发一个计算机健康监控系统,该系统目前处于初级阶段。我将使用 C# 2010 并使用 WMI 查询来查询计算机信息。 在进一步开发应用程序之前,我创建了一个迷你测
我正在考虑开发一个站点,服务器将定期抓取另一个站点,以便为我的数据库中的某些条目收集内容。我的问题如下... 如何让服务器及时执行抓取? 你能让它执行 php 还是你用什么语言来执行抓取? 有什么好的
使用 JobScheduler , 我设置了一个简单的 JobService如下: @TargetApi(21) public class SimpleJobService extends JobSe
我想定期从我的 JavaFX 应用程序执行任务。该任务从远程流中提取数据。 虽然我知道我可以按照下面的建议使用计时器: JavaFX periodic background task 我相信这应该能够
上下文 我们使用多个具有相同工作流程的 git 存储库,涉及两个分支,并且想知道如何最好地将一个提交“同步”到另一个。 简单地说,我们的 git 存储库包含: 长寿枝 两个分支: master(持续开
我正在编写一个需要以高精度和低频率进行后台位置更新的应用程序。解决方案似乎是一个后台 NSTimer 任务,它启动位置管理器的更新,然后立即关闭。之前有人问过这个问题: How do I get a
我有一个包含产品的商业系统。产品被分类并且还具有属性组。 我想同步/更新将来自商务系统的产品转换为在 Orchard 中定义的产品项目的内容类型,以便将数据从商务系统推送到 Orchard 内容项目。
所以我想做的只是按时间间隔更新 Activity 的 View ,比如每秒一次。在这个特定的例子中有几个按钮,我想要改变的只是它们的文本。我在这里阅读了很多解决相同问题的问题,但我似乎比其他人更容易陷
我有一个项目的 recyclerView,(除其他外)包含从 WS 检索的游戏持续时间的时间戳。为了显示比赛的持续时间,我必须获取当前时间戳,做垫子并将其转换为可读格式(例如:5 分钟 5 秒)。只有
这可能是一个愚蠢的问题,但经过几个小时的谷歌搜索后我找不到合适的答案.. 我们有一个在 cloudbees 上运行的业务关键型应用程序。源代码已正确备份,我们希望我们的数据库也有相同的备份。 Clou
我一直在观察我的 PostgreSQL 只读副本显示复制滞后的周期性延迟。延迟似乎会增加到 30-40 分钟,然后自动下降到 0。这与 CPU 利用率 相关,但它远未接近 CPU 限制。 读取流量来自
我已完成 Keepalived + MySQL(master - master)设置。 我将 MASTER 和 BACKUP 的优先级保持不变,因为我不希望它们开始频繁抖动(一次切换 VIP 就足够了
我目前有一个图像,如果本地内容可用,它会被 ping 以仅显示一个 div。 但我认为更好的实现方式是以 30 秒为间隔定期检查 ping,如果图像未成功 ping,则显示 #offline div。
我正在尝试编写一项服务,该服务将每隔 X 分钟尝试获取设备的 GPS 位置,并在后台运行和记录,即使应用程序未处于焦点状态也是如此。 那么,是时候创建服务了。 我创建了一个服务,设置了 locatio
我在这里阅读了很多问题,但无法弄清楚问题是什么。 我正在为 Android 编写现场服务应用程序。在其中一个 Activity (MyActivity.java) 中,我有两个按钮:开始和停止。 当现
假设我有这样的代码: git fetch && git diff origin origin/master --quiet || echo "untracked" 我希望它定期运行。比方说,每秒一次
我想建立与 HTTPS 服务器(例如 google.com)的连接并定期获取新鲜内容。 我编写了简单的 HTTP 客户端: public class AsyncLoader { private
我想定期进行 wifi 扫描(可能每 5 分钟一次)并将结果导出到一个 txt 文件,以便它显示 AP SSID 和 MAC 以及接收到的信号强度。我是 Android 开发的新手,所以我只知道基础知
当手机处于 sleep 模式时,Workmanager 不会向我的服务器发送坐标。异步任务被杀死? 我使用 Workmanager (PeriodicWorkRequest) 每 15 分钟获取一次坐
目标 收集 LogCat 的定期更新并将这些文本 block 保存(附加)到 SD 卡上的文件中 问题 Log 类不提供自特定时间戳以来的更新 可能的解决方案 我的计划是定期运行类似于以下代码:htt
我是一名优秀的程序员,十分优秀!