2013-04-03 33 views
0

當將Paypal與自定義內置系統集成時,我設法設置它來發送設置值,例如25英鎊,但是不是籃子中的變量,例如, 「GrandTotal」,這是依賴於什麼客戶已經進入購物車(我已經創建了自己的車。)在asp.net中發送購物車總量變量到PayPal

請參考下面的代碼:

<%@ page language="C#"%> 
<%@ Register TagPrefix="webxelcart" Namespace="WebXelCart" Assembly="WebXelCart" %> 
<script runat="server"> 

void btnCheckout_Click(object sender, System.EventArgs e) 
{ 
WriteToDB1.Save(); 
} 

void WriteToDB1_RecordInserted(object sender, WebXelCart.RecordInsertedEventArgs e) 
{ 
Cart1.OrderID = e.Identity; 
SaveOrder1.Save(); 
} 

    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
</script> 

<!doctype html> 
<head> 
<meta charset="utf-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 


<script runat="server"> 
    void Cart1_Load(object sender, System.EventArgs e) 
    { 
    if(Cart1.GrandTotal > 100){Cart1.CarriageCost = 0;} 
    else{Cart1.CarriageCost = 15;} 
    } 
    </script> 


<p align="center"><table width="100%" border="0" cellspacing="0" cellpadding="0" height="400"> 
    <tr> 
    <td width="1" align="center" valign="top">&nbsp;<td width="100%" valign="top" 
      bgcolor="#f9f9f9" class="bodytxt"> 
<h1>Shopping Cart</h1> 

     <webxelcart:cart ID="Cart1" ContainerControl="RptCartContents" ShopForMoreCmd="btnShopForMore" Tax="17.5" OnLoad="Cart1_Load" runat="server"> 
     <Fields><Field FieldName='Color' DataType='String'></Field></Fields> 
     </webxelcart:cart>  

     <webxelcart:writetodb ID="WriteToDB1" ConnectionString="ConStr" ManualMode="true" DataBaseType="OleDb" DbTable="tblOrders" OnRecordInserted="WriteToDB1_RecordInserted" runat="server"> 
     <parameters> 
      <parameter databasefield='CustomerID' value='<%# Cart1.CustomerID %>'></parameter> 
      <parameter databasefield='GrandTotal' value='<%# Cart1.GrandTotal %>'></parameter> 
      <parameter databasefield='SubTotal' value='<%# Cart1.SubTotal %>'></parameter> 
      <parameter databasefield='TaxTotal' value='<%# Cart1.TaxTotal %>'></parameter> 
     </parameters> 
     </webxelcart:writetodb> 

     <webxelcart:saveorder ID="SaveOrder1" DbTable="OrderLine" OrderIDField="OrderID" AfterSaveURL="payment.aspx" Cart="Cart1" ConnectionString="ConStr" ManualMode="true" DataBaseType="OleDb" runat="server"> 
<fields> 
<field cartfield='Description' databasefield='Description'></field> 
<field cartfield='ID' databasefield='ProductID'></field> 
<field cartfield='Quantity' databasefield='Quantity'></field> 
<Field CartField='RawCost' DataBaseField='Cost'></Field> 

</fields></webxelcart:saveorder> 

     <webxelcart:sendmail ID="SaveOrder2" Cart="Cart1" ManualMode="true" runat="server"> 
<fields> 
<field cartfield='Description' databasefield='Description'></field> 
<field cartfield='ID' databasefield='ProductID'></field> 
<field cartfield='Quantity' databasefield='Quantity'></field> 
<Field CartField='RawCost' DataBaseField='Cost'></Field> 

</fields></webxelcart:sendmail> 

     <br> 
     <form method="post" id="form1" runat="server"> 
     <table width="100%" border="0" cellpadding="0" cellspacing="0"> 
      <tr> 
      <td><table width="100%" border="0" align="center" cellpadding="0" cellspacing="1"> 
       <tr> 
       <td height="20" colspan="6" class="CartHeader">Customer Details</td> 
       </tr> 
       <tr> 
       <td colspan="6" bgcolor="#f9f9f9" class="CartTotals"><table border="0" cellpadding="1" cellspacing="0"> 
        <tr> 
        <td height="10" colspan="2"></td> 
        </tr> 
        <tr> 
        <td align="left"><h6>Name:&nbsp;</h6></td> 
        <td><%= Cart1["FirstName"] %> <%= Cart1["LastName"] %></td> 
        </tr> 
        <tr> 
        <td align="left" valign="top"><h6>Address:&nbsp;</h6></td> 
        <td><%= Cart1.PreserveLineBreaks(Cart1["Address"]) %></td> 
        </tr> 
        <tr> 
        <td align="left"><h6>Email :&nbsp;</h6></td> 
        <td><%= Cart1["EmailAddress"] %></td> 
        </tr> 
        <tr> 
        <td height="10" colspan="2"></td> 
        </tr> 
        <tr> 
        <td colspan="2"></td> 
        </tr> 
       </table>   
        </td> 
       </tr> 
       <tr> 
       <td height="18" class="CartHeader"><h6>SKU</h6></td> 
       <td class="CartHeader"><h6>Description</h6></td> 
       <td align="center" class="CartHeader"><h6>Quantity</h6></td> 
       <td align="right" class="CartHeader"><h6>Cost</h6></td> 
       <td align="right" class="CartHeader"><h6>Total</h6></td> 
       </tr> 

       <asp:repeater ID="RptCartContents" DataMember="WebXeLShaperMainLoop" runat="server"> 
       <itemtemplate> 
        <tr> 
        <td height="18" class="CartRow"><%# DataBinder.Eval(Container.DataItem, "ID") %></td> 
        <td class="CartRow"><%# DataBinder.Eval(Container.DataItem, "Description") %></td> 
        <td align="center" class="CartRow"><%# DataBinder.Eval(Container.DataItem, "Quantity") %> </td> 
        <td align="right" class="CartRow"><%# Double.Parse(DataBinder.Eval(Container.DataItem, "Cost").ToString()).ToString("C") %>&nbsp;</td> 
        <td align="right" class="CartRow"><%# Double.Parse(DataBinder.Eval(Container.DataItem, "TotalCost").ToString()).ToString("C") %> 
        </td> 
        </tr> 
       </itemtemplate> 
       <footertemplate> 
        <tr> 
        <td height="18" colspan="4" align="right" class="CartTotals">Sub Total:</td> 
        <td align="right" class="CartTotals"><%# Double.Parse(Cart1.SubTotal.ToString()).ToString("C") %></td> 
        </tr> 
        <tr> 
        <td height="18" colspan="4" align="right" class="CartTotals">Carriage:</td> 
        <td align="right" class="CartTotals"><%# Double.Parse(Cart1.CarriageCost.ToString()).ToString("C") %></td> 
        </tr> 
        <tr> 
        <td height="18" colspan="4" align="right" class="CartTotals">Tax Total:</td> 
        <td align="right" class="CartTotals"><%# Double.Parse(Cart1.TaxTotal.ToString()).ToString("C") %></td> 
        </tr> 
        <tr> 
        <td height="18" colspan="4" align="right" class="CartTotals"><b>Grand Total:</b></td> 
        <td align="right" class="CartTotals"><b> 
         <%# Double.Parse(Cart1.GrandTotal.ToString()).ToString("C") %></b></td> 
        </tr> 
       </footertemplate> 
       </asp:repeater> 

       <tr align="right"> 
       <td height="28" colspan="6" class="CartFooter"> 
<br /><br /> 
       <a class="button">Print Invoice <i class="icon-print"></i></a> 

       </td> 
       </tr> 
       <tr align="center"> 
       <td height="28" colspan="6"></td> 
       </tr> 
      </table></td> 
      </tr> 
     </table> 
    </form></td> 
    </tr> 
    <tr> 
    </tr> 
</table></p> 

    </div> 

    <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"> 
    <input type="hidden" name="cmd" value="_cart"> 

    <input type="hidden" name="upload" value="1"> 
    <input type="hidden" name="business" value="[email protected]"> 
    <input type="hidden" name="item_name_1" value="hg"> 
    <input type="hidden" name="amount" value="25.00"> 
    <input type="hidden" name="cbt" value="Return to The Store"> 
<input type="hidden" name="cancel_return" value="http://hg.site11.com"> 
    <input type="hidden" name="currency_code" value="GBP"> 


    <input type="hidden" name="image_url" id="edit-image-url" value="#" /> 
    <input type="hidden" name="notify_url" value="#"> 
    <input type="hidden" name="return" value="http://www.hg.site11.com"> 
    <input type="submit" value="Proceed to Payment"> 
</form> 

------------------------------------------------------------------------------------------------------------------------------------ 

cs文件:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebApplication1 
{ 
    public partial class GoMerchant : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 
    } 
} 

任何關於如何把'GrandTotal'變量的幫助,並將其發送到貝寶將不勝感激。

感謝

回答

0

你不能在ASP.Net頁面創建多個form tag(除非IFRAME),因爲ASP.Net只允許在一個頁面一個表單標籤。

你想在後面的代碼中類似這樣。它基本上收集用戶輸入的金額和數量,然後將其發回PayPal。

protected void btnCheckout_Click(object sender, EventArgs e) { 

string paypalUrl = IsTestMode ? 
    "https://www.sandbox.paypal.com/us/cgi-bin/webscr" : 
    "https://www.paypal.com/us/cgi-bin/webscr"; 

var builder = new StringBuilder(); 

builder.Append(paypalUrl); 

builder.AppendFormat("?cmd=_xclick&business={0}", 
    HttpUtility.UrlEncode([email protected])); 

builder.Append("&lc=US&no_note=0&currency_code=GBP"); 

builder.AppendFormat("&item_name={0}", 
    HttpUtility.UrlEncode(YourItemName)); 

builder.AppendFormat("&amount={0}", AmountTextBox.Text); 

builder.AppendFormat("&return={0}", 
    HttpUtility.UrlEncode("http://mysite.cm/ReturnUrl")); 

builder.AppendFormat("&cancel_return={0}", 
    HttpUtility.UrlEncode("http://mysite.cm/CancelUrl")); 

builder.AppendFormat("&undefined_quantity={0}", QuantityTextBox.Text); 

HttpContext.Current.Response.Redirect(builder.ToString()); 

}