简单的问题。我该怎么做。
我已设法连接到 Paypal 网络服务并使用沙盒,但我什至无法开始。
该文档在您必须遵循的步骤中很容易理解,但我无法获得任何代码来编译更不用说运行了。据我所知。见下文,PayPalTest
是我的服务引用的名称
我已经标记了它开始出错的地方我无法获得正确的参数,无论我尝试声明或实例化什么并获得无效类型错误(厄运的红色波浪线)。
我应该做什么。有没有人可以分享工作样本。是的,我可以看到很多使用 Ajax、jQuery 等的示例。但是我找不到任何可以按照我想要的方式进行的操作。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace GenericWebApplication.ApplicationClasses
{
class PayPalIntegration
{
public void PayForGoods()
{
PayPalTest.CustomSecurityHeaderType c = new PayPalTest.CustomSecurityHeaderType();
c.Credentials.Username = "xxxxx.xxxxx.xxxxx.xxxxx";
c.Credentials.Password = "XXXXXXXXXXXX";
c.Credentials.Signature = "XXxxX-XXXxxXXxX.XXXXXXXxxXXxXX-XXXXxxxXXXXxxXXXXxxXXX";
PayPalTest.PayPalAPIAAInterfaceClient cl = new PayPalTest.PayPalAPIAAInterfaceClient();
//I get stuck here
PayPalTest.SetExpressCheckoutReq r = new PayPalTest.SetExpressCheckoutReq();
PayPalTest.SetExpressCheckoutRequestDetailsType d = new SetExpressCheckoutRequestDetailsType();
d.ReturnURL = "";
d.CancelURL = "";
PayPalTest.SetExpressCheckoutResponse re = cl.SetExpressCheckout(d, d);
}
}
}
[更新]
encoder["METHOD"] = "SetExpressCheckout";
encoder["USER"] = APIUsername;
encoder["PWD"] = APIPassword;
encoder["SIGNATURE"] = APISignature;
encoder["RETURNURL"] = returnURL;
encoder["CANCELURL"] = cancelURL;
encoder["VERSION"] = SystemFunctions.Settings("PayPalVersion", "")[0].Value;
encoder["NOSHIPPING"] = "2";
encoder["PAYMENTREQUEST_0_AMT"] = amt;
encoder["MAXAMT"] = amt;
encoder["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale";
encoder["PAYMENTREQUEST_0_CURRENCYCODE"] = "GBP";
encoder["PAYMENTREQUEST_0_DESC"] = "test EC payment";
encoder["PAYMENTREQUEST_0_SHIPPINGAMT"] = SystemFunctions.Shipping;
//Optional Shipping Address entered on the merchant site
encoder["PAYMENTREQUEST_0_SHIPTONAME"] = shipToName;
encoder["PAYMENTREQUEST_0_SHIPTOSTREET"] = shipToStreet;
encoder["PAYMENTREQUEST_0_SHIPTOSTREET2"] = shipToStreet2;
encoder["PAYMENTREQUEST_0_SHIPTOCITY"] = shipToCity;
encoder["PAYMENTREQUEST_0_SHIPTOSTATE"] = shipToState;
encoder["PAYMENTREQUEST_0_SHIPTOZIP"] = shipToZip;
encoder["PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE"]= shipToCountryCode;
encoder["EMAIL"] = SystemFunctions.UserAddress.Email;
encoder["SOLUTIONTYPE"] = "Sole";
encoder["LANDINGPAGE"] = "Billing";
encoder["CHANNELTYPE"] = "Merchant";
encoder["PAYMENTREQUEST_0_ITEMAMT"] = SystemFunctions.TrolleyTotal.ToString("0.00");
encoder["L_PAYMENTREQUEST_0_NAME0"] = "Goods";
encoder["L_PAYMENTREQUEST_0_AMT0"] = SystemFunctions.TrolleyTotal.ToString("0.00");
encoder["L_PAYMENTREQUEST_0_NUMBER0"]="ABC123";
encoder["L_PAYMENTREQUEST_0_QTY0"] = "1";
最佳答案
Paypal Code Wizard来自 PayPal Developer 站点的示例 ASP.Net for Express Checkout。只需从下拉列表中选择 ASP.net。
这里只是一些示例。您可以获得所有 ASP.Net 以及来自 PayPal 代码向导的功能。您需要从 PayPal 代码向导下载五个文件。我确实包含了来自 PayPal 向导站点的代码片段。
这是处理计费的代码部分:
if (PaymentOption == "PayPal")
{
NVPAPICaller test = new NVPAPICaller();
string retMsg = "";
string token = "";
if (Session["payment_amt"] != null)
{
string amt = Session["payment_amt"].ToString();
//Optional Shipping Address entered on the merchant site
string shipToName = "<PAYMENTREQUEST_0_SHIPTONAME>";
string shipToStreet = "<PAYMENTREQUEST_0_SHIPTOSTREET>";
string shipToStreet2 = "<PAYMENTREQUEST_0_SHIPTOSTREET2>";
string shipToCity = "<PAYMENTREQUEST_0_SHIPTOCITY>";
string shipToState = "<PAYMENTREQUEST_0_SHIPTOSTATE>";
string shipToZip = "<PAYMENTREQUEST_0_SHIPTOZIP>";
string shipToCountryCode = "<PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE>";
bool ret = test.MarkExpressCheckout(amt, shipToName, shipToStreet, shipToStreet2,
shipToCity, shipToState, shipToZip, shipToCountryCode,
ref token, ref retMsg);
if (ret)
{
Session["token"] = token;
Response.Redirect(retMsg);
}
else
{
Response.Redirect("APIError.aspx?" + retMsg);
}
}
else
{
Response.Redirect( "APIError.aspx?ErrorCode=AmtMissing" );
}
}
这是处理计费的部分:
if (PaymentOption == "PayPal")
{
NVPAPICaller test = new NVPAPICaller();
string retMsg = "";
string token = "";
string payerId = "";
token = Session["token"].ToString();
bool ret = test.GetShippingDetails( token, ref payerId, ref shippingAddress, ref retMsg );
if (ret)
{
Session["payerId"] = payerId;
Response.Write ( shippingAddress );
}
else
{
Response.Redirect("APIError.aspx?" + retMsg);
}
}
这是处理付款确认的部分:
if (PaymentOption == "PayPal")
{
NVPAPICaller test = new NVPAPICaller();
string retMsg = "";
string token = "";
string finalPaymentAmount = "";
string payerId = "";
NVPCodec decoder;
token = Session["token"].ToString();
payerId = Session["payerId"].ToString();
finalPaymentAmount = Session["payment_amt"].ToString();
bool ret = test.ConfirmPayment( finalPaymentAmount, token, PayerId, ref decoder, ref retMsg );
if (ret)
{
// Unique transaction ID of the payment. Note: If the PaymentAction of the request was Authorization or Order, this value is your AuthorizationID for use with the Authorization & Capture APIs.
string transactionId = decoder["PAYMENTINFO_0_TRANSACTIONID"];
// The type of transaction Possible values: l cart l express-checkout
string transactionType = decoder["PAYMENTINFO_0_TRANSACTIONTYPE"];
// Indicates whether the payment is instant or delayed. Possible values: l none l echeck l instant
string paymentType = decoder["PAYMENTINFO_0_PAYMENTTYPE"];
// Time/date stamp of payment
string orderTime = decoder["PAYMENTINFO_0_ORDERTIME"];
// The final amount charged, including any shipping and taxes from your Merchant Profile.
string amt = decoder["PAYMENTINFO_0_AMT"];
// A three-character currency code for one of the currencies listed in PayPay-Supported Transactional Currencies. Default: USD.
string currencyCode = decoder["PAYMENTINFO_0_CURRENCYCODE"];
// PayPal fee amount charged for the transaction
string feeAmt = decoder["PAYMENTINFO_0_FEEAMT"];
// Amount deposited in your PayPal account after a currency conversion.
string settleAmt = decoder["PAYMENTINFO_0_SETTLEAMT"];
// Tax charged on the transaction.
string taxAmt = decoder["PAYMENTINFO_0_TAXAMT"];
//' Exchange rate if a currency conversion occurred. Relevant only if your are billing in their non-primary currency. If
string exchangeRate = decoder["PAYMENTINFO_0_EXCHANGERATE"];
}
else
{
Response.Redirect("APIError.aspx?" + retMsg);
}
}
关于c# - Paypal 快速结帐 Asp.Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32187655/