|
@@ -14,9 +14,10 @@ const PAY_URL = '/api/v3/bra/createCollectingOrder';
|
|
|
const QUERY_URL = '/api/v3/bra/query/collectingOrder'
|
|
|
const BALANCE_URL = '/api/v3/bra/query/balance'
|
|
|
const BANK_URL = '/api/v3/bra/query/bank';
|
|
|
-const WITHDRAW_URL = '/api/v3/bra/pix/createTransferOrder';
|
|
|
+const WITHDRAW_URL = '/api/v3/bra/createTransferOrder';
|
|
|
|
|
|
const NOTIFY_HOST = `http://157.175.73.225/api/admin/dj/open/hambit/bra/notifyOrder`;
|
|
|
+const WITHDRAW_NOTIFY_HOST = `http://157.175.73.225/api/admin/dj/open/hambit/bra/notifyWithdraw`;
|
|
|
|
|
|
const CHANNEL_TYPE = "PIX";
|
|
|
|
|
@@ -125,7 +126,7 @@ export class HambitBraService extends BaseService {
|
|
|
throw new Error('order no success');
|
|
|
}
|
|
|
return {
|
|
|
- date: new Date(1690429623000),
|
|
|
+ date: new Date(),
|
|
|
orderNo: payload.externalOrderId,
|
|
|
traceNo: payload.orderId,
|
|
|
};
|
|
@@ -199,13 +200,15 @@ export class HambitBraService extends BaseService {
|
|
|
|
|
|
async withdraw(payload) {
|
|
|
const param = {
|
|
|
- currencyAmount: payload.amount.toFixed(2),
|
|
|
+ currencyAmount: (+payload.amount).toFixed(2),
|
|
|
channelType: CHANNEL_TYPE,
|
|
|
externalOrderId: payload.orderNo,
|
|
|
personIdType: payload.personIdType,
|
|
|
personId: payload.personId,
|
|
|
personName: payload.personName,
|
|
|
- accountType: payload.bankCode
|
|
|
+ accountType: payload.bankCode,
|
|
|
+ accountId: payload.accountNo,
|
|
|
+ notifyUrl: WITHDRAW_NOTIFY_HOST
|
|
|
};
|
|
|
const timestamp = +moment();
|
|
|
const nonce = uuidv4();
|
|
@@ -224,15 +227,45 @@ export class HambitBraService extends BaseService {
|
|
|
'sign': sign
|
|
|
}
|
|
|
});
|
|
|
- this.logger.info('下单接口返回', param, JSON.stringify(res.data));
|
|
|
+ this.logger.info('代付接口返回', param, JSON.stringify(res.data));
|
|
|
const { success, msg, data } = res.data;
|
|
|
- if (success && data.cashierUrl) {
|
|
|
+ if (success && data.orderId) {
|
|
|
return {
|
|
|
- payUrl: data.cashierUrl,
|
|
|
- traceNo: data?.currencyOrderVo?.orderId
|
|
|
+ traceNo: data.orderId
|
|
|
};
|
|
|
} else {
|
|
|
throw new Error(msg);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ async handleWithdrawNotify(payload, headers) {
|
|
|
+ // const sign = headers['sign'];
|
|
|
+ // const timestamp = headers['timestamp'];
|
|
|
+ // const nonce = headers['nonce'];
|
|
|
+ // const signStr = this.utils.signSort({
|
|
|
+ // timestamp,
|
|
|
+ // nonce,
|
|
|
+ // access_key: ACCESS_KEY,
|
|
|
+ // ...payload
|
|
|
+ // });
|
|
|
+ // const validSign = this.utils.signByHmacSha1(signStr, SECRET_KEY);
|
|
|
+ // if (sign !== validSign) {
|
|
|
+ // throw new Error('sign error');
|
|
|
+ // }
|
|
|
+ if (+payload.orderStatusCode !== 8 && +payload.orderStatusCode !== 4 && +payload.orderStatusCode !== 16) {
|
|
|
+ throw new Error('order no result');
|
|
|
+ }
|
|
|
+ let status = 2;
|
|
|
+ if (+payload.orderStatusCode === 8) {
|
|
|
+ status = 8;
|
|
|
+ } else if (+payload.orderStatusCode === 4 || +payload.orderStatusCode === 16) {
|
|
|
+ status = 3;
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ date: new Date(),
|
|
|
+ status: status,
|
|
|
+ message: payload.errorMsg,
|
|
|
+ orderNo: payload.externalOrderId
|
|
|
+ };
|
|
|
+ }
|
|
|
}
|