Razorpay 与 Firebase 的集成和 Angular 4
Razorpay Integration with Firebase and Angular 4
我们正在构建一个电子商务应用程序,其中包括用于在线订购的支付网关系统。下面是我们使用的技术栈。
- Angular 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。在 this post and this documentation 的帮助下,我们能够将其集成到我们的系统中,但我们认为这不是安全的方法,因为我们公开了 payment_key 通过环境变量。自 Firebase 以来,我们将无法对后端进行太多控制。
使用 Firebase 系统实现此功能的最佳方法是什么?我们怎样才能使它比现在更安全?
上面的关键变量是 "Key Id" 根据 Razorpay checkout docs。它是一个 public 变量,并且对于每个帐户都是唯一的。
但是,为了使用服务器到服务器 API 的其余部分,您需要使用您的 Razorpay Key Secret,您永远不应发布它并保密。
引自 Razorpay Authentication 文档:
All server side requests like capture, refund, getting details of previous payment must be authenticated with basic auth using the key-id as username and key-secret as password.
Send the requests to https://$keyId:$keySecret@api.razorpay.com
Your Key-Secret is like your password. Never use it for client side requests and never share it with anyone.
免责声明:我在Razorpay工作
我们正在构建一个电子商务应用程序,其中包括用于在线订购的支付网关系统。下面是我们使用的技术栈。
- Angular 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。在 this post and this documentation 的帮助下,我们能够将其集成到我们的系统中,但我们认为这不是安全的方法,因为我们公开了 payment_key 通过环境变量。自 Firebase 以来,我们将无法对后端进行太多控制。
使用 Firebase 系统实现此功能的最佳方法是什么?我们怎样才能使它比现在更安全?
上面的关键变量是 "Key Id" 根据 Razorpay checkout docs。它是一个 public 变量,并且对于每个帐户都是唯一的。
但是,为了使用服务器到服务器 API 的其余部分,您需要使用您的 Razorpay Key Secret,您永远不应发布它并保密。
引自 Razorpay Authentication 文档:
All server side requests like capture, refund, getting details of previous payment must be authenticated with basic auth using the key-id as username and key-secret as password.
Send the requests to https://$keyId:$keySecret@api.razorpay.com
Your Key-Secret is like your password. Never use it for client side requests and never share it with anyone.
免责声明:我在Razorpay工作