Woocomerce integration in Invoice component

This commit is contained in:
Rene V. Vergara A. 2022-12-13 16:37:45 -05:00
commit b6502a3f36
4 changed files with 58 additions and 11 deletions

View file

@ -5,6 +5,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
## [Unreleased] ## [Unreleased]
<<<<<<< HEAD
=======
## [1.3.3] - 2022-12-13
### Added
- Support for Woocomerce -
- a "Return To Shop" button added to ZGo Invoice component
- Open WooCommerce checkout page if popups are allowed in customer's browser
## [1.3.2] - 2022-10-11
>>>>>>> cc881b38a1b0a1fd35863650da445e6179f192bf
### Added ### Added
- New component added to export orders in CSV format. Allows users to download orders. - New component added to export orders in CSV format. Allows users to download orders.

View file

@ -1,6 +1,6 @@
{ {
"name": "zgo", "name": "zgo",
"version": "1.3.1", "version": "1.3.2",
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve", "start": "ng serve",

View file

@ -120,9 +120,24 @@
<button style="margin-top: 20px; <button style="margin-top: 20px;
font-weight: 700; font-weight: 700;
background-color: lightgray;" background-color: lightgray;"
mat-raised-button mat-raised-button
(click)="copyMemo()">Copy Memo</button> (click)="copyMemo()" *ngIf="!isWCOrder">Copy Memo</button>
<div style="display: flex;
justify-content: space-between;"
*ngIf="isWCOrder">
<button style="margin-top: 20px;
font-weight: 700;
background-color: lightgray;"
mat-raised-button
(click)="copyMemo()">Copy Memo</button>
<button style="margin-top: 20px;
font-weight: 700;
background-color: lightcyan;"
mat-raised-button
(click)="backToShop()" >Return to Shop</button>
</div>
</div> </div>

View file

@ -26,12 +26,11 @@ export class InvoiceComponent implements OnInit {
name: string = ''; name: string = '';
error: boolean = false; error: boolean = false;
codeString: string = 'Test'; codeString: string = 'Test';
public isWCOrder : boolean = false;
zcashUrl: SafeUrl = ''; zcashUrl: SafeUrl = '';
externalURL: string = '';
order:Order = { order:Order = {
_id: '', _id: '',
address: '', address: '',
session: '', session: '',
timestamp: '', timestamp: '',
@ -60,6 +59,7 @@ export class InvoiceComponent implements OnInit {
private notifierService : NotifierService private notifierService : NotifierService
) { ) {
this.orderId = this._ActiveRoute.snapshot.paramMap.get("orderId"); this.orderId = this._ActiveRoute.snapshot.paramMap.get("orderId");
console.log('constructor - orderId -> ' + this.orderId);
this.orderUpdate = receiptService.orderUpdate; this.orderUpdate = receiptService.orderUpdate;
this.nameUpdate = receiptService.nameUpdate; this.nameUpdate = receiptService.nameUpdate;
receiptService.getOrderById(this.orderId!).subscribe(response => { receiptService.getOrderById(this.orderId!).subscribe(response => {
@ -83,6 +83,9 @@ export class InvoiceComponent implements OnInit {
}); });
this.orderUpdate.subscribe(order => { this.orderUpdate.subscribe(order => {
this.order = order; this.order = order;
if ( order.session.substring(0,1) == 'W') {
this.isWCOrder = true;
}
this.codeString = `zcash:${this.order.address}?amount=${this.order.totalZec.toFixed(8)}&memo=${URLSafeBase64.encode(Buffer.from('ZGo Order::'.concat(this.orderId!)))}`; this.codeString = `zcash:${this.order.address}?amount=${this.order.totalZec.toFixed(8)}&memo=${URLSafeBase64.encode(Buffer.from('ZGo Order::'.concat(this.orderId!)))}`;
this.zcashUrl = this.sanitizer.bypassSecurityTrustUrl(this.codeString); this.zcashUrl = this.sanitizer.bypassSecurityTrustUrl(this.codeString);
}); });
@ -92,10 +95,26 @@ export class InvoiceComponent implements OnInit {
} }
ngOnInit(): void { ngOnInit(): void {
} setTimeout(() => this.backToShop(), 10000);
}
ngAfterViewInit(): void { backToShop() {
console.log('Order.externalInvoice -> ' + this.order.externalInvoice); if ( this.isWCOrder ) {
console.log('External Invoice -> ' + this.order.externalInvoice );
const b64URL:string = this.order.externalInvoice.substring(0,this.order.externalInvoice.indexOf("-"));
console.log('encodedURL -> ' + b64URL );
const shopURL: string = Buffer.from(b64URL, 'base64').toString();
const tmp_orderid = this.order.externalInvoice.substring(this.order.externalInvoice.indexOf('-')+1);
const wc_order_key = tmp_orderid.substring(tmp_orderid.indexOf('-')+1);
const wc_orderid = tmp_orderid.substring(0,tmp_orderid.indexOf('-'));
console.log('wc_order_id -> ' + wc_orderid);
console.log('wc_order_key -> ' + wc_order_key);
console.log('new URL -> ' + shopURL + '/checkout/order-received/' + wc_orderid + '/?key=' + wc_order_key);
if ( shopURL ) {
console.log('Opening URL....' + shopURL);
window.open( shopURL + '/checkout/order-received/' + wc_orderid + '/?key=' + wc_order_key,"_blank");
}
}
} }
getIconStyle(order : Order) { getIconStyle(order : Order) {