Payment Request wrapper with TypeScript for angular +4.
To install this library, run:
$ npm install ng-payment-request-api --save
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; //Import payment request api module import {PaymentRequestModule} from "ng-payment-request-api"; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, PaymentRequestModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
Parent Component
import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { title = 'app'; paymentOptions = { supportedPaymentMethods: [ // regular payment { supportedMethods: 'basic-card', }, //apply pay support. currently on safari ios only apply pay supported. { supportedMethods: 'https://apple.com/apple-pay', data: { version: 2, supportedNetworks: ['amex', 'jcb', 'visa'], countryCode: 'US', merchantIdentifier: 'merchant.sleek.com', merchantCapabilities: ['supportsDebit', 'supportsCredit', 'supports3DS'] } } ] }; items: PaymentItem[] = [ { label: 'product 1', amount: { value: 5, currency: "USD" } }, { label: 'product 2', amount: { value: 8, currency: "USD" } } ]; shippingOptions = [{ id: 'economy', label: 'Economy Shipping (5-7 Days)', amount: { currency: 'USD', value: '0', }, }, { id: 'express', label: 'Express Shipping (2-3 Days)', amount: { currency: 'USD', value: '5', }, }, { id: 'next-day', label: 'Next Day Delivery', amount: { currency: 'USD', value: '12', }, }]; constructor() {} chargeClient(paymentResponse) { //TODO actual charge. } updateShippingOption(response) { // example: // response = { // total: 55, // shippingOption : { // id: 'next-day', // label: 'Next Day Delivery', // amount: { // currency: 'USD', // value: '12', // } // } // } } }
And just use the Directive in your HTML
<button appPaymentRequest [shippingOptions]="shippingOptions" [options]="paymentOptions" [items]="items" (onCheckout)="chargeClient($event)" (onShippingOptionChange)="updateShippingOption($event)"> Checkout </button>
paymentOptions configuration can be found here. If you don't provide any parameters, default one are used.