Можно ли передать адрес доставки через SetExpressCheckout при использовании PayPal Checkout Express? - PullRequest
1 голос
/ 28 декабря 2011

Я просто играю с API PayPal, пытаюсь внедрить Checkout Express, чтобы я мог принимать кредитные карты, отдавая приоритет тем, у кого нет учетной записи PayPal, поэтому я установил encoder["LANDINGPAGE"] = "Billing";.

В моем приложении пользователь будет перенаправлен на сайт PayPal с меню выбора варианта оплаты, следовательно, они уже ввели свой адрес в моей форме доставки, есть ли способ передать этот адрес PayPal при использовании CheckoutExpress? Я пытаюсь тщетно тестирование со значениями ниже, но, кажется, когда пользователь перенаправляется на страницу ввода данных кредитной карты в PayPal, поля адреса пустые. Я могу получить адрес, который они вводят с помощью GetExpressCheckout, но это главное того, чего я пытаюсь достичь.

    public string ECSetExpressCheckoutCode(string returnURL,string cancelURL,string amount,string paymentType,string currencyCode)
    {
        NVPCallerServices caller = new NVPCallerServices();
        IAPIProfile profile = ProfileFactory.createSignatureAPIProfile();

    // Set up your API credentials, PayPal end point, API operation and version.
    profile.APIUsername = "seller_324454235454_biz_api1.isp.net.au";
    profile.APIPassword = "135454354";
    profile.APISignature = "An5ns1Kso7MWUSSDFggfdgdfGHHGDSddGnbHJgMVp-rU03jS";
        profile.Environment="sandbox";
        caller.APIProfile = profile;

        NVPCodec encoder = new NVPCodec();
        encoder["VERSION"] =  "51.0";   
        encoder["METHOD"] =  "SetExpressCheckout";

    // Add request-specific fields to the request.
        encoder["RETURNURL"] =  returnURL;
        encoder["CANCELURL"] =  cancelURL;  
        encoder["AMT"] =  amount;
        encoder["PAYMENTACTION"] =  paymentType;
        encoder["CURRENCYCODE"] =  currencyCode;
    encoder["LANDINGPAGE"] = "Billing";
    encoder["PAYMENTREQUEST_0_SHIPTOSTREET"] = "345/3 Moomy St.";
    encoder["PAYMENTREQUEST_0_SHIPTOCITY"] = "Umpa Lumpa";
    encoder["PAYMENTREQUEST_0_SHIPTONAME"] = "Johnny Walker";
    encoder["PAYMENTREQUEST_0_SHIPTOSTATE"] = "NSW";
    encoder["PAYMENTREQUEST_0_SHIPTOZIP"] = "2673";
    encoder["PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE"] = "AU";
    encoder["PAYMENTREQUEST_0_SHIPPINGAMT"] = "56.00";

    encoder["NOSHIPPING"] = "0";

    // Execute the API operation and obtain the response.
        string pStrrequestforNvp= encoder.Encode();
        string pStresponsenvp=caller.Call(pStrrequestforNvp);

        NVPCodec decoder = new NVPCodec();
        decoder.Decode(pStresponsenvp);


   string Response = decoder["ACK"] == "Success" ? decoder["TOKEN"]: "ERROR";

   return Response;
    }

1 Ответ

1 голос
/ 29 декабря 2011

Обновите вашу версию API. PAYMENTREQUEST доступно только на уровне 65,3 и выше. Вот почему это игнорируется сейчас. Кроме этого ваш запрос выглядит нормально.

От:
encoder["VERSION"] = "51.0";

Кому:
encoder["VERSION"] = "84.0";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...