20210611 - 페이팔 결제 모듈과 연동 PayPal Integration - 1. 아이템 확인 및 장바구니 넣기

테스트 페이지 구성은 템플릿 중 마법사 Wizard 템플릿을 사용하였고 총 4 단계로 구성하였음.

1. 아이템 확인 및 장바구니 넣기

2. 장바구니 확인 및 수량 조정

3. 페이팔 결제 연동

4. 결제 완료된 주문 확인


1. 아이템 확인 및 장바구니 넣기


1) 테이블 구성

아이템을 보여주기 위한 DM_PAYPALD 테이블과 장바구니 테이블 DM_PAYPALD_CART 로 구성하였고 컬럼 이름도 카드 리전에서 바로 사용할 수 있도록 예약된 이름을 사용하였음.

CREATE TABLE  "DM_PAYPALD" 
   (	"CARD_PRIMARY_KEY" NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE  NOKEEP  NOSCALE  NOT NULL ENABLE, 
	"CARD_TITLE" VARCHAR2(200 CHAR) COLLATE "USING_NLS_COMP", 
	"CARD_SUBTITLE" VARCHAR2(200 CHAR) COLLATE "USING_NLS_COMP", 
	"CARD_BODY" VARCHAR2(200 CHAR) COLLATE "USING_NLS_COMP", 
	"CARD_SECONDARY_BODY" VARCHAR2(200 CHAR) COLLATE "USING_NLS_COMP", 
	"CARD_ICON" VARCHAR2(200 CHAR) COLLATE "USING_NLS_COMP", 
	"CARD_BADGE" VARCHAR2(200 CHAR) COLLATE "USING_NLS_COMP", 
	"CARD_IMAGE" VARCHAR2(1000 CHAR) COLLATE "USING_NLS_COMP", 
	"AMT" NUMBER DEFAULT ON NULL 0 NOT NULL ENABLE, 
	 CONSTRAINT "DM_PAYPALD_CARD_PRIMARY_KEY_PK" PRIMARY KEY ("CARD_PRIMARY_KEY")
  USING INDEX  ENABLE
   )  DEFAULT COLLATION "USING_NLS_COMP"
/

CREATE TABLE  "DM_PAYPALD_CART" 
   (	"ID" NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE  NOKEEP  NOSCALE  NOT NULL ENABLE, 
	"CARD_PRIMARY_KEY" NUMBER, 
	"CNT" NUMBER DEFAULT ON NULL 0 NOT NULL ENABLE, 
	"AMT" NUMBER DEFAULT ON NULL 0 NOT NULL ENABLE, 
	"TTL" NUMBER DEFAULT ON NULL 0 NOT NULL ENABLE, 
	"OD" VARCHAR2(200 CHAR) COLLATE "USING_NLS_COMP", 
	"STATUS" VARCHAR2(100 CHAR) COLLATE "USING_NLS_COMP", 
	"CAPTUREID" VARCHAR2(100) COLLATE "USING_NLS_COMP", 
	 CONSTRAINT "DM_PAYPALD_CART_ID_PK" PRIMARY KEY ("ID")
  USING INDEX  ENABLE
   )  DEFAULT COLLATION "USING_NLS_COMP"
/


2) 카드 리전 구성

Region

Type : Cards

SQL Query : 

select CARD_PRIMARY_KEY,

       CARD_TITLE,

       CARD_SUBTITLE,

       CARD_BODY,

       CARD_SECONDARY_BODY,

       CARD_ICON,

       CARD_BADGE,

       CARD_IMAGE

  from DM_PAYPALD

Template : Cards Container

Template Options : Use Template Defaults, Style C


Attributes

Layout : Grid

Grid Columns : 4 Columns

Card - Primary Key Column 1 : CARD_PRIMARY_KEY

Title - Column : CARD_TITLE

Subtitle - Column : CARD_SUBTITLE

Body - Column : CARD_BODY

Secondary Body - Column : CARD_SECONDARY_BODY

Icon and Badge - Icon Source : Icon Class Column

Icon and Badge - Icon Column : CARD_ICON

Icon and Badge - Icon Position : Start

Icon and Badge - Badge Column : CARD_BADGE

Media - Source : URL Column

Media - URL Column : CARD_IMAGE

Media - Position : Body

Media - Appearance : Auto

Media - Sizing : Cover


Action Button

Type : Button

Label : Cart

Position : Primary

Link - Type : Redirect to Page in this Application

Target : Page 7 (P7_CARD_PRIMARY_KEY, &CARD_PRIMARY_KEY.)

Display Type : Text with Icon

Icon : fa-cart-arrow-down


3) 장바구니 넣기

장바구니 넣기 버튼을 클릭하면 다른 페이지를 열어서 해당 아이템을 넣음. 장바구니를 확인하여 동일한 아이템이 있으면 수량, 총 금액만 업데이트하고 아이템이 없으면 신규로 입력.

Region

Page Item : P7_CARD_PRIMARY_KEY

Type : Hidden

Dynamic Actions

Event : Change

Selection Type : Item

Item : P7_CARD_PRIMARY_KEY

True - Action : Execute Server-side Code

Language : PL/SQL

Fire on Initialization : YES


declare
  ll_amt dm_paypald.amt%TYPE;
begin

  select amt into ll_amt from dm_paypald amt where amt.card_primary_key = :P7_CARD_PRIMARY_KEY;

  MERGE INTO dm_paypald_cart t1
  USING (select :P7_CARD_PRIMARY_KEY id from dual ) t2
  ON (t1.card_primary_key = t2.ID)
  WHEN MATCHED THEN
    UPDATE SET t1.cnt = t1.cnt + 1, t1.ttl = t1.ttl + t1.amt
  WHEN NOT MATCHED THEN
    INSERT (card_primary_key, cnt, amt, ttl)  VALUES (:P7_CARD_PRIMARY_KEY, 1, ll_amt, ll_amt);

end;






20210611.

댓글 없음:

댓글 쓰기

20250202 - IG 다운로드 버튼 바로 보이기

JS initialization Code : function (config) {     var $ = apex.jQuery,         toolbarData = $.apex.interactiveGrid.copyDefaultToolbar(),  ...