2013-05-20 159 views
0

在我的项目包括paypal快速退房。我在下面的课程中发送所有的细节。和我的代码如下;mvc paypal支付明细金额不显示

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); 
    } 

,但我不能显示贝宝页面上量?????我显示desc,但我不显示金额?哪里不对?感谢您的回复。

回答

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); 
    } 
} 

有关详情,请PayPal with ASP.NET MVC

希望它可以帮助你。

+0

我添加它。和金额即将到来的PayPalOrder但我无法看到在PayPal页上发送金额。 –

+0

可以我的问题的版本? –

+0

可能会尝试更改版本,然后检查。 – Rahul

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 
+0

感谢您的回复。我尝试它。和消息; TIMESTAMP = 2013%2d05%2d20T11%3a50%3a37Z&的correlationID = c0bf84f7e61fb&ACK =失败&VERSION = 92%2E0&BUILD = 6020375&L_ERRORCODE0 = 10002&L_SHORTMESSAGE0 =安全%20error&L_LONGMESSAGE0 =安全%20header%图20是%20not%20valid&L_SEVERITYCODE0 =错误.... 我的页面信息; TOKEN = EC%2d09435481S1171634R&TIMESTAMP = 2013%2d05%2d20T11%3a46%3a49Z&CORRELATIONID = f433f5dfdf68f&ACK =成功与版本= 92%2e0&BUILD = 6020375 –