Al darle click al botón Continuar, se mostrará tu zenkipayKey y un snippet de código que debes copiar y/o adaptar en tu sitio web, dicho snippet trae un ejemplo de la información requerida para poder realizar un pago.
Para la versión más actual, ejecuta en una terminal en el directorio root de nuestro proyecto:
1
npm i @zenkipay-pkg/angular
Importante:En nuestra dependencia usamos la versión de rxjs que usa la versión de Angular seleccionada, si tu versión de rxjs no es la que trae por defecto tu versión de Angular puede que te dé algunos errores de compatibilidad, para ello puedes ir probando entre versiones acorde a tu versión de rxjs.
Ya que tienes instalada nuestra dependencia, procede a agregarlo a nuestro módulo de Angular, para ello necesitas pasarle en configuración nuestro zenkipayKey. A continuación se muestra un ejemplo:
Una vez instalado y configurado nuestro módulo, tienes a tu disposición el uso del componente zenkipay-button que inserta el botón de pago de Zenkipay y nuestro servicio ZenkipayService que te permite consultar si tu comerciante tiene habilitado el descuento crypto love y su porcentaje, o no; también te permite abrir la modal de pago. Dicho componente y servicio serán descritos a continuación:
Componente zenkipay-button
El selector de nuestro componente es zenkipay-button, éste cuenta con una serie de entradas y salidas, descritas en las siguientes tablas:
Emite cada actualización de eventos de la modal de pago.
error
Error
Emite un evento cuando ocurre un error, así como su detalle.
Servicio ZenkipayService
Puedes inyectarlo en el constructor de tus componentes/servicios como cualquier otro servicio de Angular, la definición de sus métodos aparece a continuación:
Con este método puedes consultar si tu comerciante tiene el descuento crypto love habilitado, para ello necesitas pasarle como parámetro un objeto de tipo PaymentDetails, y éste te retornará mediante un observable el porcentaje de tu descuento, en caso de que no tenga habilitado el descuento retornará null.
Método pay
Con este método puedes abrir la modal para realizar un pago, para ello necesitas pasarle como parámetro un objeto de tipo PaymentDetails, éste retorna un observable que puede emitir varios eventos de tipo ZenkiPayment, por ello aconsejamos que se guarde la referencia de esa subscripción y se desuscriba en cuanto termine el proceso de ese pago en particular.
Pago de pruebas
Ya que tengas preparada tu integración, procede a realizar un pago de pruebas desde tu sitio, para ello da click en el botón Haz un pago de prueba con datos firmados, lo que te mostrará una modal como la siguiente:
import{Component,OnInit,OnDestroy}from"@angular/core";import{PaymentDetails,Style,ZenkiPayment,ZenkipayService,}from"@zenkipay-pkg/angular";import{Observable,Subscription,switchMap}from"rxjs";import{YourApiService}from"./services/your-api/your-api.service";@Component({selector:"app-root",templateUrl:"./app.component.html",styleUrls:["./app.component.scss"],})exportclassAppComponentimplementsOnInit,OnDestroy{privatereadonly_subscriptions: Subscription[]=[];private_purchaseData!:string;private_purchaseSignature!:string;publicdiscountPercentage?: number|null;// Optional
publicstyle: Style={shape:"pill",// Optional
size:"lg",// Optional
};publicgetpaymentDetails():PaymentDetails{return{// * Your purchase data will be the same string used to create the signature
purchaseData: this._purchaseData,purchaseSignature: this._purchaseSignature,};}constructor(privatereadonly_zenkipayService: ZenkipayService,privatereadonly_yourApiService: YourApiService){}publicngOnInit():void{this._yourApiService.getPurchaseData().pipe(switchMap(({purchaseData,purchaseSignature}):Observable<number|null>=>{this._purchaseData=purchaseData;this._purchaseSignature=purchaseSignature;returnthis._zenkipayService.getDiscountPercentage(this.paymentDetails);})).subscribe((discountPercentage: number|null):void=>{this.discountPercentage=discountPercentage;});}publicngOnDestroy():void{for(leti=0;i<this._subscriptions.length;i++){this._subscriptions[i].unsubscribe();}}publiczenkiPayment(zenkiPayment: ZenkiPayment):void{console.log(zenkiPayment);}publicpayWithZenkipay():void{this._subscriptions.push(this._zenkipayService.pay(this.paymentDetails).subscribe((zenkiPayment: ZenkiPayment):void=>{console.log(zenkiPayment);}));}}