public NVPCodec GetNVPFromOrder(Order order) { NVPCodec encoder = new NVPCodec(); int count = 0; var orderDetails = market.OrderDetails.Where(o => o.OrderId == order.OrderId).ToList(); encoder["METHOD"] = "SetExpressCheckout"; encoder["RETURNURL"] = returnURL; encoder["CANCELURL"] = cancelURL; encoder["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale"; encoder["PAYMENTREQUEST_0_CURRENCYCODE"] = "CAD"; encoder["NOSHIPPING"] = "1"; //encoder["AMT"] = order.Total.ToString(); encoder["PAYMENTREQUEST_0_ITEMAMT"] = order.Total.ToString(); encoder["PAYMENTREQUEST_0_AMT"] = order.Total.ToString(); foreach (OrderDetailModel o in orderDetails) { encoder[PAYMENT + "NAME" + count] = o.Item.Name; encoder[PAYMENT + "DESC" + count] = "Test Description"; /* * encoder[PAYMENT + "DESC" + count] = "Pickup:" + o.PickupDate.ToLongDateString() + * " Return:" + o.DrofoffDate.ToLongDateString(); */ encoder[PAYMENT + "QTY" + count] = o.NumberOfDays.ToString(); encoder[PAYMENT + "AMT" + count] = o.UnitPrice.ToString(); count++; if (o.SecurityDeposit > 0) { encoder[PAYMENT + "NAME" + count] = "Security Deposit - " + o.Item.Name; encoder[PAYMENT + "DESC" + count] = "Security Deposit"; /* * encoder[PAYMENT + "DESC" + count] = "Pickup:" + o.PickupDate.ToLongDateString() + * " Return:" + o.DrofoffDate.ToLongDateString(); */ encoder[PAYMENT + "QTY" + count] = "1"; encoder[PAYMENT + "AMT" + count] = o.SecurityDeposit.ToString(); count++; } } return(encoder); }
/// <summary> /// GetShippingDetails: The method that calls SetExpressCheckout API, invoked from the /// Billing Page EC placement /// </summary> /// <param name="token"></param> /// <param ref name="retMsg"></param> /// <returns></returns> public bool GetShippingDetails(string token, ref string PayerId, ref string ShippingAddress, ref string retMsg) { if (bSandbox) { pendpointurl = "https://api-3t.sandbox.paypal.com/nvp"; } NVPCodec encoder = new NVPCodec(); encoder["METHOD"] = "GetExpressCheckoutDetails"; encoder["TOKEN"] = token; string pStrrequestforNvp = encoder.Encode(); string pStresponsenvp = HttpCall(pStrrequestforNvp); NVPCodec decoder = new NVPCodec(); decoder.Decode(pStresponsenvp); string strAck = decoder["ACK"].ToLower(); if (strAck != null && (strAck == "success" || strAck == "successwithwarning")) { ShippingAddress = "<table><tr>"; ShippingAddress += "<td> First Name </td><td>" + decoder["FIRSTNAME"] + "</td></tr>"; ShippingAddress += "<td> Last Name </td><td>" + decoder["LASTNAME"] + "</td></tr>"; ShippingAddress += "<td colspan='2'> Shipping Address</td></tr>"; ShippingAddress += "<td> Name </td><td>" + decoder["SHIPTONAME"] + "</td></tr>"; ShippingAddress += "<td> Street1 </td><td>" + decoder["SHIPTOSTREET"] + "</td></tr>"; ShippingAddress += "<td> Street2 </td><td>" + decoder["SHIPTOSTREET2"] + "</td></tr>"; ShippingAddress += "<td> City </td><td>" + decoder["SHIPTOCITY"] + "</td></tr>"; ShippingAddress += "<td> State </td><td>" + decoder["SHIPTOSTATE"] + "</td></tr>"; ShippingAddress += "<td> Zip </td><td>" + decoder["SHIPTOZIP"] + "</td>"; ShippingAddress += "</tr>"; return(true); } else { retMsg = "?" + "ErrorCode=" + ErrorCode.PAYPAL_ERROR + "&" + //decoder["L_ERRORCODE0"] "Description=" + decoder["L_LONGMESSAGE0"]; return(false); } }
/// <summary> /// ConfirmPayment: The method that calls SetExpressCheckout API, invoked from the /// Billing Page EC placement /// </summary> /// <param name="token"></param> /// <param ref name="retMsg"></param> /// <returns></returns> public bool ConfirmPayment(string finalPaymentAmount, ref NVPCodec decoder, ref string retMsg) { if (bSandbox) { pendpointurl = "https://api-3t.sandbox.paypal.com/nvp"; } NVPCodec encoder = new NVPCodec(); encoder["METHOD"] = "DoExpressCheckoutPayment"; encoder["TOKEN"] = this.PayPalToken; encoder["PAYMENTACTION"] = "Sale"; encoder["PAYERID"] = this.PayerID; encoder["AMT"] = finalPaymentAmount; encoder["CURRENCYCODE"] = "CAD"; string pStrrequestforNvp = encoder.Encode(); string pStresponsenvp = HttpCall(pStrrequestforNvp); decoder = new NVPCodec(); decoder.Decode(pStresponsenvp); string strAck = decoder["ACK"].ToLower(); if (strAck != null && (strAck == "success" || strAck == "successwithwarning")) { return(true); } else { retMsg = "?" + "ErrorCode=" + ErrorCode.PAYPAL_ERROR + "&" + //decoder["L_ERRORCODE0"] "Description=" + decoder["L_LONGMESSAGE0"]; return(false); } }
/// <summary> /// ShortcutExpressCheckout: The method that calls SetExpressCheckout API /// </summary> /// <param name="amt"></param> /// <param ref name="token"></param> /// <param ref name="retMsg"></param> /// <returns></returns> public bool ShortcutExpressCheckout(string amt, NVPCodec encoder, ref string token, ref string retMsg) { string host = "www.paypal.com"; if (bSandbox) { pendpointurl = "https://api-3t.sandbox.paypal.com/nvp"; host = "www.sandbox.paypal.com"; } string pStrrequestforNvp = encoder.Encode(); string pStresponsenvp = HttpCall(pStrrequestforNvp); NVPCodec decoder = new NVPCodec(); decoder.Decode(pStresponsenvp); string strAck = decoder["ACK"].ToLower(); if (strAck != null && (strAck == "success" || strAck == "successwithwarning")) { token = decoder["TOKEN"]; string ECURL = "https://" + host + "/cgi-bin/webscr?cmd=_express-checkout" + "&useraction=commit" + "&token=" + token; retMsg = ECURL; return(true); } else { retMsg = "?" + "ErrorCode=" + ErrorCode.PAYPAL_ERROR + "&" + //decoder["L_ERRORCODE0"] "Description=" + decoder["L_LONGMESSAGE0"]; return(false); } }
/// <summary> /// MarkExpressCheckout: The method that calls SetExpressCheckout API, invoked from the /// Billing Page EC placement /// </summary> /// <param name="amt"></param> /// <param ref name="token"></param> /// <param ref name="retMsg"></param> /// <returns></returns> public bool MarkExpressCheckout(string amt, string shipToName, string shipToStreet, string shipToStreet2, string shipToCity, string shipToState, string shipToZip, string shipToCountryCode, ref string token, ref string retMsg) { string host = "www.paypal.com"; if (bSandbox) { pendpointurl = "https://api-3t.sandbox.paypal.com/nvp"; host = "www.sandbox.paypal.com"; } string returnURL = "http://test"; string cancelURL = "http://test"; NVPCodec encoder = new NVPCodec(); encoder["METHOD"] = "SetExpressCheckout"; encoder["RETURNURL"] = returnURL; encoder["CANCELURL"] = cancelURL; encoder["AMT"] = amt; encoder["PAYMENTACTION"] = "Sale"; encoder["CURRENCYCODE"] = "CAD"; //Optional Shipping Address entered on the merchant site encoder["SHIPTONAME"] = shipToName; encoder["SHIPTOSTREET"] = shipToStreet; encoder["SHIPTOSTREET2"] = shipToStreet2; encoder["SHIPTOCITY"] = shipToCity; encoder["SHIPTOSTATE"] = shipToState; encoder["SHIPTOZIP"] = shipToZip; encoder["SHIPTOCOUNTRYCODE"] = shipToCountryCode; string pStrrequestforNvp = encoder.Encode(); string pStresponsenvp = HttpCall(pStrrequestforNvp); NVPCodec decoder = new NVPCodec(); decoder.Decode(pStresponsenvp); string strAck = decoder["ACK"].ToLower(); if (strAck != null && (strAck == "success" || strAck == "successwithwarning")) { token = decoder["TOKEN"]; string ECURL = "https://" + host + "/cgi-bin/webscr?cmd=_express-checkout" + "&token=" + token; retMsg = ECURL; return(true); } else { retMsg = "?" + "ErrorCode=" + ErrorCode.PAYPAL_ERROR + "&" + //decoder["L_ERRORCODE0"] "Description=" + decoder["L_LONGMESSAGE0"]; return(false); } }