Razorpay 与 Firebase 的集成和 Angular 4

Razorpay Integration with Firebase and Angular 4

我们正在构建一个电子商务应用程序,其中包括用于在线订购的支付网关系统。下面是我们使用的技术栈。

由于没有关于此的适当文档,我们通过以下方式实现它。

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工作