0

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

  • 角 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 系统实现这一点的最佳方法是什么?我们怎样才能使它比现在更安全?

4

1 回答 1

2

上面的关键变量是Razorpay checkout docs中的“密钥 ID” 。它是一个公共变量,并且对于每个帐户都是唯一的。

但是,为了使用其余的服务器到服务器 API,您需要使用您的 Razorpay 密钥密钥,您永远不应该发布它并保密。

引用Razorpay 身份验证文档:

所有服务器端请求(如捕获、退款、获取先前付款的详细信息)都必须使用基本身份验证进行身份验证,使用 key-id 作为用户名,key-secret 作为密码。

将请求发送到 https://$keyId:$keySecret@api.razorpay.com

您的密钥就像您的密码。切勿将其用于客户端请求,也不要与任何人共享。

免责声明:我在 Razorpay 工作

于 2017-11-29T18:45:28.473 回答