2015-06-23 1 views
2

У меня есть следующий код, чтобы создать план оплатыPaypal REST API SDK - Активация тарифного плана в C#

string iClientID = "xxxxxx"; 
     string iSecret = "yyyyyy"; 

     Dictionary<string, string> sdkConfig = new Dictionary<string, string>(); 
     sdkConfig.Add("mode", "sandbox"); 
     string accessToken = new OAuthTokenCredential(iClientID, iSecret, sdkConfig).GetAccessToken(); 
    APIContext apiContext = new APIContext(accessToken); 
    apiContext.Config = sdkConfig; 

    Plan xPlan = new Plan(); 
    xPlan.name = "Billing Plan OneA"; 
    xPlan.description = "Our first billing plan for testing"; 
    xPlan.type = "INFINITE"; 

    PaymentDefinition xPDef = new PaymentDefinition(); 
    xPDef.name = "Payment Def One"; 
    xPDef.type = "REGULAR"; 
    xPDef.frequency_interval = "1"; 
    xPDef.frequency = "MONTH"; 
    xPDef.cycles = "0"; 

    MerchantPreferences xPrefs = new MerchantPreferences(); 
    xPrefs.cancel_url = "http://learnoogle.com"; 
    xPrefs.return_url = "http://learnoogle.com?success"; 


    Currency xPCUrr = new Currency(); 
    xPCUrr.currency = "USD"; 
    xPCUrr.value = "25.00"; 

    xPDef.amount = xPCUrr; 

    List<PaymentDefinition> xDeffs = new List<PaymentDefinition>(); 
    xDeffs.Add(xPDef); 

    xPlan.payment_definitions = xDeffs; 
    xPlan.merchant_preferences = xPrefs; 
     Plan cPLan = xPlan.Create(apiContext); 

И я пытаюсь установить план активного со следующим кодом

Patch xPatch = new Patch(); 
    xPatch.op = "replace"; 
    xPatch.path = "state"; 
    xPatch.value = "ACTIVE"; 

    PatchRequest yPatch = new PatchRequest(); 
    yPatch.Add(xPatch); 

    cPLan.Update(apiContext, yPatch); 

Однако это дает мне (400) неверный запрос. {"name": "BUSINESS_VALIDATION_ERROR", "details": [{"field": "validation_error", "issue": "Invalid Path provided."}}, "Message": "Validation Error.", "Information_link" : «https://developer.paypal.com/webapps/developer/docs/api/#BUSINESS_VALIDATION_ERROR», „debug_id“: „01f0eb9aaaea0“}

Может кто-нибудь просветить меня на то, что я делаю неправильно на этом/

ответ

4

При обновлении плана, вам необходимо установить Patch.value недвижимость новый объект Plan, содержащий поля, которые вы хотели бы заменить (установка state на ACTIVE в этом случае). Кроме того, вам необходимо установить свойство Patch.path только "/".

В своем коде, выполните следующие действия:

Patch xPatch = new Patch(); 
xPatch.op = "replace"; 
xPatch.path = "/"; 
xPatch.value = new Plan() { state = "ACTIVE" }; 

PatchRequest yPatch = new PatchRequest(); 
yPatch.Add(xPatch); 

cPLan.Update(apiContext, yPatch); 
+1

Спасибо - PayPal Dev документы не сделал это очень ясно, - я нашел я мог разобрать строку JSON в объект JSON с Newtonsoft и сделать то же самое вещь. – braindice

Смежные вопросы