/// <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, string token, string PayerId, 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"] = token; encoder["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale"; encoder["PAYERID"] = PayerId; encoder["PAYMENTREQUEST_0_AMT"] = finalPaymentAmount; encoder["PAYMENTREQUEST_0_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=" + decoder["L_ERRORCODE0"] + "&" + "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" + "Desc2=" + decoder["L_LONGMESSAGE0"]; return false; } }
/// <summary> /// Credentials added to the NVP string /// </summary> /// <param name="profile"></param> /// <returns></returns> private string buildCredentialsNVPString() { NVPCodec codec = new NVPCodec(); if (!IsEmpty(APIUsername)) codec["USER"] = APIUsername; if (!IsEmpty(APIPassword)) codec[PWD] = APIPassword; if (!IsEmpty(APISignature)) codec[SIGNATURE] = APISignature; if (!IsEmpty(Subject)) codec["SUBJECT"] = Subject; codec["VERSION"] = "88.0"; return codec.Encode(); }
/// <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://localhost:29206/"; string cancelURL = "http://localhost:29206/"; NVPCodec encoder = new NVPCodec(); encoder["METHOD"] = "SetExpressCheckout"; encoder["RETURNURL"] = returnURL; encoder["CANCELURL"] = cancelURL; encoder["PAYMENTREQUEST_0_AMT"] = amt; encoder["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale"; encoder["PAYMENTREQUEST_0_CURRENCYCODE"] = "CAD"; //Optional Shipping Address entered on the merchant site encoder["PAYMENTREQUEST_0_SHIPTONAME"] = shipToName; encoder["PAYMENTREQUEST_0_SHIPTOSTREET"] = shipToStreet; encoder["PAYMENTREQUEST_0_SHIPTOSTREET2"] = shipToStreet2; encoder["PAYMENTREQUEST_0_SHIPTOCITY"] = shipToCity; encoder["PAYMENTREQUEST_0_SHIPTOSTATE"] = shipToState; encoder["PAYMENTREQUEST_0_SHIPTOZIP"] = shipToZip; encoder["PAYMENTREQUEST_0_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=" + decoder["L_ERRORCODE0"] + "&" + "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" + "Desc2=" + decoder["L_LONGMESSAGE0"]; return false; } }
/// <summary> /// /// </summary> /// <param name="amt"></param> /// <param name="token"></param> /// <param name="retMsg"></param> /// <param name="cartItems"></param> /// <param name="returnURL"></param> /// <param name="cancelURL"></param> /// <returns></returns> public bool ShortcutExpressCheckout(string amt, ref string token, ref string retMsg, List<Achat> cartItems, string returnURL, string cancelURL, decimal? livraison) { string host = "www.paypal.com"; if (bSandbox) { pendpointurl = "https://api-3t.sandbox.paypal.com/nvp"; host = "www.sandbox.paypal.com"; } NVPCodec encoder = new NVPCodec(); encoder["METHOD"] = "SetExpressCheckout"; encoder["RETURNURL"] = returnURL; encoder["CANCELURL"] = cancelURL; encoder["PAYMENTREQUEST_0_AMT"] = amt; encoder["PAYMENTREQUEST_0_PAYMENTACTION"] = "Sale"; encoder["PAYMENTREQUEST_0_CURRENCYCODE"] = "CAD"; int i = 0; foreach (Achat c in cartItems) { if (c.Version == null) { encoder["L_PAYMENTREQUEST_0_NAME" + i] = c.Album.Nom; encoder["L_PAYMENTREQUEST_0_AMT" + i] = ((decimal)c.Album.Prix).ToString("N2", CultureInfo.InvariantCulture); encoder["L_PAYMENTREQUEST_0_QTY" + i] = "1"; } else { encoder["L_PAYMENTREQUEST_0_NAME" + i] = c.Version.Chanson.Titre; encoder["L_PAYMENTREQUEST_0_AMT" + i] = ((decimal)c.Version.Prix).ToString("N2", CultureInfo.InvariantCulture); encoder["L_PAYMENTREQUEST_0_QTY" + i] = "1"; } i++; } if (livraison != null) { encoder["L_PAYMENTREQUEST_0_NAME" + i] = "livraison"; encoder["L_PAYMENTREQUEST_0_AMT" + i] = ((decimal)livraison).ToString("N2", CultureInfo.InvariantCulture); encoder["L_PAYMENTREQUEST_0_QTY" + i] = 1.ToString(); } 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=" + decoder["L_ERRORCODE0"] + "&" + "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" + "Desc2=" + decoder["L_LONGMESSAGE0"]; return false; } }
/// <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 += decoder["PAYMENTREQUEST_0_SHIPTOSTREET"]; ShippingAddress += ";" + decoder["PAYMENTREQUEST_0_SHIPTOCITY"]; ShippingAddress += ";" + decoder["PAYMENTREQUEST_0_SHIPTOSTATE"]; ShippingAddress += ";" + decoder["PAYMENTREQUEST_0_SHIPTOZIP"]; return true; } else { retMsg = "ErrorCode=" + decoder["L_ERRORCODE0"] + "&" + "Desc=" + decoder["L_SHORTMESSAGE0"] + "&" + "Desc2=" + decoder["L_LONGMESSAGE0"]; return false; } }