PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/examples.md

https://github.com/recurly/recurly-client-net
Markdown | 752 lines | 602 code | 150 blank | 0 comment | 0 complexity | 21815decb3c772f29cd359f5ac57f497 MD5 | raw file
  1. #Documentation
  2. **NOTE**: Requests that result in a `404` from the Recurly API will raise a `NotFoundException`.
  3. - [Accounts](#accounts)
  4. - [Adjustments](#account-adjustments)
  5. - [BillingInfo](#billinginfo)
  6. - [Coupons](#coupons)
  7. - [Coupon Redemptions](#coupon-redemptions)
  8. - [Invoices](#invoices)
  9. - [Plans](#plans)
  10. - [Plan Addons](#plan-addons)
  11. - [Subscriptions](#subscriptions)
  12. - [Subscription Addons](#subscription-add-ons)
  13. - [Manual Invoicing Subscriptions](#subscriptions-for-manual-invoicing)
  14. - [Transactions](#transactions)
  15. #Accounts
  16. - [List](#list-accounts)
  17. - [Get](#get-account)
  18. - [Create](#create-account)
  19. - [Close](#close-account)
  20. - [Reopen](#reopen-account)
  21. - [List Account Notes](#list-account-notes)
  22. ###List Accounts
  23. ```c#
  24. using System.Linq;
  25. var accounts = Accounts.List();
  26. while (accounts.Any())
  27. {
  28. foreach (var account in accounts)
  29. Console.WriteLine(account);
  30. accounts = accounts.Next;
  31. }
  32. ```
  33. ###Get Account
  34. ```c#
  35. try
  36. {
  37. var account = Accounts.Get("1");
  38. Console.WriteLine("Account " + account);
  39. }
  40. catch (NotFoundException e)
  41. {
  42. Console.WriteLine("Account not found.");
  43. }
  44. ```
  45. **Please note**: the client library will raise an exception if the account is not found.
  46. ###Create Account
  47. ```c#
  48. var account = new Account("1")
  49. {
  50. Email = "verena@example.com",
  51. FirstName = "Verena",
  52. LastName = "Example"
  53. };
  54. account.Create();
  55. ```
  56. ###Close Account
  57. ```c#
  58. var account = Accounts.Get("1");
  59. account.Close();
  60. // or to avoid an API call
  61. Accounts.Close("1");
  62. ```
  63. ###Reopen Account
  64. ```c#
  65. var account = Accounts.Get("1");
  66. account.Reopen();
  67. // or to avoid an API call
  68. Accounts.Reopen("1");
  69. ```
  70. ###List Account Notes
  71. ```c#
  72. using System.Linq;
  73. var account = Accounts.Get("1");
  74. var notes = account.GetNotes();
  75. while (notes.Any())
  76. {
  77. foreach (var note in notes)
  78. Console.WriteLine("Note: " + note.Message);
  79. notes = notes.Next;
  80. }
  81. ```
  82. [back to top](#documentation)
  83. #Account Adjustments
  84. - [List](#list-adjustments)
  85. - [Get](#get-adjustment)
  86. - [Create](#create-adjustment)
  87. - [Delete](#delete-adjustment)
  88. ###List adjustments
  89. ```c#
  90. using System.Linq;
  91. var account = Accounts.Get("1");
  92. var adjustments = account.GetAdjustments();
  93. while (adjustments.Any())
  94. {
  95. foreach (var adjustment in adjustments)
  96. Console.WriteLine("Adjustment: " + adjustment);
  97. adjustments = adjustments.Next;
  98. }
  99. ```
  100. ###Get adjustment
  101. ```c#
  102. var adjustment = Adjustments.Get("123456789");
  103. Console.WriteLine("Adjustment: " + adjustment);
  104. ```
  105. ###Create adjustment
  106. ```c#
  107. var account = Accounts.Get("1");
  108. var adjustment = account.NewAdjustment(
  109. "USD", // currency
  110. 5000, // unit_amount_in_cents
  111. "Charge for extra bandwidth", // description
  112. 1, // quantity
  113. "bandwidth", // accounting_code
  114. false); // tax_exempt
  115. adjustment.Create();
  116. ```
  117. ###Delete adjustment
  118. ```c#
  119. var adjustment = Adjustments.Get("123456789");
  120. adjustment.Delete()
  121. ```
  122. [back to top](#documentation)
  123. #BillingInfo
  124. - [Get](#get-billing-info)
  125. - [Update](#update-billing-info)
  126. - [Delete](#delete-billing-info)
  127. ###Get Billing Info
  128. ```c#
  129. var account = Accounts.Get("1");
  130. var info = account.BillingInfo;
  131. ```
  132. ###Update billing info
  133. ```c#
  134. var account = Accounts.Get("1");
  135. var info = account.BillingInfo;
  136. info.FirstName = "Verana";
  137. info.LastName = "Example";
  138. info.PhoneNumber = "111-111-1111";
  139. info.VerificationValue = "123";
  140. info.ExpirationMonth = 11;
  141. info.ExpirationYear = 2015;
  142. info.Update();
  143. // or update using a TokenId
  144. var account = Accounts.Get("1");
  145. var info = account.BillingInfo;
  146. info.TokenId = "some-token-id";
  147. info.Update();
  148. ```
  149. ###Delete billing info
  150. ```c#
  151. var account = Accounts.Get("1");
  152. account.DeleteBillingInfo();
  153. ```
  154. [back to top](#documentation)
  155. #Coupons
  156. - [List](#list-active-coupons)
  157. - [Get](#get-coupon)
  158. - [Create](#create-coupon)
  159. - [Deactivate](#deactivate-coupon)
  160. ###List active coupons
  161. ```c#
  162. using System.Linq;
  163. var coupons = Coupons.List();
  164. while (coupons.Any())
  165. {
  166. foreach (var coupon in coupons)
  167. Console.WriteLine("Coupon: " + coupon);
  168. coupons = coupons.Next;
  169. }
  170. ```
  171. ###Get coupon
  172. ```c#
  173. var coupon = Coupons.Get("special");
  174. ```
  175. ###Create coupon
  176. ```c#
  177. // $2 off...
  178. var coupon = new Coupon("special", "Special $2 off coupon", new Dictionary<string, int> {{"USD", 200}});
  179. // ...or 10% off
  180. var coupon = new Coupon("special", "Special 10% off coupon", 10);
  181. // Other properties
  182. coupon.RedeemByDate = new DateTime(2014, 1, 1);
  183. coupon.SingleUse = true;
  184. // Limit to gold and platinum plans only.
  185. coupon.AppliesToAllPlans = false;
  186. coupon.Plans.Add("gold");
  187. coupon.Plans.Add("silver");
  188. coupon.Create();
  189. ```
  190. ###Deactivate coupon
  191. ```c#
  192. var coupon = Coupons.Get("special");
  193. coupon.Deactivate();
  194. ```
  195. [back to top](#documentation)
  196. #Coupon Redemptions
  197. - [Redeem coupon](#redeem-a-coupon)
  198. - [Lookup redemption](#lookup-a-redemption)
  199. - [Delete redemption](#delete-redemption)
  200. - [Lookup an Invoice redemption](#lookup-a-coupon-redemption-on-an-invoice)
  201. ###Redeem a coupon
  202. ```c#
  203. var account = Accounts.Get("1");
  204. var redemption = account.Redeem("special", "USD");
  205. ```
  206. ###Lookup a redemption
  207. ```c#
  208. var account = Accounts.Get("1");
  209. var redemption = account.GetActiveRedemption();
  210. ```
  211. ###Delete redemption
  212. ```c#
  213. var account = Accounts.Get("1");
  214. var redemption = account.GetActiveRedemption();
  215. redemption.Delete();
  216. ```
  217. ###Lookup a coupon redemption on an invoice
  218. ```c#
  219. var invoice = Invoices.Get(1);
  220. var redemption = invoice.GetRedemption();
  221. ```
  222. [back to top](#documentation)
  223. #Invoices
  224. - [List](#list-invoices)
  225. - [List by Account](#list-an-accounts-invoices)
  226. - [Get](#get-invoice)
  227. - [Get Invoice PDF](#retrieve-a-pdf-invoice)
  228. - [Create Invoice](#create-an-invoice-invoice-pending-charges-on-an-account)
  229. - [Mark paid](#mark-an-invoice-as-paid-successfully)
  230. - [Mark failed](#mark-an-invoice-as-failed-collection)
  231. - [Line Item Refunds](#line-item-refunds)
  232. ###List Invoices
  233. ```c#
  234. using System.Linq;
  235. var invoices = Invoices.List();
  236. while (invoices.Any())
  237. {
  238. foreach (var invoice in invoices)
  239. Console.WriteLine("Invoice: " + invoice);
  240. invoices = invoices.Next;
  241. }
  242. ```
  243. ###List an account's invoices
  244. ```c#
  245. using System.Linq;
  246. // Get the list of invoices through the Account
  247. var account = Accounts.Get("1");
  248. var invoices = account.GetInvoices();
  249. // OR directly through Invoices
  250. var invoices = Invoices.List("1"); // account code
  251. while (invoices.Any())
  252. {
  253. foreach (var invoice in invoices)
  254. Console.WriteLine("Invoice: " + invoice);
  255. invoices = invoices.Next;
  256. }
  257. ```
  258. ###Get Invoice
  259. ```c#
  260. var invoice = Invoices.Get(1005);
  261. ```
  262. ###Retrieve a PDF invoice
  263. ```c#
  264. var invoice = Invoices.Get(1005);
  265. byte[] pdf = invoice.GetPdf();
  266. ```
  267. ###Create an invoice: invoice pending charges on an account
  268. ```c#
  269. var account = Accounts.Get("1");
  270. var invoice = account.InvoicePendingCharges();
  271. ```
  272. ###Mark an invoice as paid successfully
  273. ```c#
  274. var invoice = Invoices.Get(1005);
  275. invoice.MarkSuccessful();
  276. ```
  277. ###Mark an invoice as failed collection
  278. ```c#
  279. var invoice = Invoices.Get(1005);
  280. invoice.MarkFailed();
  281. ```
  282. ###Line item refunds
  283. ```c#
  284. var invoice = Invoices.Get(1005);
  285. // refund a single adjustment
  286. var adjustment = invoice.Adjustments.First(x => x.Uuid == "e1234245132465");
  287. invoice = invoice.Refund(adjustment, false, 1); // adjustment, prorate, quantity
  288. // refund with proration
  289. var adjustment = invoice.Adjustments.First(x => x.Uuid == "e1234245132465");
  290. invoice = invoice.Refund(adjustment, true); // adjustment, prorate
  291. // refund multiple adjustments
  292. invoice = invoice.Refund(invoice.Adjustments);
  293. // with proration
  294. invoice = invoice.Refund(invoice.Adjustments, true);
  295. ```
  296. [back to top](#documentation)
  297. #Plans
  298. - [List](#list-plans)
  299. - [Get](#lookup-plan-details)
  300. - [Create](#create-plan)
  301. - [Update](#update-plan)
  302. - [Deactivate](#deactivate-plan)
  303. ###List plans
  304. ```c#
  305. using System.Linq;
  306. var plans = Plans.List();
  307. while (plans.Any())
  308. {
  309. foreach (var plan in plans)
  310. Console.WriteLine("Plan: " + plan);
  311. plans = plans.Next;
  312. }
  313. ```
  314. ###Lookup plan details
  315. ```c#
  316. var plan = Plans.Get("gold");
  317. ```
  318. ###Create plan
  319. ```c#
  320. var plan = new Plan("gold", "Gold plan"); // plan code, name
  321. plan.UnitAmountInCents.Add("USD", 1000);
  322. plan.UnitAmountInCents.Add("EUR", 800);
  323. plan.SetupFeeInCents.Add("USD", 6000);
  324. plan.SetupFeeInCents.Add("EUR", 4500);
  325. plan.PlanIntervalLength = 1;
  326. plan.PlanIntervalUnit = Plan.IntervalUnit.Month;
  327. plan.TaxExempt = false;
  328. plan.Create();
  329. ```
  330. ###Update Plan
  331. ```c#
  332. var plan = Plans.Get("gold");
  333. plan.SetupFeeInCents["EUR"] = 5000;
  334. plan.Update();
  335. ```
  336. ###Deactivate Plan
  337. ```c#
  338. var plan = Plans.Get("gold");
  339. plan.Deactivate();
  340. ```
  341. [back to top](#documentation)
  342. #Plan Addons
  343. - [List](#list-plan-add-ons)
  344. - [Get](#lookup-an-add-on)
  345. - [Create](#create-add-on)
  346. - [Update](#update-add-on)
  347. - [Delete](#delete-add-on)
  348. ###List plan add-ons
  349. ```c#
  350. using System.Linq;
  351. var plan = Plans.Get("gold");
  352. var addons = plan.AddOns;
  353. while (addons.Any())
  354. {
  355. foreach (var addon in addons)
  356. Console.WriteLine("Addon: " + addon);
  357. addons = addons.Next;
  358. }
  359. ```
  360. ###Lookup an add-on
  361. ```c#
  362. var plan = Plans.Get("gold");
  363. var addon = plan.GetAddOn("addOnCode");
  364. ```
  365. ###Create add-on
  366. ```c#
  367. var plan = Plans.Get("gold");
  368. var addon = plan.NewAddOn("ipaddresses", "Extra IP Addresses"); // add-on code, name
  369. addon.UnitAmountInCents.Add("USD", 200);
  370. addon.DefaultQuantity = 1;
  371. addon.DisplayQuantityOnHostedPage = true;
  372. addon.Create();
  373. // accounting_code not yet supported.
  374. // Please contact us if you need this.
  375. ```
  376. ###Update add-on
  377. ```c#
  378. var plan = Plans.Get("gold");
  379. var addon = plan.GetAddOn("ipaddresses");
  380. addon.UnitAmountInCents["USD"] = 200;
  381. addon.Update();
  382. ```
  383. ###Delete add-on
  384. ```c#
  385. var plan = Plans.Get("gold");
  386. var addon = plan.GetAddOn("ipaddresses");
  387. addon.Delete();
  388. ```
  389. [back to top](#documentation)
  390. #Subscriptions
  391. - [List](#list-subscriptions)
  392. - [Get](#get-subscription)
  393. - [Create](#create-subscription)
  394. - [Update](#update-subscription)
  395. - [Cancel](#cancel-subscription)
  396. - [Reactivate](#reactivating-a-canceled-subscription)
  397. - [Terminate](#terminate-a-subscription)
  398. - [Postpone](#postpone-a-subscription)
  399. - [Preview](#preview-a-subscription)
  400. ###List Subscriptions
  401. ```c#
  402. using System.Linq;
  403. var subscriptions = Subscriptions.List();
  404. while (subscriptions.Any())
  405. {
  406. foreach (var subscription in subscriptions)
  407. Console.WriteLine("Subscription: " + subscription);
  408. subscriptions = subscriptions.Next;
  409. }
  410. ```
  411. ###List an account's subscriptions
  412. ```c#
  413. using System.Linq;
  414. var account = Accounts.Get("1");
  415. var subscriptions = account.GetSubscriptions();
  416. while (subscriptions.Any())
  417. {
  418. foreach (var subscription in subscriptions)
  419. Console.WriteLine("Subscription: " + subscription);
  420. subscriptions = subscriptions.Next;
  421. }
  422. ```
  423. ###Get subscription
  424. ```c#
  425. var subscription = Subscriptions.Get("44f83d7cba354d5b84812419f923ea96");
  426. ```
  427. ###Create Subscription
  428. ```c#
  429. var account = Accounts.Get("1"); // Account contains BillingInfo
  430. var plan = Plans.Get("gold");
  431. var subscription = new Subscription(account, plan, "USD"); // account, plan, currency
  432. subscription.Create();
  433. ```
  434. ###Update subscription
  435. ```c#
  436. var subscription = Subscriptions.Get("44f83d7cba354d5b84812419f923ea96");
  437. subscription.Plan = Plans.Get("silver");
  438. subscription.Quantity = 2;
  439. // perform the update operation now
  440. subscription.ChangeSubscription(Subscription.ChangeTimeframe.Now);
  441. // ChangeTimeframe.Now is the default, so we can simply:
  442. subscription.ChangeSubscription();
  443. // You might also use `Subscription.ChangeTimeframe.Renewal`
  444. ```
  445. ###Cancel subscription
  446. ```c#
  447. var subscription = Subscriptions.Get("44f83d7cba354d5b84812419f923ea96");
  448. subscription.Cancel();
  449. ```
  450. ###Reactivating a canceled subscription
  451. ```c#
  452. var subscription = Subscriptions.Get("44f83d7cba354d5b84812419f923ea96");
  453. subscription.Reactivate();
  454. ```
  455. ###Terminate a subscription
  456. ```c#
  457. var subscription = Subscriptions.Get("44f83d7cba354d5b84812419f923ea96");
  458. subscription.Terminate(Subscription.RefundType.Full);
  459. //subscription.Terminate(Subscription.RefundType.Partial);
  460. //subscription.Terminate(Subscription.RefundType.None);
  461. ```
  462. ###Postpone a subscription
  463. ```c#
  464. var subscription = Subscriptions.Get("44f83d7cba354d5b84812419f923ea96");
  465. subscription.Postpone(new DateTime(2012, 12, 31));
  466. ```
  467. ###Preview a subscription
  468. ```c#
  469. var account = Accounts.Get("1");
  470. var plan = Plans.Get("gold");
  471. var subscription = new Subscription(account, plan, "USD"); // account, plan, currency
  472. subscription.Preview();
  473. // preview subscription at renewal
  474. subscription.Preview(Subscription.ChangeTimeframe.Renewal);
  475. Debug.WriteLine(subscription.ExpiresAt);
  476. ```
  477. [back to top](#documentation)
  478. #Subscription Add-ons
  479. - [Create with Addons](#create-a-subscription-with-add-ons)
  480. - [Update with Addons](#update-subscription-with-add-ons)
  481. ###Create a subscription with Add-Ons
  482. ```c#
  483. var account = Accounts.Get("1");
  484. var plan = Plans.Get("gold");
  485. var subscription = new Subscription(account, plan, "USD"); // account, plan, currency
  486. subscription.AddOns.Add("plan-addon-code"); // string (plan.AddOnCode)
  487. subscription.AddOns.Add(plan.GetAddOn("another-addon-code")); // AddOn
  488. subscription.AddOns.Add(new SubscriptionAddOn("extra_users", 1000, 2));
  489. subscription.Create();
  490. ```
  491. ###Update subscription with add-ons
  492. ```c#
  493. var subscription = Subscriptions.Get("44f83d7cba354d5b84812419f923ea96");
  494. // append a new add-on
  495. var newAddOn = plan.GetAddOn("my-add-on");
  496. subscription.AddOns.Add(newAddOn);
  497. // change a quantity of an existing add-on
  498. var existingAddOn = subscription.AddOns.AsQueryable().First(x => x.AddOnCode == "extra_ips");
  499. existingAddOn.Quantity = 6;
  500. // remove an add-on
  501. subscription.AddOns.RemoveAt(0);
  502. // remove all add-ons
  503. subscription.AddOns.Clear();
  504. // call for an update
  505. subscription.ChangeSubscription(Subscription.ChangeTimeframe.Now);
  506. ```
  507. [back to top](#documentation)
  508. #Subscriptions for Manual Invoicing
  509. - [Create manual invoicing subscription](#create-subscription-manual-invoice)
  510. - [Update manual invoicing subscription](#update-subscription-manual-invoice)
  511. ###Create subscription (Manual Invoice)
  512. ```c#
  513. var account = Accounts.Get("1");
  514. var plan = Plans.Get("gold");
  515. var subscription = new Subscription(account, plan, "USD"); // account, plan, currency
  516. subscription.CollectionMethod = "manual";
  517. subscription.NetTerms = 10;
  518. subscription.PoNumber = "PO1234";
  519. subscription.Create();
  520. ```
  521. ###Update subscription (Manual Invoice)
  522. ```c#
  523. var subscription = Subscriptions.Get("44f83d7cba354d5b84812419f923ea96");
  524. subscription.CollectionMethod = "manual";
  525. subscription.NetTerms = 10;
  526. subscription.PoNumber = "PO1234";
  527. subscription.ChangeSubscription(Subscription.ChangeTimeframe.Now);
  528. ```
  529. [back to top](#documentation)
  530. #Transactions
  531. - [List](#list-transactions)
  532. - [List Account Transactions](#list-an-accounts-transactions)
  533. - [Get](#get-transaction)
  534. - [Create](#create-transaction)
  535. - [with stored billing info](#example-with-stored-billing-info)
  536. - [with new billing info](#example-with-new-billing-info)
  537. - [Refund](#refund-transaction)
  538. - [Partial](#partial-refund)
  539. - [Full](#full-refund)
  540. ###List transactions
  541. ```c#
  542. using System.Linq;
  543. var transactions = Transactions.List();
  544. while (transactions.Any())
  545. {
  546. foreach (var transaction in transactions)
  547. Console.WriteLine("Transaction: " + transaction);
  548. transactions = transactions.Next;
  549. }
  550. // Filter successful Transactions
  551. var transactions = Transactions.List(TransactionList.TransactionState.Success);
  552. // Filter failed purchases
  553. var transactions = Transactions.List(TransactionList.TransactionState.Success, TransactionList.TransactionType.Failed);
  554. ```
  555. ###List an account's transactions
  556. ```c#
  557. using System.Linq;
  558. var account = Accounts.Get("1");
  559. var transactions = account.GetTransactions();
  560. while (transactions.Any())
  561. {
  562. foreach (var transaction in transactions)
  563. Console.WriteLine("Transaction: " + transaction);
  564. transactions = transactions.Next;
  565. }
  566. ```
  567. ###Get transaction
  568. ```c#
  569. var transaction = Transactions.Get("a13acd8fe4294916b79aec87b7ea441f");
  570. ```
  571. ###Create Transaction
  572. ####Example with stored billing info
  573. ```c#
  574. var transaction = new Transaction("1", 100, "USD"); // account code, unit amount in cents, currency
  575. transaction.Create();
  576. ```
  577. ####Example with new billing info
  578. ```c#
  579. var account = Accounts.Get("1");
  580. account.BillingInfo = new BillingInfo(account.AccountCode)
  581. {
  582. FirstName = "Verana",
  583. LastName = "Example",
  584. CreditCardNumber = "4111-1111-1111-1111",
  585. VerificationValue = "123",
  586. ExpirationYear = 2015,
  587. ExpirationMonth = 11
  588. };
  589. var transaction = new Transaction(account, 100, "USD");
  590. transaction.Create();
  591. ```
  592. ###Refund transaction
  593. ####Partial Refund
  594. ```c#
  595. var transaction = Transactions.Get("a13acd8fe4294916b79aec87b7ea441f");
  596. transaction.Refund(1000); // (in cents) Refund $10
  597. ```
  598. ####Full Refund
  599. ```c#
  600. var transaction = Transactions.Get("a13acd8fe4294916b79aec87b7ea441f");
  601. transaction.Refund();
  602. ```