Subversion Repositories SmartDukaan

Rev

Rev 34869 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 34869 Rev 34872
Line 16... Line 16...
16
import java.util.Map;
16
import java.util.Map;
17
 
17
 
18
@Component
18
@Component
19
public class RazorpayXClient {
19
public class RazorpayXClient {
20
 
20
 
21
    private static final Logger LOGGER = LogManager.getLogger(RecordingService.class);
21
    private static final Logger LOGGER = LogManager.getLogger(RazorpayXClient.class);
22
 
22
 
23
    @Value("${razorpay.x.account.keyId}")
23
    @Value("${razorpay.x.account.keyId}")
24
    private String API_KEY;
24
    private String API_KEY;
25
 
25
 
26
    @Value("${razorpay.x.account.keySecret}")
26
    @Value("${razorpay.x.account.keySecret}")
Line 33... Line 33...
33
    private String RAZORPAYX_ACCOUNT;
33
    private String RAZORPAYX_ACCOUNT;
34
 
34
 
35
    @Autowired
35
    @Autowired
36
    private RestClient restClient; // same utility you used for Knowlarity
36
    private RestClient restClient; // same utility you used for Knowlarity
37
 
37
 
38
    public String createPayout(String fundAccountId, Double amount,String idempotencyKey, String currency) throws Exception {
38
    public String createPayoutRaw(String fundAccountId, Double amount, String idempotencyKey, String currency) throws Exception {
39
        JSONObject payload = new JSONObject();
39
        JSONObject payload = new JSONObject();
40
        payload.put("account_number", RAZORPAYX_ACCOUNT);   // RazorpayX virtual account
40
        payload.put("account_number", RAZORPAYX_ACCOUNT);
41
        payload.put("fund_account_id", fundAccountId);      // partner fund account id
41
        payload.put("fund_account_id", fundAccountId);
42
        payload.put("amount", (int) (amount * 100));         // amount in paise
42
        payload.put("amount", (int) (amount * 100));
43
        payload.put("currency", currency);
43
        payload.put("currency", currency);
44
        payload.put("mode", "IMPS");                        // or NEFT, UPI
44
        payload.put("mode", "IMPS");
45
        payload.put("purpose", "payout");
45
        payload.put("purpose", "payout");
46
        payload.put("queue_if_low_balance", true);
46
        payload.put("queue_if_low_balance", true);
47
 
47
 
48
        try {
48
        try {
49
            Map<String, String> headers = getAuthHeaders();
49
            Map<String, String> headers = getAuthHeaders();
50
            headers.put("X-Payout-Idempotency", idempotencyKey);
50
            headers.put("X-Payout-Idempotency", idempotencyKey);
51
            LOGGER.info("Sending RazorpayX payout request: {}", payload);
51
            LOGGER.info("Sending RazorpayX payout request: {}", payload);
52
            String url = BASE_URL + "/payouts";
52
            String url = BASE_URL + "/payouts";
53
            String response = restClient.post(url, payload.toString(), headers);
53
            return restClient.post(url, payload.toString(), headers);
54
            LOGGER.info("RazorpayX payout response: {}", response);
-
 
55
 
-
 
56
            JSONObject json = new JSONObject(response);
-
 
57
            return json.getString("id"); // payoutId
-
 
58
        } catch (Exception e) {
54
        } catch (Exception e) {
59
            LOGGER.error("Failed to create payout", e);
55
            LOGGER.error("Failed to create payout", e);
60
            throw e;
56
            throw e;
61
        }
57
        }
62
    }
58
    }
63
 
59
 
-
 
60
 
64
    public JSONObject fetchPayoutStatus(String payoutId) throws Exception {
61
    public JSONObject fetchPayoutStatus(String payoutId) throws Exception {
65
        String url = BASE_URL + "/payouts/" + payoutId;
62
        String url = BASE_URL + "/payouts/" + payoutId;
66
        String response = restClient.get(url,null, getAuthHeaders());
63
        String response = restClient.get(url,null, getAuthHeaders());
67
 
64
 
68
        return new JSONObject(response);
65
        return new JSONObject(response);