Skip to content

Commit 4fb5225

Browse files
Allow outSum to be number or string
1 parent 9ac237c commit 4fb5225

File tree

3 files changed

+55
-2
lines changed

3 files changed

+55
-2
lines changed

src/Robokassa.spec.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,54 @@ describe('#Robokassa', () => {
7676
);
7777
});
7878

79+
it('should generate url without IsTest', () => {
80+
const testRobokassa = new Robokassa({
81+
merchantLogin: 'my_merchant_login',
82+
password1: 'my_password1',
83+
password2: 'my_password2',
84+
isTest: false,
85+
});
86+
const result = testRobokassa.generatePaymentUrl({
87+
description: 'Товар 1',
88+
invId: 42,
89+
outSum: '100.00',
90+
});
91+
expect(result).toEqual(
92+
'https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=my_merchant_login&Description=%D0%A2%D0%BE%D0%B2%D0%B0%D1%80%201&InvId=42&OutSum=100.00&SignatureValue=7642fdc174d0aabe022d992afd59f276',
93+
);
94+
});
95+
96+
it('should format outSum to fixed string when number type is passed', () => {
97+
const testRobokassa = new Robokassa({
98+
merchantLogin: 'my_merchant_login',
99+
password1: 'my_password1',
100+
password2: 'my_password2',
101+
});
102+
const result = testRobokassa.generatePaymentUrl({
103+
description: 'Товар 1',
104+
invId: 42,
105+
outSum: 100,
106+
});
107+
expect(result).toEqual(
108+
'https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=my_merchant_login&Description=%D0%A2%D0%BE%D0%B2%D0%B0%D1%80%201&InvId=42&OutSum=100.00&SignatureValue=7642fdc174d0aabe022d992afd59f276',
109+
);
110+
});
111+
112+
it('should pass InvId=0 when invId is not specified', () => {
113+
const testRobokassa = new Robokassa({
114+
merchantLogin: 'my_merchant_login',
115+
password1: 'my_password1',
116+
password2: 'my_password2',
117+
});
118+
const result = testRobokassa.generatePaymentUrl({
119+
description: 'Товар 1',
120+
outSum: '100.00',
121+
});
122+
expect(result).toEqual(
123+
'https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=my_merchant_login&Description=%D0%A2%D0%BE%D0%B2%D0%B0%D1%80%201&OutSum=100.00&InvId=0&SignatureValue=cd9e54da801539e5bb4d6d371f6fef3f',
124+
);
125+
});
126+
79127
it('should generate url with maximum parameters', () => {
80128
const result = robokassa.generatePaymentUrl({
81129
description: 'Услуги по разработке',

src/Robokassa.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ export class Robokassa {
2222
order.invId = 0;
2323
}
2424

25+
if (typeof order.outSum === 'number') {
26+
order.outSum = order.outSum.toFixed(2);
27+
}
28+
2529
const { userParameters, receipt, ...usualOrderParameters } = order;
2630

2731
const orderWithCapitalizedKeys = Object.fromEntries(

src/types/IRobokassaOrder.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@ export interface IRobokassaOrder {
1212

1313
/**
1414
Требуемая к получению сумма (буквально — стоимость заказа, сделанного клиентом).
15-
Формат представления — число, разделитель — точка, например: 123.45.
15+
Формат представления строки — число, разделитель — точка, например: 123.45.
16+
В случае передачи типа number, будет выполнено преобразование к строке с разделителем.
1617
Сумма должна быть указана в рублях.
1718
1819
Но, если стоимость товаров у Вас на сайте указана, например, в долларах, то при выставлении счёта к оплате Вам необходимо указывать уже пересчитанную сумму из долларов в рубли.
1920
См. необязательный параметр OutSumCurrency.
2021
*/
21-
outSum: string;
22+
outSum: string | number;
2223

2324
/**
2425
Способ указать валюту, в которой магазин выставляет стоимость заказа.

0 commit comments

Comments
 (0)