Skip to content

Commit e63fcb1

Browse files
author
Rajaram Padmanathan
committed
Refactored samples and added inline docs
Updated samples to indicate how headers can be set as key value pair
1 parent 3022eae commit e63fcb1

File tree

10 files changed

+340
-50
lines changed

10 files changed

+340
-50
lines changed

Samples/AuthorizeIntentExamples/AuthorizeOrderSample.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,22 @@
22
using System.Collections.Generic;
33
using System.Threading.Tasks;
44

5+
using Samples;
56
using CheckoutNetsdk.Orders;
67
using BraintreeHttp;
78

89
namespace Samples.AuthorizeIntentExamples
910
{
10-
public class AuthorizeOrderSample : SampleSkeleton
11+
public class AuthorizeOrderSample
1112
{
1213

14+
//This function can be used to perform authorization on the approved order.
1315
public async static Task<HttpResponse> AuthorizeOrder(string OrderId, bool debug = false)
1416
{
1517
var request = new OrdersAuthorizeRequest(OrderId);
1618
request.Prefer("return=representation");
1719
request.RequestBody(new OrderActionRequest());
18-
var response = await SampleSkeleton.client().Execute(request);
20+
var response = await PayPalClient.client().Execute(request);
1921

2022
if (debug)
2123
{

Samples/AuthorizeIntentExamples/CaptureOrderSample.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,21 @@
22
using System.Collections.Generic;
33
using System.Threading.Tasks;
44

5+
using Samples;
56
using CheckoutNetsdk.Payments;
67
using BraintreeHttp;
78

89
namespace Samples.AuthorizeIntentExamples
910
{
10-
public class CaptureOrderSample : SampleSkeleton
11+
public class CaptureOrderSample
1112
{
12-
13+
//This method can be used to capture the payment on the approved authorization.
1314
public async static Task<HttpResponse> CaptureOrder(string AuthorizationId, bool debug = false)
1415
{
1516
var request = new AuthorizationsCaptureRequest(AuthorizationId);
1617
request.Prefer("return=representation");
1718
request.RequestBody(new CaptureRequest());
18-
var response = await SampleSkeleton.client().Execute(request);
19+
var response = await PayPalClient.client().Execute(request);
1920

2021
if (debug)
2122
{
@@ -32,10 +33,10 @@ public async static Task<HttpResponse> CaptureOrder(string AuthorizationId, bool
3233
return response;
3334
}
3435

35-
static void Main(string[] args)
36-
{
37-
string OrderId = "1B753033X77480819";
38-
CaptureOrder(OrderId, true).Wait();
39-
}
36+
// static void Main(string[] args)
37+
// {
38+
// string OrderId = "1B753033X77480819";
39+
// CaptureOrder(OrderId, true).Wait();
40+
// }
4041
}
4142
}

Samples/AuthorizeIntentExamples/CreateOrderSample.cs

Lines changed: 59 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22
using System.Collections.Generic;
33
using System.Threading.Tasks;
44

5+
using Samples;
56
using CheckoutNetsdk.Orders;
67
using BraintreeHttp;
78

89
namespace Samples.AuthorizeIntentExamples
910
{
10-
public class CreateOrderSample : SampleSkeleton
11+
public class CreateOrderSample
1112
{
13+
//Below function can be used to build the create order request body with complete payload.
1214
private static OrderRequest BuildRequestBody()
1315
{
1416
OrderRequest orderRequest = new OrderRequest()
@@ -126,12 +128,14 @@ private static OrderRequest BuildRequestBody()
126128
return orderRequest;
127129
}
128130

131+
//Below function can be used to create an order with complete payload.
129132
public async static Task<HttpResponse> CreateOrder(bool debug=false)
130133
{
134+
Console.WriteLine("Creating Order with complete payload");
131135
var request = new OrdersCreateRequest();
132136
request.Prefer("return=representation");
133137
request.RequestBody(BuildRequestBody());
134-
var response = await SampleSkeleton.client().Execute(request);
138+
var response = await PayPalClient.client().Execute(request);
135139

136140
if (debug)
137141
{
@@ -151,9 +155,59 @@ public async static Task<HttpResponse> CreateOrder(bool debug=false)
151155
return response;
152156
}
153157

154-
//static void Main(string[] args)
155-
//{
158+
//Below function can be used to build the create order request body with minimum payload.
159+
private static OrderRequest BuildRequestBodyWithMinimumFields()
160+
{
161+
OrderRequest orderRequest = new OrderRequest()
162+
{
163+
Intent = "AUTHORIZE",
164+
PurchaseUnits = new List<PurchaseUnitRequest>
165+
{
166+
new PurchaseUnitRequest{
167+
Amount = new AmountWithBreakdown
168+
{
169+
CurrencyCode = "USD",
170+
Value = "230.00"
171+
}
172+
173+
}
174+
}
175+
};
176+
177+
return orderRequest;
178+
}
179+
180+
//Below function can be used to create an order with minimum payload.
181+
public async static Task<HttpResponse> CreateOrderWithMinimumFields(bool debug=false)
182+
{
183+
Console.WriteLine("Create Order with minimum payload..");
184+
var request = new OrdersCreateRequest();
185+
request.Headers.Add("prefer", "return=representation");
186+
request.RequestBody(BuildRequestBodyWithMinimumFields());
187+
var response = await PayPalClient.client().Execute(request);
188+
189+
if (debug)
190+
{
191+
var result = response.Result<Order>();
192+
Console.WriteLine("Status: {0}", result.Status);
193+
Console.WriteLine("Order Id: {0}", result.Id);
194+
Console.WriteLine("Intent: {0}", result.Intent);
195+
Console.WriteLine("Links:");
196+
foreach(LinkDescription link in result.Links)
197+
{
198+
Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method);
199+
}
200+
AmountWithBreakdown amount = result.PurchaseUnits[0].Amount;
201+
Console.WriteLine("Total Amount: {0} {1}", amount.CurrencyCode, amount.Value);
202+
}
203+
204+
return response;
205+
}
206+
207+
// static void Main(string[] args)
208+
// {
156209
// CreateOrder(true).Wait();
157-
//}
210+
// CreateOrderWithMinimumFields(true).Wait();
211+
// }
158212
}
159213
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
using System;
2+
3+
using Samples.AuthorizeIntentExamples;
4+
using CheckoutNetsdk.Orders;
5+
using CheckoutNetsdk.Payments;
6+
7+
namespace Samples
8+
{
9+
public class RunAllAuthorizeIntentFlow
10+
{
11+
//Rename to Main1 => Main
12+
static void Main(string []args){
13+
Console.WriteLine("Running Authorize Intent Flow..");
14+
var createOrderResponse = Samples.AuthorizeIntentExamples.CreateOrderSample.CreateOrder().Result;
15+
var createOrderResult = createOrderResponse.Result<Order>();
16+
Console.WriteLine("Status: {0}", createOrderResult.Status);
17+
Console.WriteLine("Order Id: {0}", createOrderResult.Id);
18+
Console.WriteLine("Intent: {0}", createOrderResult.Intent);
19+
Console.WriteLine("Links:");
20+
foreach (CheckoutNetsdk.Orders.LinkDescription link in createOrderResult.Links)
21+
{
22+
Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method);
23+
}
24+
AmountWithBreakdown amount = createOrderResult.PurchaseUnits[0].Amount;
25+
Console.WriteLine("Total Amount: {0} {1}", amount.CurrencyCode, amount.Value);
26+
27+
Console.WriteLine("Copy approve link and paste it in browser. Login with buyer account and follow the instructions.\nOnce approved hit enter...\n");
28+
Console.Read();
29+
30+
Console.WriteLine("Authorizing the Order....");
31+
var authorizeOrderResponse = AuthorizeOrderSample.AuthorizeOrder(createOrderResult.Id).Result;
32+
var authorizeOrderResult = authorizeOrderResponse.Result<Order>();
33+
Console.WriteLine("Status: {0}", authorizeOrderResult.Status);
34+
var authorizationId = authorizeOrderResult.PurchaseUnits[0].Payments.Authorizations[0].Id;
35+
Console.WriteLine("Order Id: {0}", authorizeOrderResult.Id);
36+
Console.WriteLine("Authorization Id: {0}", authorizeOrderResult.PurchaseUnits[0].Payments.Authorizations[0].Id);
37+
Console.WriteLine("Intent: {0}", authorizeOrderResult.Intent);
38+
Console.WriteLine("Links:");
39+
foreach (CheckoutNetsdk.Orders.LinkDescription link in authorizeOrderResult.Links)
40+
{
41+
Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method);
42+
}
43+
AmountWithBreakdown authorixedAmount = authorizeOrderResult.PurchaseUnits[0].Amount;
44+
Console.WriteLine("Buyer:");
45+
Console.WriteLine("\tEmail Address: {0}", authorizeOrderResult.Payer.EmailAddress);
46+
47+
Console.WriteLine("Capturing the payment...");
48+
var captureOrderResponse = CaptureOrderSample.CaptureOrder(authorizationId).Result;
49+
var captureOrderResult = captureOrderResponse.Result<CheckoutNetsdk.Payments.Capture>();
50+
Console.WriteLine("Status: {0}", captureOrderResult.Status);
51+
Console.WriteLine("Capture Id: {0}", captureOrderResult.Id);
52+
Console.WriteLine("Links:");
53+
foreach (CheckoutNetsdk.Payments.LinkDescription link in captureOrderResult.Links)
54+
{
55+
Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method);
56+
}
57+
58+
Console.WriteLine("Refunding the Order....");
59+
var refundOrderResponse = CapturesRefundSample.CapturesRefund(captureOrderResult.Id).Result;
60+
var refundOrderResult = refundOrderResponse.Result<CheckoutNetsdk.Payments.Refund>();
61+
Console.WriteLine("Status: {0}", refundOrderResult.Status);
62+
Console.WriteLine("Refund Id: {0}", refundOrderResult.Id);
63+
Console.WriteLine("Links:");
64+
foreach (CheckoutNetsdk.Payments.LinkDescription link in refundOrderResult.Links)
65+
{
66+
Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method);
67+
}
68+
69+
}
70+
}
71+
72+
}

Samples/CaptureIntentExamples/CaptureOrderSample.cs

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,25 @@
22
using System.Collections.Generic;
33
using System.Threading.Tasks;
44

5+
using CheckoutNetsdk.Core;
56
using CheckoutNetsdk.Orders;
67
using BraintreeHttp;
78

89
namespace Samples.CaptureIntentExamples
910
{
10-
public class CaptureOrderSample : SampleSkeleton
11+
public class CaptureOrderSample
1112
{
1213

14+
/*
15+
Method to capture order after creation. Valid approved order Id should be
16+
passed an argument to this method.
17+
*/
1318
public async static Task<HttpResponse> CaptureOrder(string OrderId, bool debug = false)
1419
{
1520
var request = new OrdersCaptureRequest(OrderId);
1621
request.Prefer("return=representation");
1722
request.RequestBody(new OrderActionRequest());
18-
var response = await SampleSkeleton.client().Execute(request);
23+
var response = await PayPalClient.client().Execute(request);
1924

2025
if (debug)
2126
{
@@ -28,6 +33,14 @@ public async static Task<HttpResponse> CaptureOrder(string OrderId, bool debug =
2833
{
2934
Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method);
3035
}
36+
Console.WriteLine("Capture Ids: ");
37+
foreach (PurchaseUnit purchaseUnit in result.PurchaseUnits)
38+
{
39+
foreach (Capture capture in purchaseUnit.Payments.Captures)
40+
{
41+
Console.WriteLine("\t {0}", capture.Id);
42+
}
43+
}
3144
AmountWithBreakdown amount = result.PurchaseUnits[0].Amount;
3245
Console.WriteLine("Buyer:");
3346
Console.WriteLine("\tEmail Address: {0}\n\tName: {1}\n\tPhone Number: {2}{3}", result.Payer.EmailAddress, result.Payer.Name.FullName, result.Payer.Phone.CountryCode, result.Payer.Phone.NationalNumber);
@@ -36,10 +49,14 @@ public async static Task<HttpResponse> CaptureOrder(string OrderId, bool debug =
3649
return response;
3750
}
3851

39-
//static void Main(string[] args)
40-
//{
41-
// string OrderId = "0FG2496500642503G";
42-
// CaptureOrder(OrderId, true).Wait();
43-
//}
52+
/*
53+
Driver Function to invoke capture payment on order.
54+
Order Id should be replaced with the valid approved order id.
55+
*/
56+
// static void Main(string[] args)
57+
// {
58+
// string OrderId = "5JC45524FD4582424";
59+
// CaptureOrder(OrderId, true).Wait();
60+
// }
4461
}
4562
}

Samples/CaptureIntentExamples/CreateOrderSample.cs

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,20 @@
22
using System.Collections.Generic;
33
using System.Threading.Tasks;
44

5+
using CheckoutNetsdk.Core;
56
using CheckoutNetsdk.Orders;
67
using BraintreeHttp;
78

89
namespace Samples.CaptureIntentExamples
910
{
10-
public class CreateOrderSample : SampleSkeleton
11+
public class CreateOrderSample
1112
{
13+
14+
/*
15+
Method to generate sample create order body with <b>CAPTURE</b> intent
16+
17+
@return OrderRequest with created order request
18+
*/
1219
private static OrderRequest BuildRequestBody()
1320
{
1421
OrderRequest orderRequest = new OrderRequest()
@@ -64,10 +71,6 @@ private static OrderRequest BuildRequestBody()
6471
}
6572
}
6673
},
67-
Payee = new Payee
68-
{
69-
EmailAddress = "rpenmetsa-us@paypal.com"
70-
},
7174
Items = new List<Item>
7275
{
7376
new Item
@@ -130,12 +133,19 @@ private static OrderRequest BuildRequestBody()
130133
return orderRequest;
131134
}
132135

133-
public async static Task<HttpResponse> CreateOrder(bool debug=false)
136+
/*
137+
Method to create order
138+
139+
@param debug true = print response data
140+
@return HttpResponse<Order> response received from API
141+
@throws IOException Exceptions from API if any
142+
*/
143+
public async static Task<HttpResponse> CreateOrder(bool debug = false)
134144
{
135145
var request = new OrdersCreateRequest();
136-
request.Prefer("return=representation");
146+
request.Headers.Add("prefer", "return=representation");
137147
request.RequestBody(BuildRequestBody());
138-
var response = await SampleSkeleton.client().Execute(request);
148+
var response = await PayPalClient.client().Execute(request);
139149

140150
if (debug)
141151
{
@@ -144,7 +154,7 @@ public async static Task<HttpResponse> CreateOrder(bool debug=false)
144154
Console.WriteLine("Order Id: {0}", result.Id);
145155
Console.WriteLine("Intent: {0}", result.Intent);
146156
Console.WriteLine("Links:");
147-
foreach(LinkDescription link in result.Links)
157+
foreach (LinkDescription link in result.Links)
148158
{
149159
Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method);
150160
}
@@ -154,10 +164,13 @@ public async static Task<HttpResponse> CreateOrder(bool debug=false)
154164

155165
return response;
156166
}
157-
158-
//static void Main(string[] args)
159-
//{
160-
// CreateOrder(true).Wait();
161-
//}
167+
/*
168+
This is the driver function which invokes the createOrder function to create
169+
an sample order.
170+
*/
171+
// static void Main(string[] args)
172+
// {
173+
// CreateOrder(true).Wait();
174+
// }
162175
}
163176
}

0 commit comments

Comments
 (0)