-
Notifications
You must be signed in to change notification settings - Fork 1
/
PayData.cs
207 lines (175 loc) · 6.78 KB
/
PayData.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Diagnostics.Eventing.Reader;
using System.Dynamic;
using System.Globalization;
using System.Runtime.Remoting.Channels;
using System.Security.Cryptography;
using System.Text;
using System.Web;
using System.Web.Util;
using DotNetNuke.Common;
using DotNetNuke.Entities.Portals;
using NBrightCore.common;
using Nevoweb.DNN.NBrightBuy.Components;
namespace OS_PayPal
{
public class PayData
{
public PayData(OrderData oInfo)
{
LoadSettings(oInfo);
}
public void LoadSettings(OrderData oInfo)
{
var settings = ProviderUtils.GetProviderSettings();
var appliedtotal = oInfo.PurchaseInfo.GetXmlPropertyDouble("genxml/appliedtotal");
var alreadypaid = oInfo.PurchaseInfo.GetXmlPropertyDouble("genxml/alreadypaid");
ItemId = oInfo.PurchaseInfo.ItemID.ToString("");
PostUrl = settings.GetXmlProperty("genxml/textbox/paymenturl");
VerifyUrl = settings.GetXmlProperty("genxml/textbox/verifyurl");
PayPalId = settings.GetXmlProperty("genxml/textbox/paypalid");
CartName = "NBrightStore";
CurrencyCode = oInfo.PurchaseInfo.GetXmlProperty("genxml/currencycode");
if (CurrencyCode == "") CurrencyCode = settings.GetXmlProperty("genxml/textbox/currencycode");
var param = new string[3];
param[0] = "orderid=" + oInfo.PurchaseInfo.ItemID.ToString("");
param[1] = "status=1";
ReturnUrl = Globals.NavigateURL(StoreSettings.Current.PaymentTabId, "", param);
param[0] = "orderid=" + oInfo.PurchaseInfo.ItemID.ToString("");
param[1] = "status=0";
ReturnCancelUrl = Globals.NavigateURL(StoreSettings.Current.PaymentTabId, "", param);
NotifyUrl = Utils.ToAbsoluteUrl("/DesktopModules/NBright/OS_PayPal/notify.ashx");
MerchantLanguage = Utils.GetCurrentCulture();
Amount = (appliedtotal - alreadypaid).ToString("0.00", CultureInfo.InvariantCulture);
Email = oInfo.PurchaseInfo.GetXmlProperty("genxml/billaddress/genxml/textbox/email");
if (!Utils.IsEmail(Email)) Email = oInfo.PurchaseInfo.GetXmlProperty("genxml/extrainfo/genxml/textbox/cartemailaddress");
// set shipping and tax to zero, these should be calculated by the store so the amount should always be correct.
// for some reason paypal seem to add shipping and tax to the total.
// Not sure if this is a new change by paypal, or if it's always been wrong!!
//ShippingAmount = oInfo.PurchaseInfo.GetXmlPropertyDouble("genxml/shippingcost").ToString("0.00", CultureInfo.InvariantCulture);
//TaxAmount = oInfo.PurchaseInfo.GetXmlPropertyDouble("genxml/taxcost").ToString("0.00", CultureInfo.InvariantCulture);
const int zero = 0;
ShippingAmount = zero.ToString("0.00", CultureInfo.InvariantCulture);
TaxAmount = zero.ToString("0.00", CultureInfo.InvariantCulture);
}
public string ItemId { get; set; }
public string PostUrl { get; set; }
public string VerifyUrl { get; set; }
public string PayPalId { get; set; }
public string CartName { get; set; }
public string CurrencyCode { get; set; }
public string ReturnUrl { get; set; }
public string ReturnCancelUrl { get; set; }
public string NotifyUrl { get; set; }
public string MerchantLanguage { get; set; }
public string Amount { get; set; }
public string Email { get; set; }
public string ShippingAmount { get; set; }
public string TaxAmount { get; set; }
}
public class PayPalIpnParameters
{
public PayPalIpnParameters(HttpRequest ipnRequest)
{
var param = ipnRequest.BinaryRead(ipnRequest.ContentLength);
var strRequest = Encoding.ASCII.GetString(param);
_postString = "cmd=_notify-validate&" + strRequest;
NameValueCollection requestForm = ipnRequest.Form;
foreach (string paramName in requestForm)
{
switch (paramName)
{
case "payment_status":
_payment_status = requestForm[paramName];
break;
case "item_number":
_item_number = Convert.ToInt32(requestForm[paramName]);
break;
case "custom":
_custom = requestForm[paramName];
break;
}
}
}
private string _postString = string.Empty;
private string _payment_status = string.Empty;
private string _txn_id = string.Empty;
private string _receiver_email = string.Empty;
private string _email = string.Empty;
private string _custom = "";
private int _item_number = -1;
private decimal _mc_gross = -1;
private decimal _shipping = -1;
private decimal _tax = -1;
public string PostString
{
get { return _postString; }
set { _postString = value; }
}
public string payment_status
{
get { return _payment_status; }
set { _payment_status = value; }
}
public string txn_id
{
get { return _txn_id; }
set { _txn_id = value; }
}
public string receiver_email
{
get { return _receiver_email; }
set { _receiver_email = value; }
}
public string email
{
get { return _email; }
set { _email = value; }
}
public string custom
{
get { return _custom; }
set { _custom = value; }
}
public int item_number
{
get { return _item_number; }
set { _item_number = value; }
}
public decimal mc_gross
{
get { return _mc_gross; }
set { _mc_gross = value; }
}
public decimal shipping
{
get { return _shipping; }
set { _shipping = value; }
}
public decimal tax
{
get { return _tax; }
set { _tax = value; }
}
public int CartID
{
get { return _item_number; }
}
public bool IsValid
{
get
{
if (_payment_status != "Completed" & _payment_status != "Pending")
{
return false;
}
else
{
return true;
}
}
}
}
}