我们正在构建一个电子商务应用程序,其中包括用于在线订购的支付网关系统。下面是我们使用的技术栈。
- 角 4/5
- Firebase [Firestore]
由于没有关于此的适当文档,我们以以下方式实现它。
app.component.ts
export class AppComponent {
rzp1: any;
title = 'app';
options = {
'key': environment.payment_key,
'amount': '2000', // 2000 paise = INR 20
'name': 'Merchant Name',
'description': 'Purchase Description',
'image': '/your_logo.png',
'handler': function(response) {
alert(response.razorpay_payment_id);
},
'prefill': {
'name': 'Harshil Mathur',
'email': 'harshil@razorpay.com'
},
'notes': {
'address': 'Hello World'
},
'theme': {
'color': '#F37254'
}
};
constructor(private winRef: WindowRefService) {
}
public initPay(): void {
this.rzp1 = new this.winRef.nativeWindow.Razorpay(this.options);
this.rzp1.open();
}
}
app.component.html
<button id="rzp-button1" (click)="initPay();">Pay</button>
这只是为了测试目的。我们已经看到 Firebase 团队建议的 Stripe 支付网关,但我们不能使用相同的支付网关,因为 Stripe 尚未向印度提供支持,而且我们的主要业务是在印度开展的。
所以我们选择了 RazorPay。在这篇文章和这个文档的帮助下,我们能够将它集成到我们的系统中,但我们认为这不是安全的方法,因为我们通过环境变量公开了payment_key 。自从它的 firebase 以来,我们将无法对后端进行太多控制。
用 Firebase 系统实现这一点的最佳方法是什么?我们怎样才能使它比现在更安全?