Wiki source code of Payment Session
Last modified by Asbjørn Ulsberg on 2018/07/05 12:48
1 | An implementer must first perform a {{code}}POST{{/code}} to this resource to initate the payment with an HTTP POST from your backend with payment info and your access token. The response from the POST will contain a payment session URL. Persist the {{code}}paymentSessionUrl{{/code}} alongside the data representing the initial POST, be it a shopping cart, an order, or similar. |
2 | |
3 | The {{code}}paymentSessionUrl{{/code}} returned from the {{code}}POST{{/code}} is the base URL to request all other resources related to the [[Payment>>Sandbox.payex-checkout-v1.Introduction.Payment.WebHome]]. |
4 | |
5 | |
6 | == Create Payment Session == |
7 | |
8 | To create a Payment Session, you simply perform an HTTP {{code}}POST{{/code}} request with a Payment Session JSON payload as documented below to the Payment Session URL as discovered in the Home Resource. |
9 | |
10 | This resource requires authentication as mentioned in the [[introduction>>Sandbox.payex-checkout-v1.Introduction.WebHome||anchor="HAuthentication"]]. |
11 | |
12 | === Properties === |
13 | |
14 | |(% style="text-align:right" %)**Property** |=Description |
15 | |(% style="text-align:right" %){{code}}amount{{/code}} |
16 | (% style="color:LightGrey" %)number |
17 | (required)|((( |
18 | The total amount of the payment (included vat and shipping). |
19 | |
20 | The amount will be verified against the amount sent in from your frontend. |
21 | ))) |
22 | |(% style="text-align:right" %){{code}}vatAmount{{/code}} |
23 | (% style="color:LightGrey" %)number |
24 | (optional to vatRate)|((( |
25 | The vat amount of the the payment. |
26 | |
27 | The vat amount will be verified against the vat amount sent in from your frontend |
28 | ))) |
29 | |(% style="text-align:right" %){{code}}vatRate{{/code}} |
30 | (% style="color:LightGrey" %)number |
31 | (optional to vatAmount)|((( |
32 | The vat rate of the the payment. |
33 | |
34 | The vat rate will be verified against the vat amounts sent in from your frontend. The rate supports mixed vat rates in the price list, where the final vatRate is calculated rather than a fixed/exact rate. If both vatAmount and vatRate is given, the price is calucated on the vatRate instead of using the vatAmount. The vatRate is a input variable only, where response returns a calculated vatAmount. |
35 | ))) |
36 | |(% style="text-align:right" %)((( |
37 | {{code}}currency{{/code}} |
38 | (% style="color:LightGrey" %)string |
39 | (required) |
40 | )))|((( |
41 | The currency of the payment. |
42 | |
43 | The following currencies is supported by PayEx Checkout as of now: "NOK" & "SEK". |
44 | ))) |
45 | |(% style="text-align:right" %){{code}}hosts{{/code}} |
46 | (% style="color:LightGrey" %)string[] |
47 | (optional)|((( |
48 | The host name(s) of the web site that includes the PayEx Checkout JavaScript and holds the button that PayEx Checkout will be initialized from. The host name(s) will be used by PayEx Checkout to verify the host it is initialized from, so unauthorized hosts won’t be able to open PayEx Checkout on behalf of other web sites. |
49 | ))) |
50 | |(% style="text-align:right" %){{code}}callbackUrl{{/code}} |
51 | (% style="color:LightGrey" %)string |
52 | (required)|The URL you want PayEx to perform HTTP {{code}}POST{{/code}} requests against (called callbacks) to when a Payment changes status. This URL **should** be unique per Payment Session and coupled to the order, shopping cart, or similar that you want to collect money for with PayEx Checkout. |
53 | |(% style="text-align:right" %){{code}}reference{{/code}} |
54 | (% style="color:LightGrey" %)string |
55 | (required)|The reference is a string that identifies the order, shopping cart or similar that you want to collect money for with PayEx Checkout. Must match the regular expression {{code}}^\w*${{/code}} and be no longer than 40 characters. |
56 | |(% style="text-align:right" %)((( |
57 | {{code}}culture{{/code}} |
58 | (% style="color:LightGrey" %)string |
59 | (optional) |
60 | )))|The culture you want PayEx Checkout to be presented in. Valid cultures as of now: {{code language="JavaScript"}}"nb-NO"{{/code}}, {{code language="JavaScript"}}"sv-SE"{{/code}} and {{code language="JavaScript"}}"en-US"{{/code}}. If no culture is specified, the culture will default to {{code language="JavaScript"}}"en-US"{{/code}}. It is usually best to set this to the same culture as that which the user has in the web page (web shop or similar) that initiates the PayEx Checkout user flow. |
61 | |(% style="text-align:right" %){{code}}acquire{{/code}} |
62 | (% style="color:LightGrey" %)array |
63 | (optional) |((( |
64 | This property can be set to an array of fields that you want us to acquire for you during the PayEx Checkout user flow. This information is returned to the merchant after the Payment has been authorised. |
65 | |
66 | The following parameters are valid: {{code language="JavaScript"}}["email", "mobilePhoneNumber", "shippingAddress"]{{/code}}. |
67 | ))) |
68 | |(% style="text-align:right" %){{code}}payer{{/code}} |
69 | (% style="color:LightGrey" %)object |
70 | (optional) |((( |
71 | This property can be set so that PayEx Checkout in the future can pre-populate the email address and mobile phone number if the identity of the payer is known. As of now the data is not pre-populated in the frontend. |
72 | |
73 | {{code language="json"}} |
74 | { |
75 | "email": "<emailAddress>", |
76 | "mobilePhoneNumber": "<mobilePhoneNumber>" |
77 | } |
78 | {{/code}} |
79 | ))) |
80 | |(% style="text-align:right" %){{code}}fees{{/code}}((( |
81 | (% style="color:LightGrey" %)object |
82 | (optional) |
83 | )))|((( |
84 | This property can be set so that PayEx Checkout can add a fee depending on which payment method the user chooses during the PayEx Checkout user flow. |
85 | |
86 | {{code language="json"}} |
87 | { |
88 | "invoice": { |
89 | "amount": 19.50, |
90 | "vatAmount": 3.90, |
91 | "description": "Invoice fee" |
92 | } |
93 | } |
94 | {{/code}} |
95 | ))) |
96 | |
97 | == Example == |
98 | |
99 | === Request === |
100 | |
101 | {{code language="JavaScript"}} |
102 | POST https://api.payex.com/psps/checkout/payment-sessions/ HTTP/1.1 |
103 | Content-Type: application/json |
104 | Authorization: Bearer merchantToken== |
105 | |
106 | { |
107 | "amount": 199.50, |
108 | "vatAmount": 39.90, |
109 | "vatRate": 25, |
110 | "currency": "NOK", |
111 | "callbackUrl": "https://merchant.api/callback", |
112 | "reference": "merchant-order-123", |
113 | "acquire": ["email", "mobilePhoneNumber", "shippingAddress"], |
114 | "culture": "nb-NO", |
115 | "hosts": ["https://merchant.com/"], |
116 | "payer": { |
117 | "email": "payer@example.com", |
118 | "mobilePhoneNumber": "+4712345678" |
119 | }, |
120 | "fees" : { |
121 | "invoice": { |
122 | "amount": 19.50, |
123 | "vatAmount": 3.90, |
124 | "description": "Invoice fee" |
125 | } |
126 | } |
127 | } |
128 | |
129 | {{/code}} |
130 | |
131 | === Response === |
132 | |
133 | {{code language="JavaScript"}} |
134 | HTTP/1.1 201 Created |
135 | Content-Type: application/json |
136 | Location: https://api.payex.com/psp/checkout/payment-sessions/123-456-789 |
137 | |
138 | { |
139 | "id": "https://api.payex.com/psp/checkout/payment-sessions/123-456-789", |
140 | "amount": 199.50, |
141 | "vatAmount": 39.90, |
142 | "currency": "NOK", |
143 | "callbackUrl": "https://merchant.api/callback", |
144 | "reference": "merchant-order-123", |
145 | "acquire": ["email", "mobilePhoneNumber", "shippingAddress"], |
146 | "culture": "nb-NO", |
147 | "fees" : { |
148 | "invoice": { |
149 | "amount": 19.50, |
150 | "vatAmount": 3.90, |
151 | "description": "Invoice fee" |
152 | } |
153 | } |
154 | } |
155 | |
156 | {{/code}} |
157 | |
158 | A successful request will respond with the HTTP status code {{code}}201 Created{{/code}}. Any other status code can be seen as a failure and a description of how to handle it can be found in the [[Problems section>>doc:ecommerce.PayEx Checkout.Problems.WebHome]]. |
159 | |
160 | Remember to persist the {{code}}Location{{/code}} header or value of the {{code}}id{{/code}} property in the response alongside the order, shopping cart or similar for which the Payment Session was created. |
161 | |
162 | = Retrieve Payment Session = |
163 | |
164 | To retrieve a Payment Session, just perform an HTTP {{code}}GET{{/code}} request to the URL as returned in the response documented above. Within the Payment Session resource, you can discover the URL of the [[Payment>>ecommerce.PayEx Checkout.Payment]] or [[Payer>>ecommerce.PayEx Checkout.Payer]]. |
165 | |
166 | == Example == |
167 | |
168 | === Request === |
169 | |
170 | {{code language="JavaScript"}} |
171 | GET https://api.payex.com/psp/checkout/payment-sessions/123-456-789 HTTP/1.1 |
172 | Accept: application/json |
173 | Authorization: Bearer merchantToken== |
174 | {{/code}} |
175 | |
176 | === Response === |
177 | |
178 | {{code language="JavaScript"}} |
179 | HTTP/1.1 200 OK |
180 | Content-Type: application/json |
181 | |
182 | { |
183 | "id": "https://api.payex.com/psp/checkout/payment-sessions/123-456-789", |
184 | "amount": 199.50, |
185 | "vatAmount": 39.90, |
186 | "currency": "NOK", |
187 | "callbackUrl": "https://merchant.api/callback", |
188 | "reference": "merchant-order-123", |
189 | "acquire": ["email", "mobilePhoneNumber", "shippingAddress"], |
190 | "culture": "nb-NO", |
191 | "fees": { |
192 | "invoice": { |
193 | "amount": 19.50, |
194 | "vatAmount": 3.90, |
195 | "description": "Invoice fee" |
196 | } |
197 | }, |
198 | "addressee": { |
199 | "name": "Olivia Nyhuus", |
200 | "email": "olivia.nyhuus@example.com", |
201 | "mobilePhoneNumber": "004791234567", |
202 | "shippingAddress": { |
203 | "city": "Oslo", |
204 | "countryCode": "NO", |
205 | "streetAddress": "Stålverkskroken, 4", |
206 | "zipCode": "0661" |
207 | } |
208 | }, |
209 | "payment": "https://api.payex.com/psp/payment/credit-card/984-223-836" |
210 | } |
211 | {{/code}} |
212 | |
213 | = Problems = |
214 | |
215 | If a request fails, its response will have a status code between 400 and 599. The HTTP body of the response will also be in the form of an {{code}}application/problem+json{{/code}} ([[RFC 7807>>https://tools.ietf.org/html/rfc7807]]), explaining in detail why the request failed and which, if any, actions you can take to remedy the problem. You can [[read more about problems here>>doc:Sandbox.payex-checkout-v1.Introduction.Problems.WebHome]]. |