activemerchant 1.43.3 → 1.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/CHANGELOG +133 -3
  5. data/CONTRIBUTORS +25 -0
  6. data/README.md +14 -39
  7. data/lib/active_merchant.rb +43 -2
  8. data/lib/active_merchant/billing.rb +3 -1
  9. data/lib/active_merchant/billing/base.rb +10 -2
  10. data/lib/active_merchant/billing/check.rb +29 -22
  11. data/lib/active_merchant/billing/compatibility.rb +120 -0
  12. data/lib/active_merchant/billing/credit_card.rb +129 -60
  13. data/lib/active_merchant/billing/credit_card_formatting.rb +4 -1
  14. data/lib/active_merchant/billing/credit_card_methods.rb +60 -43
  15. data/lib/active_merchant/billing/cvv_result.rb +15 -15
  16. data/lib/active_merchant/billing/gateway.rb +46 -11
  17. data/lib/active_merchant/billing/gateways/adyen.rb +205 -0
  18. data/lib/active_merchant/billing/gateways/app55.rb +1 -9
  19. data/lib/active_merchant/billing/gateways/authorize_net.rb +7 -391
  20. data/lib/active_merchant/billing/gateways/authorize_net_arb.rb +417 -0
  21. data/lib/active_merchant/billing/gateways/authorize_net_cim.rb +20 -4
  22. data/lib/active_merchant/billing/gateways/balanced.rb +127 -367
  23. data/lib/active_merchant/billing/gateways/barclays_epdq.rb +1 -1
  24. data/lib/active_merchant/billing/gateways/beanstream.rb +25 -6
  25. data/lib/active_merchant/billing/gateways/beanstream/beanstream_core.rb +3 -3
  26. data/lib/active_merchant/billing/gateways/blue_pay.rb +11 -3
  27. data/lib/active_merchant/billing/gateways/bogus.rb +1 -13
  28. data/lib/active_merchant/billing/gateways/borgun.rb +211 -0
  29. data/lib/active_merchant/billing/gateways/braintree_blue.rb +31 -13
  30. data/lib/active_merchant/billing/gateways/bridge_pay.rb +7 -0
  31. data/lib/active_merchant/billing/gateways/cashnet.rb +184 -0
  32. data/lib/active_merchant/billing/gateways/cc5.rb +45 -0
  33. data/lib/active_merchant/billing/gateways/certo_direct.rb +3 -2
  34. data/lib/active_merchant/billing/gateways/commercegate.rb +143 -0
  35. data/lib/active_merchant/billing/gateways/conekta.rb +56 -81
  36. data/lib/active_merchant/billing/gateways/cyber_source.rb +1 -0
  37. data/lib/active_merchant/billing/gateways/data_cash.rb +3 -1
  38. data/lib/active_merchant/billing/gateways/efsnet.rb +3 -14
  39. data/lib/active_merchant/billing/gateways/elavon.rb +45 -9
  40. data/lib/active_merchant/billing/gateways/epay.rb +2 -2
  41. data/lib/active_merchant/billing/gateways/eway.rb +1 -12
  42. data/lib/active_merchant/billing/gateways/eway_managed.rb +1 -1
  43. data/lib/active_merchant/billing/gateways/eway_rapid.rb +233 -202
  44. data/lib/active_merchant/billing/gateways/exact.rb +1 -1
  45. data/lib/active_merchant/billing/gateways/fat_zebra.rb +1 -1
  46. data/lib/active_merchant/billing/gateways/federated_canada.rb +1 -8
  47. data/lib/active_merchant/billing/gateways/finansbank.rb +2 -1
  48. data/lib/active_merchant/billing/gateways/first_pay.rb +108 -124
  49. data/lib/active_merchant/billing/gateways/firstdata_e4.rb +43 -13
  50. data/lib/active_merchant/billing/gateways/garanti.rb +2 -2
  51. data/lib/active_merchant/billing/gateways/hps.rb +281 -0
  52. data/lib/active_merchant/billing/gateways/iats_payments.rb +2 -2
  53. data/lib/active_merchant/billing/gateways/ideal/ideal_base.rb +1 -4
  54. data/lib/active_merchant/billing/gateways/inspire.rb +0 -8
  55. data/lib/active_merchant/billing/gateways/iridium.rb +25 -3
  56. data/lib/active_merchant/billing/gateways/jetpay.rb +1 -1
  57. data/lib/active_merchant/billing/gateways/linkpoint.rb +4 -13
  58. data/lib/active_merchant/billing/gateways/litle.rb +10 -4
  59. data/lib/active_merchant/billing/gateways/maxipago.rb +7 -0
  60. data/lib/active_merchant/billing/gateways/merchant_e_solutions.rb +0 -6
  61. data/lib/active_merchant/billing/gateways/merchant_ware.rb +4 -11
  62. data/lib/active_merchant/billing/gateways/merchant_ware_version_four.rb +3 -10
  63. data/lib/active_merchant/billing/gateways/mercury.rb +0 -7
  64. data/lib/active_merchant/billing/gateways/metrics_global.rb +1 -20
  65. data/lib/active_merchant/billing/gateways/migs.rb +1 -1
  66. data/lib/active_merchant/billing/gateways/moneris.rb +29 -21
  67. data/lib/active_merchant/billing/gateways/moneris_us.rb +1 -11
  68. data/lib/active_merchant/billing/gateways/money_movers.rb +1 -8
  69. data/lib/active_merchant/billing/gateways/nab_transact.rb +16 -15
  70. data/lib/active_merchant/billing/gateways/net_registry.rb +1 -1
  71. data/lib/active_merchant/billing/gateways/netbilling.rb +0 -7
  72. data/lib/active_merchant/billing/gateways/network_merchants.rb +21 -18
  73. data/lib/active_merchant/billing/gateways/ogone.rb +3 -3
  74. data/lib/active_merchant/billing/gateways/openpay.rb +1 -8
  75. data/lib/active_merchant/billing/gateways/optimal_payment.rb +34 -23
  76. data/lib/active_merchant/billing/gateways/orbital.rb +121 -4
  77. data/lib/active_merchant/billing/gateways/orbital/orbital_soft_descriptors.rb +22 -21
  78. data/lib/active_merchant/billing/gateways/pac_net_raven.rb +2 -9
  79. data/lib/active_merchant/billing/gateways/pago_facil.rb +122 -0
  80. data/lib/active_merchant/billing/gateways/pay_junction.rb +3 -13
  81. data/lib/active_merchant/billing/gateways/pay_secure.rb +0 -7
  82. data/lib/active_merchant/billing/gateways/paybox_direct.rb +1 -9
  83. data/lib/active_merchant/billing/gateways/payex.rb +1 -1
  84. data/lib/active_merchant/billing/gateways/payflow.rb +7 -1
  85. data/lib/active_merchant/billing/gateways/payflow/payflow_common_api.rb +15 -15
  86. data/lib/active_merchant/billing/gateways/payflow_express.rb +19 -19
  87. data/lib/active_merchant/billing/gateways/payment_express.rb +1 -1
  88. data/lib/active_merchant/billing/gateways/paymill.rb +7 -2
  89. data/lib/active_merchant/billing/gateways/paypal.rb +25 -14
  90. data/lib/active_merchant/billing/gateways/paypal/paypal_common_api.rb +1 -1
  91. data/lib/active_merchant/billing/gateways/paypal/paypal_recurring_api.rb +16 -2
  92. data/lib/active_merchant/billing/gateways/paypal_digital_goods.rb +3 -2
  93. data/lib/active_merchant/billing/gateways/paypal_express.rb +25 -0
  94. data/lib/active_merchant/billing/gateways/payscout.rb +1 -8
  95. data/lib/active_merchant/billing/gateways/pin.rb +39 -7
  96. data/lib/active_merchant/billing/gateways/plugnpay.rb +1 -12
  97. data/lib/active_merchant/billing/gateways/psigate.rb +1 -12
  98. data/lib/active_merchant/billing/gateways/qbms.rb +1 -1
  99. data/lib/active_merchant/billing/gateways/quantum.rb +2 -2
  100. data/lib/active_merchant/billing/gateways/quickpay.rb +17 -15
  101. data/lib/active_merchant/billing/gateways/realex.rb +3 -12
  102. data/lib/active_merchant/billing/gateways/sage.rb +1 -1
  103. data/lib/active_merchant/billing/gateways/sage/sage_bankcard.rb +2 -8
  104. data/lib/active_merchant/billing/gateways/sage/sage_core.rb +1 -1
  105. data/lib/active_merchant/billing/gateways/sage/sage_virtual_check.rb +1 -1
  106. data/lib/active_merchant/billing/gateways/sage_pay.rb +93 -28
  107. data/lib/active_merchant/billing/gateways/secure_net.rb +1 -8
  108. data/lib/active_merchant/billing/gateways/secure_pay_au.rb +3 -3
  109. data/lib/active_merchant/billing/gateways/secure_pay_tech.rb +0 -7
  110. data/lib/active_merchant/billing/gateways/skip_jack.rb +1 -2
  111. data/lib/active_merchant/billing/gateways/smart_ps.rb +8 -2
  112. data/lib/active_merchant/billing/gateways/spreedly_core.rb +2 -1
  113. data/lib/active_merchant/billing/gateways/stripe.rb +14 -15
  114. data/lib/active_merchant/billing/gateways/swipe_checkout.rb +0 -1
  115. data/lib/active_merchant/billing/gateways/trust_commerce.rb +4 -9
  116. data/lib/active_merchant/billing/gateways/usa_epay_advanced.rb +46 -43
  117. data/lib/active_merchant/billing/gateways/usa_epay_transaction.rb +7 -0
  118. data/lib/active_merchant/billing/gateways/verifi.rb +1 -8
  119. data/lib/active_merchant/billing/gateways/viaklix.rb +0 -6
  120. data/lib/active_merchant/billing/gateways/vindicia.rb +68 -44
  121. data/lib/active_merchant/billing/gateways/webpay.rb +1 -9
  122. data/lib/active_merchant/billing/gateways/wirecard.rb +117 -11
  123. data/lib/active_merchant/billing/gateways/worldpay.rb +50 -22
  124. data/lib/active_merchant/billing/gateways/worldpay_us.rb +181 -0
  125. data/lib/active_merchant/billing/model.rb +30 -0
  126. data/lib/active_merchant/billing/rails.rb +3 -0
  127. data/lib/active_merchant/billing/response.rb +20 -15
  128. data/lib/active_merchant/country.rb +327 -0
  129. data/lib/active_merchant/empty.rb +20 -0
  130. data/lib/active_merchant/errors.rb +29 -0
  131. data/lib/active_merchant/offsite_payments_shim.rb +19 -0
  132. data/lib/active_merchant/version.rb +1 -1
  133. metadata +60 -243
  134. metadata.gz.sig +0 -0
  135. data/gem-public_cert.pem +0 -21
  136. data/lib/active_merchant/billing/expiry_date.rb +0 -34
  137. data/lib/active_merchant/billing/gateways/orbital/avs_result.rb +0 -93
  138. data/lib/active_merchant/billing/gateways/orbital/cvv_result.rb +0 -34
  139. data/lib/active_merchant/billing/integrations.rb +0 -17
  140. data/lib/active_merchant/billing/integrations/a1agregator.rb +0 -26
  141. data/lib/active_merchant/billing/integrations/a1agregator/helper.rb +0 -31
  142. data/lib/active_merchant/billing/integrations/a1agregator/notification.rb +0 -186
  143. data/lib/active_merchant/billing/integrations/a1agregator/status.rb +0 -38
  144. data/lib/active_merchant/billing/integrations/action_view_helper.rb +0 -78
  145. data/lib/active_merchant/billing/integrations/authorize_net_sim.rb +0 -38
  146. data/lib/active_merchant/billing/integrations/authorize_net_sim/helper.rb +0 -229
  147. data/lib/active_merchant/billing/integrations/authorize_net_sim/notification.rb +0 -340
  148. data/lib/active_merchant/billing/integrations/bit_pay.rb +0 -30
  149. data/lib/active_merchant/billing/integrations/bit_pay/helper.rb +0 -66
  150. data/lib/active_merchant/billing/integrations/bit_pay/notification.rb +0 -74
  151. data/lib/active_merchant/billing/integrations/bit_pay/return.rb +0 -10
  152. data/lib/active_merchant/billing/integrations/bogus.rb +0 -23
  153. data/lib/active_merchant/billing/integrations/bogus/helper.rb +0 -17
  154. data/lib/active_merchant/billing/integrations/bogus/notification.rb +0 -11
  155. data/lib/active_merchant/billing/integrations/bogus/return.rb +0 -10
  156. data/lib/active_merchant/billing/integrations/chronopay.rb +0 -23
  157. data/lib/active_merchant/billing/integrations/chronopay/helper.rb +0 -120
  158. data/lib/active_merchant/billing/integrations/chronopay/notification.rb +0 -158
  159. data/lib/active_merchant/billing/integrations/chronopay/return.rb +0 -10
  160. data/lib/active_merchant/billing/integrations/citrus.rb +0 -28
  161. data/lib/active_merchant/billing/integrations/citrus/helper.rb +0 -57
  162. data/lib/active_merchant/billing/integrations/citrus/notification.rb +0 -133
  163. data/lib/active_merchant/billing/integrations/citrus/return.rb +0 -40
  164. data/lib/active_merchant/billing/integrations/direc_pay.rb +0 -41
  165. data/lib/active_merchant/billing/integrations/direc_pay/helper.rb +0 -200
  166. data/lib/active_merchant/billing/integrations/direc_pay/notification.rb +0 -76
  167. data/lib/active_merchant/billing/integrations/direc_pay/return.rb +0 -32
  168. data/lib/active_merchant/billing/integrations/direc_pay/status.rb +0 -37
  169. data/lib/active_merchant/billing/integrations/directebanking.rb +0 -47
  170. data/lib/active_merchant/billing/integrations/directebanking/helper.rb +0 -90
  171. data/lib/active_merchant/billing/integrations/directebanking/notification.rb +0 -120
  172. data/lib/active_merchant/billing/integrations/directebanking/return.rb +0 -11
  173. data/lib/active_merchant/billing/integrations/doku.rb +0 -24
  174. data/lib/active_merchant/billing/integrations/doku/helper.rb +0 -102
  175. data/lib/active_merchant/billing/integrations/doku/notification.rb +0 -69
  176. data/lib/active_merchant/billing/integrations/doku/return.rb +0 -10
  177. data/lib/active_merchant/billing/integrations/dotpay.rb +0 -22
  178. data/lib/active_merchant/billing/integrations/dotpay/helper.rb +0 -77
  179. data/lib/active_merchant/billing/integrations/dotpay/notification.rb +0 -86
  180. data/lib/active_merchant/billing/integrations/dotpay/return.rb +0 -11
  181. data/lib/active_merchant/billing/integrations/dwolla.rb +0 -23
  182. data/lib/active_merchant/billing/integrations/dwolla/common.rb +0 -23
  183. data/lib/active_merchant/billing/integrations/dwolla/helper.rb +0 -43
  184. data/lib/active_merchant/billing/integrations/dwolla/notification.rb +0 -64
  185. data/lib/active_merchant/billing/integrations/dwolla/return.rb +0 -49
  186. data/lib/active_merchant/billing/integrations/e_payment_plans.rb +0 -48
  187. data/lib/active_merchant/billing/integrations/e_payment_plans/helper.rb +0 -34
  188. data/lib/active_merchant/billing/integrations/e_payment_plans/notification.rb +0 -84
  189. data/lib/active_merchant/billing/integrations/easy_pay.rb +0 -30
  190. data/lib/active_merchant/billing/integrations/easy_pay/common.rb +0 -40
  191. data/lib/active_merchant/billing/integrations/easy_pay/helper.rb +0 -36
  192. data/lib/active_merchant/billing/integrations/easy_pay/notification.rb +0 -59
  193. data/lib/active_merchant/billing/integrations/epay.rb +0 -21
  194. data/lib/active_merchant/billing/integrations/epay/helper.rb +0 -55
  195. data/lib/active_merchant/billing/integrations/epay/notification.rb +0 -110
  196. data/lib/active_merchant/billing/integrations/first_data.rb +0 -38
  197. data/lib/active_merchant/billing/integrations/first_data/helper.rb +0 -61
  198. data/lib/active_merchant/billing/integrations/first_data/notification.rb +0 -56
  199. data/lib/active_merchant/billing/integrations/gestpay.rb +0 -25
  200. data/lib/active_merchant/billing/integrations/gestpay/common.rb +0 -42
  201. data/lib/active_merchant/billing/integrations/gestpay/helper.rb +0 -70
  202. data/lib/active_merchant/billing/integrations/gestpay/notification.rb +0 -85
  203. data/lib/active_merchant/billing/integrations/gestpay/return.rb +0 -10
  204. data/lib/active_merchant/billing/integrations/helper.rb +0 -123
  205. data/lib/active_merchant/billing/integrations/hi_trust.rb +0 -27
  206. data/lib/active_merchant/billing/integrations/hi_trust/helper.rb +0 -58
  207. data/lib/active_merchant/billing/integrations/hi_trust/notification.rb +0 -59
  208. data/lib/active_merchant/billing/integrations/hi_trust/return.rb +0 -68
  209. data/lib/active_merchant/billing/integrations/ipay88.rb +0 -23
  210. data/lib/active_merchant/billing/integrations/ipay88/helper.rb +0 -118
  211. data/lib/active_merchant/billing/integrations/ipay88/notification.rb +0 -103
  212. data/lib/active_merchant/billing/integrations/ipay88/return.rb +0 -29
  213. data/lib/active_merchant/billing/integrations/klarna.rb +0 -71
  214. data/lib/active_merchant/billing/integrations/klarna/helper.rb +0 -123
  215. data/lib/active_merchant/billing/integrations/klarna/notification.rb +0 -103
  216. data/lib/active_merchant/billing/integrations/liqpay.rb +0 -30
  217. data/lib/active_merchant/billing/integrations/liqpay/helper.rb +0 -43
  218. data/lib/active_merchant/billing/integrations/liqpay/notification.rb +0 -89
  219. data/lib/active_merchant/billing/integrations/liqpay/return.rb +0 -83
  220. data/lib/active_merchant/billing/integrations/maksuturva.rb +0 -86
  221. data/lib/active_merchant/billing/integrations/maksuturva/helper.rb +0 -119
  222. data/lib/active_merchant/billing/integrations/maksuturva/notification.rb +0 -48
  223. data/lib/active_merchant/billing/integrations/mollie_ideal.rb +0 -98
  224. data/lib/active_merchant/billing/integrations/mollie_ideal/helper.rb +0 -67
  225. data/lib/active_merchant/billing/integrations/mollie_ideal/notification.rb +0 -69
  226. data/lib/active_merchant/billing/integrations/mollie_ideal/return.rb +0 -10
  227. data/lib/active_merchant/billing/integrations/moneybookers.rb +0 -26
  228. data/lib/active_merchant/billing/integrations/moneybookers/helper.rb +0 -75
  229. data/lib/active_merchant/billing/integrations/moneybookers/notification.rb +0 -123
  230. data/lib/active_merchant/billing/integrations/nochex.rb +0 -88
  231. data/lib/active_merchant/billing/integrations/nochex/helper.rb +0 -68
  232. data/lib/active_merchant/billing/integrations/nochex/notification.rb +0 -94
  233. data/lib/active_merchant/billing/integrations/nochex/return.rb +0 -10
  234. data/lib/active_merchant/billing/integrations/notification.rb +0 -71
  235. data/lib/active_merchant/billing/integrations/pag_seguro.rb +0 -53
  236. data/lib/active_merchant/billing/integrations/pag_seguro/helper.rb +0 -121
  237. data/lib/active_merchant/billing/integrations/pag_seguro/notification.rb +0 -104
  238. data/lib/active_merchant/billing/integrations/paxum.rb +0 -44
  239. data/lib/active_merchant/billing/integrations/paxum/common.rb +0 -24
  240. data/lib/active_merchant/billing/integrations/paxum/helper.rb +0 -42
  241. data/lib/active_merchant/billing/integrations/paxum/notification.rb +0 -33
  242. data/lib/active_merchant/billing/integrations/pay_fast.rb +0 -70
  243. data/lib/active_merchant/billing/integrations/pay_fast/common.rb +0 -42
  244. data/lib/active_merchant/billing/integrations/pay_fast/helper.rb +0 -50
  245. data/lib/active_merchant/billing/integrations/pay_fast/notification.rb +0 -134
  246. data/lib/active_merchant/billing/integrations/pay_fast/return.rb +0 -10
  247. data/lib/active_merchant/billing/integrations/paydollar.rb +0 -59
  248. data/lib/active_merchant/billing/integrations/paydollar/helper.rb +0 -41
  249. data/lib/active_merchant/billing/integrations/paydollar/notification.rb +0 -64
  250. data/lib/active_merchant/billing/integrations/paydollar/return.rb +0 -15
  251. data/lib/active_merchant/billing/integrations/payflow_link.rb +0 -21
  252. data/lib/active_merchant/billing/integrations/payflow_link/helper.rb +0 -116
  253. data/lib/active_merchant/billing/integrations/payflow_link/notification.rb +0 -78
  254. data/lib/active_merchant/billing/integrations/paypal.rb +0 -39
  255. data/lib/active_merchant/billing/integrations/paypal/helper.rb +0 -119
  256. data/lib/active_merchant/billing/integrations/paypal/notification.rb +0 -227
  257. data/lib/active_merchant/billing/integrations/paypal/return.rb +0 -10
  258. data/lib/active_merchant/billing/integrations/paypal_payments_advanced.rb +0 -20
  259. data/lib/active_merchant/billing/integrations/paypal_payments_advanced/helper.rb +0 -15
  260. data/lib/active_merchant/billing/integrations/paysbuy.rb +0 -36
  261. data/lib/active_merchant/billing/integrations/paysbuy/helper.rb +0 -15
  262. data/lib/active_merchant/billing/integrations/paysbuy/notification.rb +0 -39
  263. data/lib/active_merchant/billing/integrations/payu_in.rb +0 -36
  264. data/lib/active_merchant/billing/integrations/payu_in/helper.rb +0 -76
  265. data/lib/active_merchant/billing/integrations/payu_in/notification.rb +0 -154
  266. data/lib/active_merchant/billing/integrations/payu_in/return.rb +0 -36
  267. data/lib/active_merchant/billing/integrations/payu_in_paisa.rb +0 -30
  268. data/lib/active_merchant/billing/integrations/payu_in_paisa/helper.rb +0 -19
  269. data/lib/active_merchant/billing/integrations/payu_in_paisa/notification.rb +0 -13
  270. data/lib/active_merchant/billing/integrations/payu_in_paisa/return.rb +0 -16
  271. data/lib/active_merchant/billing/integrations/platron.rb +0 -28
  272. data/lib/active_merchant/billing/integrations/platron/helper.rb +0 -32
  273. data/lib/active_merchant/billing/integrations/platron/notification.rb +0 -113
  274. data/lib/active_merchant/billing/integrations/pxpay.rb +0 -31
  275. data/lib/active_merchant/billing/integrations/pxpay/helper.rb +0 -113
  276. data/lib/active_merchant/billing/integrations/pxpay/notification.rb +0 -157
  277. data/lib/active_merchant/billing/integrations/pxpay/return.rb +0 -25
  278. data/lib/active_merchant/billing/integrations/quickpay.rb +0 -21
  279. data/lib/active_merchant/billing/integrations/quickpay/helper.rb +0 -96
  280. data/lib/active_merchant/billing/integrations/quickpay/notification.rb +0 -137
  281. data/lib/active_merchant/billing/integrations/rbkmoney.rb +0 -17
  282. data/lib/active_merchant/billing/integrations/rbkmoney/helper.rb +0 -23
  283. data/lib/active_merchant/billing/integrations/rbkmoney/notification.rb +0 -91
  284. data/lib/active_merchant/billing/integrations/return.rb +0 -42
  285. data/lib/active_merchant/billing/integrations/robokassa.rb +0 -49
  286. data/lib/active_merchant/billing/integrations/robokassa/common.rb +0 -19
  287. data/lib/active_merchant/billing/integrations/robokassa/helper.rb +0 -50
  288. data/lib/active_merchant/billing/integrations/robokassa/notification.rb +0 -55
  289. data/lib/active_merchant/billing/integrations/robokassa/return.rb +0 -17
  290. data/lib/active_merchant/billing/integrations/sage_pay_form.rb +0 -37
  291. data/lib/active_merchant/billing/integrations/sage_pay_form/encryption.rb +0 -33
  292. data/lib/active_merchant/billing/integrations/sage_pay_form/helper.rb +0 -136
  293. data/lib/active_merchant/billing/integrations/sage_pay_form/notification.rb +0 -210
  294. data/lib/active_merchant/billing/integrations/sage_pay_form/return.rb +0 -31
  295. data/lib/active_merchant/billing/integrations/two_checkout.rb +0 -44
  296. data/lib/active_merchant/billing/integrations/two_checkout/helper.rb +0 -107
  297. data/lib/active_merchant/billing/integrations/two_checkout/notification.rb +0 -171
  298. data/lib/active_merchant/billing/integrations/two_checkout/return.rb +0 -58
  299. data/lib/active_merchant/billing/integrations/universal.rb +0 -23
  300. data/lib/active_merchant/billing/integrations/universal/helper.rb +0 -76
  301. data/lib/active_merchant/billing/integrations/universal/notification.rb +0 -52
  302. data/lib/active_merchant/billing/integrations/universal/return.rb +0 -18
  303. data/lib/active_merchant/billing/integrations/valitor.rb +0 -33
  304. data/lib/active_merchant/billing/integrations/valitor/helper.rb +0 -86
  305. data/lib/active_merchant/billing/integrations/valitor/notification.rb +0 -13
  306. data/lib/active_merchant/billing/integrations/valitor/response_fields.rb +0 -97
  307. data/lib/active_merchant/billing/integrations/valitor/return.rb +0 -13
  308. data/lib/active_merchant/billing/integrations/verkkomaksut.rb +0 -20
  309. data/lib/active_merchant/billing/integrations/verkkomaksut/helper.rb +0 -88
  310. data/lib/active_merchant/billing/integrations/verkkomaksut/notification.rb +0 -59
  311. data/lib/active_merchant/billing/integrations/web_pay.rb +0 -45
  312. data/lib/active_merchant/billing/integrations/web_pay/common.rb +0 -50
  313. data/lib/active_merchant/billing/integrations/web_pay/helper.rb +0 -68
  314. data/lib/active_merchant/billing/integrations/web_pay/notification.rb +0 -51
  315. data/lib/active_merchant/billing/integrations/webmoney.rb +0 -43
  316. data/lib/active_merchant/billing/integrations/webmoney/common.rb +0 -17
  317. data/lib/active_merchant/billing/integrations/webmoney/helper.rb +0 -40
  318. data/lib/active_merchant/billing/integrations/webmoney/notification.rb +0 -47
  319. data/lib/active_merchant/billing/integrations/wirecard_checkout_page.rb +0 -39
  320. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/common.rb +0 -104
  321. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/helper.rb +0 -145
  322. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/notification.rb +0 -101
  323. data/lib/active_merchant/billing/integrations/wirecard_checkout_page/return.rb +0 -35
  324. data/lib/active_merchant/billing/integrations/world_pay.rb +0 -34
  325. data/lib/active_merchant/billing/integrations/world_pay/helper.rb +0 -101
  326. data/lib/active_merchant/billing/integrations/world_pay/notification.rb +0 -160
@@ -2,7 +2,6 @@ require 'json'
2
2
 
3
3
  module ActiveMerchant #:nodoc:
4
4
  module Billing #:nodoc:
5
-
6
5
  # For more information on Balanced visit https://www.balancedpayments.com
7
6
  # or visit #balanced on irc.freenode.net
8
7
  #
@@ -17,447 +16,207 @@ module ActiveMerchant #:nodoc:
17
16
  # 4. When you're ready to generate a production API key click the "Go
18
17
  # live" button on the Balanced dashboard and fill in your marketplace
19
18
  # details.
20
- #
21
- # ==== Overview
22
- #
23
- # Balanced provides a RESTful API, all entities within Balanced are
24
- # represented by their respective URIs, these are returned in the
25
- # `authorization` parameter of the Active Merchant Response object.
26
- #
27
- # All Response objects will contain a hash property called `params` which
28
- # holds the raw JSON dictionary returned by Balanced. You can find
29
- # properties about the operation performed and the object that represents
30
- # it within this hash.
31
- #
32
- # All operations within Balanced are tied to an account, as such, when you
33
- # perform an `authorization` or a `capture` with a new credit card you
34
- # must ensure you also pass the `:email` property within the `options`
35
- # parameter.
36
- #
37
- # For more details about Balanced's API visit:
38
- # https://www.balancedpayments.com/docs
39
- #
40
- # ==== Terminology & Transaction Flow
41
- #
42
- # * An `authorization` operation will return a Hold URI. An `authorization`
43
- # within Balanced is valid until the `expires_at` property. You can see the
44
- # exact date of the expiry on the Response object by inspecting the
45
- # property `response.params['expires_at']`. The resulting Hold may be
46
- # `capture`d or `void`ed at any time before the `expires_at` date for
47
- # any amount up to the full amount of the original `authorization`.
48
- # * A `capture` operation will return a Debit URI. You must pass the URI of
49
- # the previously performed `authorization`
50
- # * A `purchase` will create a Hold and Debit in a single operation and
51
- # return the URI of the resulting Debit.
52
- # * A `void` operation must be performed on an existing `authorization`
53
- # and will result in releasing the funds reserved by the
54
- # `authorization`.
55
- # * The `refund` operation must be performed on a previously captured
56
- # Debit URI. You may refund any fraction of the original amount of the
57
- # debit up to the original total.
58
- #
59
19
  class BalancedGateway < Gateway
60
- VERSION = '1.0.0'
20
+ VERSION = "2.0.0"
61
21
 
62
- TEST_URL = LIVE_URL = 'https://api.balancedpayments.com'
22
+ self.live_url = 'https://api.balancedpayments.com'
63
23
 
64
- # The countries the gateway supports merchants from as 2 digit ISO
65
- # country codes
66
24
  self.supported_countries = ['US']
67
25
  self.supported_cardtypes = [:visa, :master, :american_express, :discover]
68
26
  self.homepage_url = 'https://www.balancedpayments.com/'
69
27
  self.display_name = 'Balanced'
70
28
  self.money_format = :cents
71
29
 
72
- class Error < ActiveMerchant::ActiveMerchantError
73
- attr_reader :response
74
-
75
- def initialize(response, msg=nil)
76
- @response = response
77
- super(msg || response['description'])
78
- end
79
- end
80
-
81
- class CardDeclined < Error
82
- end
83
-
84
30
  # Creates a new BalancedGateway
85
31
  #
86
- # The gateway requires that a valid api_key be passed in the +options+
87
- # hash.
88
- #
89
32
  # ==== Options
90
33
  #
91
34
  # * <tt>:login</tt> -- The Balanced API Secret (REQUIRED)
92
35
  def initialize(options = {})
93
36
  requires!(options, :login)
94
37
  super
95
- initialize_marketplace(options[:marketplace] || load_marketplace)
96
38
  end
97
39
 
98
- # Performs an authorization (Hold in Balanced nonclementure), which
99
- # reserves the funds on the customer's credit card, but does not charge
100
- # the card. An authorization is valid until the `expires_at` field in
101
- # the params Hash passes. See `response.params['expires_at']`. The exact
102
- # amount of time until an authorization expires depends on the card
103
- # issuer.
104
- #
105
- # If you pass a previously tokenized `credit_card` URI the only other
106
- # parameter required is `money`. If you pass `credit_card` as a hash of
107
- # credit card information you must also pass `options` with a `:email`
108
- # entry.
109
- #
110
- # ==== Parameters
111
- #
112
- # * <tt>money</tt> -- The amount to be authorized as an Integer value in cents.
113
- # * <tt>credit_card</tt> -- A hash of credit card details for this
114
- # transaction or the URI of a card previously stored in Balanced.
115
- # * <tt>options</tt> -- A hash of optional parameters.
116
- #
117
- # ==== Options
118
- #
119
- # If you are passing a new credit card you must pass one of these two
120
- # parameters
121
- #
122
- # * <tt>email</tt> -- the email address of user associated with this
123
- # purchase.
124
- # * <tt>account_uri</tt> -- `account_uri` is the URI of an existing
125
- # Balanced account.
126
- def authorize(money, credit_card, options = {})
127
- if credit_card.respond_to?(:number)
128
- requires!(options, :email) unless options[:account_uri]
129
- end
130
-
40
+ def purchase(money, payment_method, options = {})
131
41
  post = {}
132
- post[:amount] = money
42
+ add_amount(post, money)
133
43
  post[:description] = options[:description]
134
44
  add_common_params(post, options)
135
45
 
136
- create_or_find_account(post, options)
137
- add_credit_card(post, credit_card, options)
138
- add_address(credit_card, options)
139
-
140
- create_transaction(:post, @holds_uri, post)
141
- rescue Error => ex
142
- failed_response(ex.response)
143
- end
144
-
145
- # Perform a purchase, which is an authorization and capture in a single
146
- # operation.
147
- #
148
- # ==== Parameters
149
- #
150
- # * <tt>money</tt> -- The amount to be purchased as an Integer value in cents.
151
- # * <tt>credit_card</tt> -- A hash of credit card details for this
152
- # transaction or the URI of a card previously stored in Balanced.
153
- # * <tt>options</tt> -- A hash of optional parameters.
154
- #
155
- # ==== Options
156
- #
157
- # If you are passing a new credit card you must pass one of these two
158
- # parameters
159
- #
160
- # * <tt>email</tt> -- the email address of user associated with this
161
- # purchase.
162
- # * <tt>account_uri</tt> -- `account_uri` is the URI of an existing
163
- # Balanced account.
164
- #
165
- # If you are passing a new card URI from balanced.js, you should pass
166
- # the customer's name
167
- #
168
- # * <tt>name</tt> -- the customer's name, to appear on the Account
169
- # on Balanced.
170
- def purchase(money, credit_card, options = {})
171
- if credit_card.respond_to?('number')
172
- requires!(options, :email) unless options[:account_uri]
46
+ MultiResponse.run do |r|
47
+ identifier = if(payment_method.respond_to?(:number))
48
+ r.process{store(payment_method, options)}
49
+ r.authorization
50
+ else
51
+ payment_method
52
+ end
53
+ r.process{commit("debits", "cards/#{card_identifier_from(identifier)}/debits", post)}
173
54
  end
55
+ end
174
56
 
57
+ def authorize(money, payment_method, options = {})
175
58
  post = {}
176
- post[:amount] = money
59
+ add_amount(post, money)
177
60
  post[:description] = options[:description]
178
61
  add_common_params(post, options)
179
62
 
180
- create_or_find_account(post, options)
181
- add_credit_card(post, credit_card, options)
182
- add_address(credit_card, options)
183
-
184
- create_transaction(:post, @debits_uri, post)
185
- rescue Error => ex
186
- failed_response(ex.response)
63
+ MultiResponse.run do |r|
64
+ identifier = if(payment_method.respond_to?(:number))
65
+ r.process{store(payment_method, options)}
66
+ r.authorization
67
+ else
68
+ payment_method
69
+ end
70
+ r.process{commit("card_holds", "cards/#{card_identifier_from(identifier)}/card_holds", post)}
71
+ end
187
72
  end
188
73
 
189
- # Captures the funds from an authorized transaction (Hold).
190
- #
191
- # ==== Parameters
192
- #
193
- # * <tt>money</tt> -- The amount to be captured as an Integer value in
194
- # cents. If omitted the full amount of the original authorization
195
- # transaction will be captured.
196
- # * <tt>authorization</tt> -- The uri of an authorization returned from
197
- # an authorize request.
198
- #
199
- # ==== Options
200
- #
201
- # * <tt>description</tt> -- A string that will be displayed on the
202
- # Balanced dashboard
203
- def capture(money, authorization, options = {})
74
+ def capture(money, identifier, options = {})
204
75
  post = {}
205
- post[:hold_uri] = authorization
206
- post[:amount] = money if money
76
+ add_amount(post, money)
207
77
  post[:description] = options[:description] if options[:description]
208
78
  add_common_params(post, options)
209
79
 
210
- create_transaction(:post, @debits_uri, post)
211
- rescue Error => ex
212
- failed_response(ex.response)
80
+ commit("debits", "card_holds/#{reference_identifier_from(identifier)}/debits", post)
213
81
  end
214
82
 
215
- # Void a previous authorization (Hold)
216
- #
217
- # ==== Parameters
218
- #
219
- # * <tt>authorization</tt> -- The uri of the authorization returned from
220
- # an `authorize` request.
221
- def void(authorization, options = {})
83
+ def void(identifier, options = {})
222
84
  post = {}
223
85
  post[:is_void] = true
224
86
  add_common_params(post, options)
225
87
 
226
- create_transaction(:put, authorization, post)
227
- rescue Error => ex
228
- failed_response(ex.response)
88
+ commit("card_holds", "card_holds/#{reference_identifier_from(identifier)}", post, :put)
229
89
  end
230
90
 
231
- # Refund a transaction.
232
- #
233
- # Returns the money debited from a card to the card from the
234
- # marketplace's escrow balance.
235
- #
236
- # ==== Parameters
237
- #
238
- # * <tt>debit_uri</tt> -- The uri of the original transaction against
239
- # which the refund is being issued.
240
- # * <tt>options</tt> -- A hash of parameters.
241
- #
242
- # ==== Options
243
- #
244
- # * <tt>`:amount`<tt> -- specify an amount if you want to perform a
245
- # partial refund. This value will default to the total amount of the
246
- # debit that has not been refunded so far.
247
- def refund(amount, debit_uri = "deprecated", options = {})
248
- if(debit_uri == "deprecated" || debit_uri.kind_of?(Hash))
249
- deprecated "Calling the refund method without an amount parameter is deprecated and will be removed in a future version."
250
- return refund(options[:amount], amount, options)
251
- end
252
-
253
- requires!(debit_uri)
91
+ def refund(money, identifier, options = {})
254
92
  post = {}
255
- post[:debit_uri] = debit_uri
256
- post[:amount] = amount
93
+ add_amount(post, money)
257
94
  post[:description] = options[:description]
258
95
  add_common_params(post, options)
259
- create_transaction(:post, @refunds_uri, post)
260
- rescue Error => ex
261
- failed_response(ex.response)
96
+
97
+ commit("refunds", "debits/#{reference_identifier_from(identifier)}/refunds", post)
262
98
  end
263
99
 
264
- # Stores a card and email address
265
- #
266
- # ==== Parameters
267
- #
268
- # * <tt>credit_card</tt> --
269
- def store(credit_card, options = {})
270
- requires!(options, :email)
100
+ def store(credit_card, options={})
271
101
  post = {}
272
- account_uri = create_or_find_account(post, options)
273
- if credit_card.respond_to? :number
274
- card_uri = add_credit_card(post, credit_card, options)
275
- else
276
- card_uri = associate_card_to_account(account_uri, credit_card)
277
- end
278
102
 
279
- is_test = false
280
- if @marketplace_uri
281
- is_test = (@marketplace_uri.index("TEST") ? true : false)
282
- end
103
+ post[:number] = credit_card.number
104
+ post[:expiration_month] = credit_card.month
105
+ post[:expiration_year] = credit_card.year
106
+ post[:cvv] = credit_card.verification_value if credit_card.verification_value?
107
+ post[:name] = credit_card.name if credit_card.name
283
108
 
284
- Response.new(true, "Card stored", {}, :test => is_test, :authorization => [card_uri, account_uri].compact.join(';'))
285
- rescue Error => ex
286
- failed_response(ex.response)
109
+ add_address(post, options)
110
+
111
+ commit("cards", "cards", post)
287
112
  end
288
113
 
289
114
  private
290
115
 
291
- # Load URIs for this marketplace by inspecting the marketplace object
292
- # returned from the uri. http://en.wikipedia.org/wiki/HATEOAS
293
- def load_marketplace
294
- response = http_request(:get, '/v1/marketplaces')
295
- if error?(response)
296
- raise Error.new(response, 'Invalid login credentials supplied')
116
+ def reference_identifier_from(identifier)
117
+ case identifier
118
+ when %r{\|}
119
+ uri = identifier.
120
+ split("|").
121
+ detect{|part| part.size > 0}
122
+ uri.split("/")[2]
123
+ when %r{\/}
124
+ identifier.split("/")[5]
125
+ else
126
+ identifier
297
127
  end
298
- response['items'][0]
299
128
  end
300
129
 
301
- def initialize_marketplace(marketplace)
302
- @marketplace_uri = marketplace['uri']
303
- @holds_uri = marketplace['holds_uri']
304
- @debits_uri = marketplace['debits_uri']
305
- @cards_uri = marketplace['cards_uri']
306
- @accounts_uri = marketplace['accounts_uri']
307
- @refunds_uri = marketplace['refunds_uri']
130
+ def card_identifier_from(identifier)
131
+ identifier.split("/").last
308
132
  end
309
133
 
310
- def create_or_find_account(post, options)
311
- account_uri = nil
312
-
313
- if options.has_key? :account_uri
314
- account_uri = options[:account_uri]
315
- end
316
-
317
- if account_uri == nil
318
- post[:name] = options[:name] if options[:name]
319
- post[:email_address] = options[:email]
320
- post[:meta] = options[:meta] if options[:meta]
321
-
322
- # create an account
323
- response = http_request(:post, @accounts_uri, post)
324
-
325
- if response.has_key? 'uri'
326
- account_uri = response['uri']
327
- elsif error?(response)
328
- # lookup account from Balanced, account_uri should be in the
329
- # exception in a dictionary called extras
330
- account_uri = response['extras']['account_uri']
331
- raise Error.new(response) unless account_uri
332
- end
333
- end
334
-
335
- post[:account_uri] = account_uri
336
-
337
- account_uri
134
+ def add_amount(post, money)
135
+ post[:amount] = amount(money) if money
338
136
  end
339
137
 
340
- def add_address(credit_card, options)
341
- return unless credit_card.kind_of?(Hash)
342
- if address = options[:billing_address] || options[:address]
343
- credit_card[:street_address] = address[:address1] if address[:address1]
344
- credit_card[:street_address] += ' ' + address[:address2] if address[:address2]
345
- credit_card[:postal_code] = address[:zip] if address[:zip]
346
- credit_card[:country] = address[:country] if address[:country]
138
+ def add_address(post, options)
139
+ address = (options[:billing_address] || options[:address])
140
+ if(address && address[:zip].present?)
141
+ post[:address] = {}
142
+ post[:address][:line1] = address[:address1] if address[:address1]
143
+ post[:address][:line2] = address[:address2] if address[:address2]
144
+ post[:address][:city] = address[:city] if address[:city]
145
+ post[:address][:state] = address[:state] if address[:state]
146
+ post[:address][:postal_code] = address[:zip] if address[:zip]
147
+ post[:address][:country_code] = address[:country] if address[:country]
347
148
  end
348
149
  end
349
150
 
350
151
  def add_common_params(post, options)
351
- common_params = [
352
- :appears_on_statement_as,
353
- :on_behalf_of_uri,
354
- :meta
355
- ]
356
- post.update(options.select{|key, _| common_params.include?(key)})
357
- end
358
-
359
- def add_credit_card(post, credit_card, options)
360
- if credit_card.respond_to? :number
361
- card = {}
362
- card[:card_number] = credit_card.number
363
- card[:expiration_month] = credit_card.month
364
- card[:expiration_year] = credit_card.year
365
- card[:security_code] = credit_card.verification_value if credit_card.verification_value?
366
- card[:name] = credit_card.name if credit_card.name
367
-
368
- add_address(card, options)
369
-
370
- response = http_request(:post, @cards_uri, card)
371
- if error?(response)
372
- raise CardDeclined, response
373
- end
374
- card_uri = response['uri']
375
-
376
- associate_card_to_account(post[:account_uri], card_uri)
377
-
378
- post[:card_uri] = card_uri
379
- elsif credit_card.kind_of?(String)
380
- associate_card_to_account(post[:account_uri], credit_card) unless options[:account_uri]
381
- post[:card_uri] = credit_card
382
- end
383
-
384
- post[:card_uri]
152
+ post[:appears_on_statement_as] = options[:appears_on_statement_as]
153
+ post[:on_behalf_of_uri] = options[:on_behalf_of_uri]
154
+ post[:meta] = options[:meta]
385
155
  end
386
156
 
387
- def associate_card_to_account(account_uri, card_uri)
388
- http_request(:put, account_uri, :card_uri => card_uri)
389
- end
390
-
391
- def http_request(method, url, parameters={}, meta={})
392
- begin
393
- if method == :get
394
- raw_response = ssl_get(LIVE_URL + url, headers(meta))
395
- else
396
- raw_response = ssl_request(method,
397
- LIVE_URL + url,
398
- post_data(parameters),
399
- headers(meta))
400
- end
401
- parse(raw_response)
157
+ def commit(entity_name, path, post, method=:post)
158
+ raw_response = begin
159
+ parse(ssl_request(
160
+ method,
161
+ live_url + "/#{path}",
162
+ post_data(post),
163
+ headers
164
+ ))
402
165
  rescue ResponseError => e
403
- raw_response = e.response.body
404
- response_error(raw_response)
405
- rescue JSON::ParserError
406
- json_error(raw_response)
166
+ raise unless(e.response.code.to_s =~ /4\d\d/)
167
+ parse(e.response.body)
407
168
  end
408
- end
409
-
410
- def create_transaction(method, url, parameters, meta={})
411
- response = http_request(method, url, parameters, meta)
412
- success = !error?(response)
413
169
 
414
- Response.new(success,
415
- (success ? "Transaction approved" : response["description"]),
416
- response,
417
- :test => (@marketplace_uri.index("TEST") ? true : false),
418
- :authorization => response["uri"]
170
+ Response.new(
171
+ success_from(entity_name, raw_response),
172
+ message_from(raw_response),
173
+ raw_response,
174
+ authorization: authorization_from(entity_name, raw_response),
175
+ test: test?,
419
176
  )
420
177
  end
421
178
 
422
- def failed_response(response)
423
- is_test = false
424
- if @marketplace_uri
425
- is_test = (@marketplace_uri.index("TEST") ? true : false)
179
+ def success_from(entity_name, raw_response)
180
+ entity = (raw_response[entity_name] || []).first
181
+ if(!entity)
182
+ false
183
+ elsif((entity_name == "refunds") && entity.include?("status"))
184
+ %w(succeeded pending).include?(entity["status"])
185
+ elsif(entity.include?("status"))
186
+ (entity["status"] == "succeeded")
187
+ elsif(entity_name == "cards")
188
+ !!entity["id"]
189
+ else
190
+ false
426
191
  end
427
-
428
- Response.new(false,
429
- response["description"],
430
- response,
431
- :test => is_test
432
- )
433
192
  end
434
193
 
435
- def parse(body)
436
- JSON.parse(body)
194
+ def message_from(raw_response)
195
+ if(raw_response["errors"])
196
+ error = raw_response["errors"].first
197
+ (error["additional"] || error["message"] || error["description"])
198
+ else
199
+ "Success"
200
+ end
437
201
  end
438
202
 
439
- def response_error(raw_response)
440
- begin
441
- parse(raw_response)
442
- rescue JSON::ParserError
443
- json_error(raw_response)
444
- end
203
+ def authorization_from(entity_name, raw_response)
204
+ entity = (raw_response[entity_name] || []).first
205
+ (entity && entity["id"])
445
206
  end
446
207
 
447
- def json_error(raw_response)
448
- msg = 'Invalid response received from the Balanced API. Please contact support@balancedpayments.com if you continue to receive this message.'
449
- msg += " (The raw response returned by the API was #{raw_response.inspect})"
208
+ def parse(body)
209
+ JSON.parse(body)
210
+ rescue JSON::ParserError
211
+ message = 'Invalid response received from the Balanced API. Please contact support@balancedpayments.com if you continue to receive this message.'
212
+ message += " (The raw response returned by the API was #{raw_response.inspect})"
450
213
  {
451
- "error" => {
452
- "message" => msg
453
- }
214
+ "errors" => [{
215
+ "message" => message
216
+ }]
454
217
  }
455
218
  end
456
219
 
457
- def error?(response)
458
- response.key?('status_code')
459
- end
460
-
461
220
  def post_data(params)
462
221
  return nil unless params
463
222
 
@@ -475,19 +234,20 @@ module ActiveMerchant #:nodoc:
475
234
  end.compact.join("&")
476
235
  end
477
236
 
478
- def headers(meta={})
479
- @@ua ||= JSON.dump({
480
- :bindings_version => ActiveMerchant::VERSION,
481
- :lang => 'ruby',
482
- :lang_version => "#{RUBY_VERSION} p#{RUBY_PATCHLEVEL} (#{RUBY_RELEASE_DATE})",
483
- :lib_version => BalancedGateway::VERSION,
484
- :platform => RUBY_PLATFORM,
485
- :publisher => 'active_merchant'
486
- })
237
+ def headers
238
+ @@ua ||= JSON.dump(
239
+ bindings_version: ActiveMerchant::VERSION,
240
+ lang: 'ruby',
241
+ lang_version: "#{RUBY_VERSION} p#{RUBY_PATCHLEVEL} (#{RUBY_RELEASE_DATE})",
242
+ lib_version: BalancedGateway::VERSION,
243
+ platform: RUBY_PLATFORM,
244
+ publisher: 'active_merchant'
245
+ )
487
246
 
488
247
  {
489
248
  "Authorization" => "Basic " + Base64.encode64(@options[:login].to_s + ":").strip,
490
- "User-Agent" => "Balanced/v1 ActiveMerchantBindings/#{ActiveMerchant::VERSION}",
249
+ "User-Agent" => "Balanced/v1.1 ActiveMerchantBindings/#{ActiveMerchant::VERSION}",
250
+ "Accept" => "application/vnd.api+json;revision=1.1",
491
251
  "X-Balanced-User-Agent" => @@ua,
492
252
  }
493
253
  end