C# 如何在MVC中使用Paypal Checkout托管页面进行信用卡支付#

C# 如何在MVC中使用Paypal Checkout托管页面进行信用卡支付#,c#,asp.net-mvc,paypal,C#,Asp.net Mvc,Paypal,我在使用Paypal Checkout托管的信用卡交易页面实现信用卡支付时面临问题 这是我的Paypal支付代码: public ActionResult CreatePayment(string packageName) { #region check client balance long clientid = Convert.ToInt64(Session["iClientId"]); string newPaymentMethod

我在使用Paypal Checkout托管的信用卡交易页面实现信用卡支付时面临问题

这是我的Paypal支付代码:

public ActionResult CreatePayment(string packageName)
    {
        #region check client balance
        long clientid = Convert.ToInt64(Session["iClientId"]);
        string newPaymentMethod = "PayPal";
        ClientPackageInfo obj = new ClientPackageInfo();
        obj = objPaymentHelper.CalculateNewPackage(packageName, clientid, newPaymentMethod);

        #region current package descriptor for paypal display
        var newPkg = db.Package.Where(cs => cs.PackageId == obj.newPackageId).SingleOrDefault();
        string paypalDisplayDecription = "Package : "+newPkg.Name+", Price : "+newPkg.Price+", Payable : "+obj.paymentAmount+", Description : "+newPkg.Description;
        #endregion

        if (obj.IsPaymentNeeded == true)
        {

            #region paypal viewdata
            var viewData = new PayPalViewData();
            var guid = Guid.NewGuid().ToString();

            var paymentInit = new PayPal.Api.Payments.Payment
            {
                intent = "authorize",
                payer = new PayPal.Api.Payments.Payer
                {
                    payment_method = "paypal"
                },
                transactions = new List<PayPal.Api.Payments.Transaction>
            {
                new PayPal.Api.Payments.Transaction
                {
                    amount = new PayPal.Api.Payments.Amount
                    {
                        currency = "USD",
                        total = (obj.paymentAmount + 0.0 + 0.0).ToString(),
                        details = new PayPal.Api.Payments.Details
                        {
                            subtotal = obj.paymentAmount.ToString(),
                            tax = 0.0.ToString(),
                            shipping = 0.0.ToString()
                        }
                    },
                    description = paypalDisplayDecription,
                },
            },
                redirect_urls = new PayPal.Api.Payments.RedirectUrls
                {
                    return_url = Utilities.ToAbsoluteUrl(HttpContext, String.Format("~/payment/confirmed?id={0}", guid)),
                    cancel_url = Utilities.ToAbsoluteUrl(HttpContext, String.Format("~/payment/index?id={0}", guid)),
                },
            };

            viewData.JsonRequest = JObject.Parse(paymentInit.ConvertToJson()).ToString(Newtonsoft.Json.Formatting.Indented);
            #endregion

            #region create payment
            try
            {
                var abc = ConfigManager.Instance.GetProperties()["ClientID"];
                var abcc = ConfigManager.Instance.GetProperties()["ClientSecret"];
                var accessToken = new PayPal.OAuthTokenCredential(ConfigManager.Instance.GetProperties()["ClientID"], ConfigManager.Instance.GetProperties()["ClientSecret"]).GetAccessToken();
                var apiContext = new PayPal.APIContext(accessToken);
                var createdPayment = paymentInit.Create(apiContext);

                var approvalUrl = createdPayment.links.ToArray().FirstOrDefault(f => f.rel.Contains("approval_url"));

                if (approvalUrl != null)
                {
                    Session.Add(guid, createdPayment.id);

                    return Redirect(approvalUrl.href);
                }

                viewData.JsonResponse = JObject.Parse(createdPayment.ConvertToJson()).ToString(Newtonsoft.Json.Formatting.Indented);

                return View("Error", viewData);
            }
            catch (PayPalException ex)
            {
                viewData.ErrorMessage = ex.Message;
                return View("Error", viewData);
            }
            #endregion
        }
        else
        {
            #region save client information
            SaveClientInfo saveinfo = new SaveClientInfo();
            saveinfo = objPaymentHelper.SaveInfo(obj);
            if(saveinfo.isSuccessfull == true)
            {
                Session["message"] = "show";
                return RedirectToAction("Index", "iClientPackageHistory");
            }
            else
            {
                return View("Error");
            }
            #endregion
        }

        #endregion
    }
public ActionResult CreatePayment(字符串packageName)
{
#地区检查客户余额
long clientid=Convert.ToInt64(会话[“iClientId]”);
字符串newPaymentMethod=“PayPal”;
ClientPackageInfo obj=新的ClientPackageInfo();
obj=objPaymentHelper.CalculateNewPackage(packageName、clientid、newPaymentMethod);
#paypal显示的区域当前包描述符
var newPkg=db.Package.Where(cs=>cs.PackageId==obj.newPackageId.SingleOrDefault();
字符串paypalDisplayDecription=“包装:”+newPkg.Name+”,价格:“+newPkg.Price+”,应付:“+obj.paymentAmount+”,说明:“+newPkg.Description;
#端区
if(obj.IsPaymentNeeded==true)
{
#地区贝宝可视数据
var viewData=新的PayPalViewData();
var guid=guid.NewGuid().ToString();
var paymentInit=新的PayPal.Api.Payments.Payment
{
intent=“授权”,
payer=新的PayPal.Api.Payments.payer
{
付款方式=“贝宝”
},
事务=新列表
{
新PayPal.Api.Payments.Transaction
{
金额=新PayPal.Api.Payments.amount
{
货币=“美元”,
total=(obj.paymentAmount+0.0+0.0).ToString(),
详细信息=新的PayPal.Api.Payments.details
{
小计=对象付款金额ToString(),
tax=0.0.ToString(),
shipping=0.0.ToString()
}
},
description=PayPalDisplayDescription,
},
},
redirect_URL=新的PayPal.Api.Payments.RedirectURL
{
return_url=Utilities.toabsolutionUrl(HttpContext,String.Format(“~/payment/confirmed?id={0}”,guid)),
cancel_url=Utilities.toabsolutionUrl(HttpContext,String.Format(“~/payment/index?id={0}”,guid)),
},
};
viewData.JsonRequest=JObject.Parse(paymentInit.ConvertToJson()).ToString(Newtonsoft.Json.Formatting.Indented);
#端区
#区域创建付款
尝试
{
var abc=ConfigManager.Instance.GetProperties()[“ClientID”];
var abcc=ConfigManager.Instance.GetProperties()[“ClientSecret”];
var accessToken=new PayPal.OAuthTokenCredential(ConfigManager.Instance.GetProperties()[“ClientID”]、ConfigManager.Instance.GetProperties()[“ClientSecret”]).GetAccessToken();
var apiContext=new PayPal.apiContext(accessToken);
var createdPayment=paymentInit.Create(apiContext);
var approvalUrl=createdPayment.links.ToArray().FirstOrDefault(f=>f.rel.Contains(“批准url”);
如果(approvalUrl!=null)
{
添加(guid,createdPayment.id);
返回重定向(approvalUrl.href);
}
viewData.JsonResponse=JObject.Parse(createdPayment.ConvertToJson()).ToString(Newtonsoft.Json.Formatting.Indented);
返回视图(“错误”,viewData);
}
捕获(PayPalException例外)
{
viewData.ErrorMessage=例如消息;
返回视图(“错误”,viewData);
}
#端区
}
其他的
{
#区域保存客户端信息
SaveClientInfo saveinfo=新的SaveClientInfo();
saveinfo=objPaymentHelper.saveinfo(obj);
if(saveinfo.issucessfull==true)
{
会话[“消息”]=“显示”;
返回重定向到操作(“索引”、“iClientPackageHistory”);
}
其他的
{
返回视图(“错误”);
}
#端区
}
#端区
}

我无法找到一种方法来使用Paypal的签出托管页面。我已经生成了Paypal的代码片段,可以在我的页面上使用。请帮助我如何更改此代码,以便能够使用使用C#MVC的Paypal签出托管页面。

我在您的代码中没有看到您呼叫Paypal的任何地方。你创建的数据包是要发送给PayPal的,但我看不到你在发送。我同意@CodingYoshi的说法,你从不打电话给PayPal服务。就像这样,你写一封信,放进信封。这是你的密码。问题是没有地址可以发送。所以信封(你的代码)就放在那里。打电话给PayPal,这样您的服务请求就可以发送数据包,然后也可以接收结果。。。很抱歉用信封来比喻。我想试穿一下。我想你对PayPal的实现不太了解,只是在这里发表评论,这是使用PayPal帐户呼叫并将我重定向到PayPal页面进行交易的代码:return Redirect(approvalUrl.href);