【问题标题】:PayPal tutorial missing references?PayPal 教程缺少参考资料?
【发布时间】:2017-08-27 02:24:51
【问题描述】:

尝试关注PayPal .NET tutorial on GitHub

我已尽我所能修复它,但仍然遇到很多与缺少功能等相关的错误。这是我目前所遇到的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using PayPal.Api;
using System.Configuration;
using PayPal.Sample.Utilities;
using System.Web.Providers.Entities;

/// <summary>
/// Summary description for OAuthTokenCredential
/// </summary>
public class CredentialManager
{
    Dictionary<string, string> _Config = null;
    string _AccessToken = string.Empty;
    APIContext _APIConText = null;


    public CredentialManager()
    {
        // Get a reference to the config
        var config = ConfigManager.Instance.GetProperties();
        _Config = config;

        // Use OAuthTokenCredential to request an access token from PayPal
        var accessToken = new OAuthTokenCredential(config).GetAccessToken();
        _AccessToken = accessToken;

        //API Context
        var apiContext = new APIContext(accessToken);
        _APIConText = apiContext;

        // Initialize the apiContext's configuration with the default configuration for this application.
        apiContext.Config = ConfigManager.Instance.GetProperties();

        // Define any custom configuration settings for calls that will use this object.
        apiContext.Config["connectionTimeout"] = "1000"; // Quick timeout for testing purposes

        // Define any HTTP headers to be used in HTTP requests made with this APIContext object
        //if (apiContext.HTTPHeaders == null)
        //{
        //    apiContext.HTTPHeaders = new Dictionary<string, string>();
        //}
        //apiContext.HTTPHeaders["some-header-name"] = "some-value"; 
    }    

    public Payment GetPAyment(APIContext apiContext, string paymentid)
    {
        var payment = Payment.Get(apiContext, paymentid);

        return payment;
    }

    public bool CreatePayment()
    {
        try
        {
            bool Success = false;
            //var apiContext = Configuration.GetAPIContext();
            string payerId = Request.Params["PayerID"];

            if (string.IsNullOrEmpty(payerId))
            {
                var itemList = new ItemList()
                {
                    items = new List<Item>()
                    {
                        new Item()
                        {
                            name = "Item Name",
                            currency = "USD",
                            price = "15",
                            quantity = "5",
                            sku = "sku"
                        }
                    }
                };
                var payer = new Payer() { payment_method = "paypal" };
                var baseURI = Request.Url.Scheme + "://" + Request.Url.Authority + "/PaymentWithPayPal.aspx?";
                var guid = Convert.ToString((new Random()).Next(100000));
                var redirectUrl = baseURI + "guid=" + guid;
                var redirUrls = new RedirectUrls()
                {
                    cancel_url = redirectUrl + "&cancel=true",
                    return_url = redirectUrl
                };
                var details = new Details()
                {
                    tax = "15",
                    shipping = "10",
                    subtotal = "75"
                };
                var amount = new Amount()
                {
                    currency = "USD",
                    total = "100.00", // Total must be equal to sum of shipping, tax and subtotal.
                    details = details
                };
                var transactionList = new List<Transaction>();

                transactionList.Add(new Transaction()
                {
                    description = "Transaction description.",
                    invoice_number = Common.GetRandomInvoiceNumber(),
                    amount = amount,
                    item_list = itemList
                });

                var payment = new Payment()
                {
                    intent = "sale",
                    payer = payer,
                    transactions = transactionList,
                    redirect_urls = redirUrls
                };
                var createdPayment = payment.Create(_APIConText);
                var links = createdPayment.links.GetEnumerator();
                while (links.MoveNext())
                {
                    var link = links.Current;
                    if (link.rel.ToLower().Trim().Equals("approval_url"))
                    {
                        this.flow.RecordRedirectUrl("Redirect to PayPal to approve the payment...", link.href);
                    }
                }
                Session.Add(guid, createdPayment.id);
                Session.Add("flow-" + guid, this.flow);
            }
            else
            {
                var guid = Request.Params["guid"];
                var paymentId = Session[guid] as string;
                var paymentExecution = new PaymentExecution() { payer_id = payerId };
                var payment = new Payment() { id = paymentId };
                var executedPayment = payment.Execute(apiContext, paymentExecution);
            }
            return Success;
        }
        catch(Exception ex)
        {
            return false;
        }
    }
}

我在以下方面遇到随机错误:

using PayPal.Sample.Utilities;
string payerId = Request.Params["PayerID"];
var baseURI = Request.Url.Scheme + "://" + Request.Url.Authority + "/PaymentWithPayPal.aspx?";
invoice_number = Common.GetRandomInvoiceNumber(),   
Session.Add(guid, createdPayment.id);
Session.Add("flow-" + guid, this.flow);
var guid = Request.Params["guid"];
var paymentId = Session[guid] as string;
var executedPayment = payment.Execute(_APIConText, paymentExecution);

错误:

  • “请求”不存在
  • “通用”不存在
  • “流”不存在
  • “会话”在其当前类型中无效

我想我只是缺少参考或其他东西。我正在尝试为 C# ASP .Net(不是 MVC)做这件事

【问题讨论】:

  • 看你的问题我想说你对编程很陌生;在这种情况下,您需要慢慢开始并学习基础知识。如果您的 using 语句出错 - 这意味着您缺少参考。如果您尝试使用从未定义过的 Request 对象 - 您将遇到问题。一般来说,除非你表明你至少有点知道你在说什么
  • 我正在关注 PayPal 网站上发布的 tut,如果您阅读了我说我认为我缺少参考资料。问题是从未提供过的参考资料,我也将它从一个类移到了一个页面。最初的想法是让它成为一个可移植的类。
  • 米卡,我喜欢这个。在我发表评论时,您有一点意见。我在 VS2015 中注意到,如果我将鼠标悬停在带下划线的错误上,它会建议可能的修复。请小心,但如果您看到提到的“使用”,请单击它。您可能还想做一个工具> Nuget> 包管理器或Nuget 弹出的选项之一。这可能会得到你需要的参考资料。我认为其中之一是 PayPal 安装。

标签: c# paypal


【解决方案1】:

你会发现“普通”类here

Common.GetRandomInvoiceNumber() 只是生成一个随机数。我认为您只需将其替换为您自己生成的发票编号即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多