javascript - Paypal Checkout 按钮 - 环境配置 - Angular 6
问题描述
我在我的应用程序中实现了贝宝快速结帐,现在我需要构建应用程序以进行生产,以上线。我使用了 ngx-payapl,它看起来像这样:
private initConfig(): void {
this.payPalConfig = new PayPalConfig(PayPalIntegrationType.ClientSideREST,
// Here I need to see how to change the environment to
// PayPalEnvironment.Production
PayPalEnvironment.Sandbox, {
commit: true,
client: {
// how to will it trigger production for ng-build --prod?
sandbox: '...sandboxclientid...',
production: '...liveclientid...',
},
button: {
label: 'paypal',
},
transactions: [{
amount: {
currency: 'USD',
total: 30
},
description: ''
}],
onPaymentComplete: (data, actions) => {
// some api calls
},
onCancel: (data, actions) => {
console.log('Payment canceled');
},
onError: (err) => {
console.log(err);
},
onClick: () => {
// some code
}
});
}
我想我从仪表板获取实时客户端 ID,没关系,我应该将这些 ID 保存在环境文件中,但是如何在这里更改环境本身?我想我需要PayPalEnvironment.Production
and 来寻找client.production
?
解决方案
您有 2 个选项:第一个是如您所描述的,在环境文件下为同一个配置键放置两个不同的值。那么您只需要从配置中读取密钥,您将获得开发模式和产品的不同值。第二个选项,如果您处于开发模式,您还可以签入每个组件并根据 env 初始化 payapl。
编辑: 对于第一种方法:从库代码中,这是 PayPalEnvironment 的定义方式,这实际上是一个枚举:
export enum PayPalEnvironment {
Sandbox = 'sandbox',
Production = 'production'
}
所以为了使用环境文件,你应该定义两个环境文件,一个用于dev,一个用于prod,你可以在此处查看定义配置的完整方法 添加两个配置文件后,只需为paypalEnv添加一个键,用于开发将其值到 'sandbox' 和 prod 的值应该是 'production' 例如:
// file: environment/environment.dev.ts
export const environment = {
production: false,
paypalEnv: 'sandbox',
};
然后使用配置文件,在你的 PyaPal 组件下进行如下操作:
// Change for correct path
import { environment } from '../../environments/environment';
private initConfig(): void {
this.payPalConfig = new PayPalConfig(PayPalIntegrationType.ClientSideREST,
environment.paypalEnv, {
commit: true,
client: {
// how to will it trigger production for ng-build --prod?
sandbox: '...sandboxclientid...',
production: '...liveclientid...',
},
...
});
}
对于第二种方法,您可以使用以下方式:
import { isDevMode } from '@angular/core';
...
private initConfig(): void {
// The console.log here is just for demo but you can use the value to decide
console.log(isDevMode());
}
推荐阅读
- c# - 在 Windows 10 IoT Core 上访问 USB 端口
- angular - 以 angular6 形式排除输入 formControlName
- excel - 如何在 Excel 中使用两个过滤器提取数据?
- sql-server - 使用 SQL Server 清除一些表,同时将停机时间降至最低
- arrays - 将数组传递给 Vue 中的 Laravel 视图
- node.js - 我们可以在nodejs中使用http包和docker吗
- sql - 有条件地从两个表之一中选择值
- python - opencv:WarpPerspective 不规则轮廓变换
- java - 如何解决java中的俄语编码?
- java - RuntimeException(它是未检查异常的基类)的父类如何成为异常(已检查异常的基类)?