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
|
# File 'app/models/order.rb', line 23
def sagepay_crypt(payment_id)
data = {}
o = self
data["VendorTxCode"] = reference(payment_id)
data["Amount"] = self.order_items.inject(0) { |sum, oi| sum = sum + oi.total_price }
data["Currency"] = "GBP"
data["Description"] = self.description
data["SuccessURL"] = Preference.get_cached(self.system_id, 'host') + "/order/sp/success"
data["FailureURL"] = Preference.get_cached(self.system_id, 'host') + "/order/sp/failure"
data["CustomerEMail"] = self.email
data["VendorEMail"] = Preference.get_cached(self.system_id, 'sage_pay_order_payment_email')
data["BillingSurname"] = o.lastname
data["BillingFirstnames"] = o.firstname
data["BillingAddress1"] = o.address1
data["BillingAddress2"] = o.address2 if o.address2
data["BillingCity"] = o.town
data["BillingPostCode"] = o.postcode
data["BillingCountry"] = o.country || "UK"
data["DeliverySurname"] = o.lastname
data["DeliveryFirstnames"] = o.firstname
data["DeliveryAddress1"] = o.del_address1 || o.address1
data["DeliveryAddress2"] = o.del_address2 || o.address2
data["DeliveryCity"] = o.del_town || o.town
data["DeliveryPostCode"] = o.del_postcode || o.postcode
data["DeliveryCountry"] = o.del_country || o.country
basket = []
basket << o.order_items.size.to_s
o.order_items.each do |i|
basket << i.name
basket << i.quantity
basket << i.unit_price
basket << i.tax_rate
basket << i.unit_price * ( 1 + i.tax_rate )
basket << i.total_price
end
data["Basket"] = basket.join(':')
dataa = []
data.each do |name,value|
dataa << "#{name}=#{value}"
end
datas = dataa.join('&')
Base64.strict_encode64(Order.sage_encrypt_xor(datas, Preference.get_cached(self.system_id, 'sage_pay_encryption_key')))
end
|