mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 18:17:13 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import http from "k6/http";
 | |
| import { sleep, check } from "k6";
 | |
| import { Counter } from "k6/metrics";
 | |
| import { setup_merchant_apikey } from "./helper/setup.js";
 | |
| import { random_string } from "./helper/misc.js";
 | |
| import { readBaseline, storeResult } from "./helper/compare-result.js";
 | |
| 
 | |
| export const requests = new Counter("http_reqs");
 | |
| 
 | |
| const baseline = readBaseline("payment-create-and-confirm");
 | |
| 
 | |
| export const options = {
 | |
|     stages: [
 | |
|         { duration: "10s", target: 25 },        // ramp up users to 25 in 10 seconds
 | |
|         { duration: "10s", target: 25 },        // maintain 25 users for 10 seconds
 | |
|         { duration: "10s", target: 0 }          // ramp down to 0 users in 10 seconds
 | |
|     ],
 | |
|     thresholds: {
 | |
|         'http_req_duration': ['p(90) < 500'],   // 90% of requests must finish within 500ms.
 | |
|     },
 | |
| };
 | |
| 
 | |
| export function setup() {
 | |
|     return setup_merchant_apikey();
 | |
| }
 | |
| 
 | |
| export default function(data) {
 | |
|     const create_payment_payload = {
 | |
|         "amount": 6540,
 | |
|         "currency": "USD",
 | |
|         "confirm": false,
 | |
|         "capture_method": "automatic",
 | |
|         "capture_on": "2022-09-10T10:11:12Z",
 | |
|         "amount_to_capture": 6540,
 | |
|         "customer_id": random_string(),
 | |
|         "description": "Its my first payment request",
 | |
|         "return_url": "http://example.com/payments",
 | |
|         "authentication_type": "three_ds",
 | |
|         "payment_method": "card",
 | |
|         "statement_descriptor_name": "Juspay",
 | |
|         "statement_descriptor_suffix": "Router"
 | |
|     };
 | |
|     let create_payment_res = http.post("http://router-server:8080/payments", JSON.stringify(create_payment_payload), {
 | |
|         "headers": {
 | |
|             "Content-Type": "application/json",
 | |
|             "api-key" : data.api_key
 | |
|         },
 | |
|     });
 | |
|     check(create_payment_res, {
 | |
|         "create payment status 200": (r) => r.status === 200,
 | |
|     });
 | |
|     const payment_id = create_payment_res.json().payment_id;
 | |
|     const confirm_payment_payload = {
 | |
|         "return_url": "http://example.com/payments",
 | |
|         "setup_future_usage": "off_session",
 | |
|         "authentication_type": "no_three_ds",
 | |
|         "payment_method": "card",
 | |
|         "payment_method_data": {
 | |
|             "card": {
 | |
|                 "card_number": "4242424242424242",
 | |
|                 "card_exp_month": "10",
 | |
|                 "card_exp_year": "35",
 | |
|                 "card_holder_name": "John Doe",
 | |
|                 "card_cvc": "123"
 | |
|             }
 | |
|         }
 | |
|     };
 | |
|     let confirm_payment_res = http.post(`http://router-server:8080/payments/${payment_id}/confirm`, JSON.stringify(confirm_payment_payload), {
 | |
|         "headers": {
 | |
|             "Content-Type": "application/json",
 | |
|             "api-key" : data.api_key
 | |
|         },
 | |
|     });
 | |
|     check(confirm_payment_res, {
 | |
|         "confirm payment status 200": (r) => r.status === 200,
 | |
|     });
 | |
| };
 | |
| 
 | |
| export function handleSummary(data) {
 | |
|     return storeResult("payment-create-and-confirm", baseline, data)
 | |
| }
 | 
