0

私のプロジェクトには、ペイパルエクスプレスチェックアウトが含まれています。以下のクラスですべての詳細を送信します。そして、以下の私のコード;

public class PayPal
{
    public static PayPalRedirect ExpressCheckout(PayPalOrder order)
    {
        var values = new NameValueCollection();
        values["USER"] = PayPalSettings.Username;
        values["PWD"] = PayPalSettings.Password;
        values["SIGNATURE"] = PayPalSettings.Signature;
        values["METHOD"] = "SetExpressCheckout";
        values["VERSION"] = "63.0";
        values["RETURNURL"] = PayPalSettings.ReturnUrl;
        values["CANCELURL"] = PayPalSettings.CancelUrl;
        values["PAYMENTREQUEST_0_PAYMENTACTION"] = "SALE";
        values["PAYMENTREQUEST_0_CURRENCYCODE"] = "USD";
        values["PAYMENTREQUEST_0_AMT"] = order.Amount.ToString("0.00", CultureInfo.InvariantCulture);
        values["PAYMENTREQUEST_0_DESC"] = "Apart Name";


        values = Submit(values);

        string ack = values["ACK"].ToLower();

        if (ack == "success" || ack == "successwithwarning")
        {
            return new PayPalRedirect
            {
                Token = values["TOKEN"],
                Url = String.Format("https://{0}/cgi-bin/webscr?cmd=_express-checkout&token={1}",
                   PayPalSettings.CgiDomain, values["TOKEN"])
            };
        }
        throw new Exception(values["L_LONGMESSAGE0"]);
    }

    private static NameValueCollection Submit(NameValueCollection values)
    {
        string data = String.Join("&", values.Cast<string>()
          .Select(key => String.Format("{0}={1}", key, HttpUtility.UrlEncode(values[key]))));

        var request = (HttpWebRequest)WebRequest.Create(
           String.Format("https://{0}/nvp", PayPalSettings.ApiDomain));

        request.Method = "POST";
        request.ContentLength = data.Length;

        using (var writer = new StreamWriter(request.GetRequestStream()))
        {
            writer.Write(data);
        }

        using (var reader = new StreamReader(request.GetResponse().GetResponseStream()))
        {
            return HttpUtility.ParseQueryString(reader.ReadToEnd());
        }
    }
}

そして私のコントローラー;

 public ActionResult Pay(FormCollection form)
    {
        var redirect = PayPal.ExpressCheckout(new PayPalOrder { Amount = 50 });
        Session["token"] = redirect.Token;
        return new RedirectResult(redirect.Url);
    }

しかし、ペイパルページで金額を表示できません????? 私は説明を表示しますが、金額は表示しませんか??? なにが問題ですか?返信ありがとう。

4

2 に答える 2

0

合格Amountか不合格か、合格していないと思いますAmount値 合格でない場合は追加します

public class CartController : Controller
{
   public ActionResult Index()
   {
      return View();
   }

   public ActionResult Pay()
   {
      PayPalRedirect redirect = PayPal.ExpressCheckout(new PayPalOrder { Amount = 50 });

      Session["token"] = redirect.Token;

      return new RedirectResult(redirect.Url);
   }
}

詳細については、ASP.NET MVC を使用した PayPal を確認してください。

お役に立てば幸いです。

于 2013-05-20T10:43:41.740 に答える
0

項目名と金額を渡してみて、その場合に表示されるかどうかを確認してください。また、PayPal に送信するデータの実際の文字列から、API 資格情報を差し引いたものを提供していただけないでしょうか。これにより、API 資格情報でテストできます。

例:

https://api-3t.sandbox.paypal.com/nvp?USER=paypal_api1.x.com&PWD=NAEWP67N2BMRSD234P2&SIGNATURE=Ae0iZ4smtdchhBLFKKdS8s8OSA220f033rNWM4EYTk1J-tsdbDOFq0JpNi&METHOD=SetExpressCheckout&VERSION=92.0&RETURNURL=https://www.ccaples.com/mts/pp_nvp_quick_test.php&CANCELURL=https://www.ccaples.com/mts/pp_nvp_quick_test.php&PAYMENTREQUEST_0_PAYMENTACTION=Sale&PAYMENTREQUEST_0_AMT=200&PAYMENTREQUEST_0_ITEMAMT=200&PAYMENTREQUEST_0_SHIPPINGAMT=0.00&PAYMENTREQUEST_0_TAXAMT=0.0&PAYMENTREQUEST_0_CURRENCYCODE=USD&PAYMENTREQUEST_0_DESC=test EC payment
于 2013-05-20T11:37:51.833 に答える