항목 수정
이 modify
요청을 사용하면 이전에 시작된 카트를 수정할 수 있습니다. 이 요청은 init
장바구니, 태그 및 항목 수준에서 속성을 정의할 수 있도록 요청합니다 카트, 태그 및 항목 섹션에서 자세한 내용을 확인할 수 있습니다. 그러나 이 섹션에서 다루는 여러 가지 차이점이 있습니다.
이 modify
를 통해 다음을 수행할 수 있습니다.
- 기존 태그를 재할당하거나 삭제하고 새 태그를 도입합니다.
- 지불 설정을 재정의하고 품목 금액을 변경하거나 다시 계산합니다.
- 타이머 설정을 재정의합니다.
와 함께 modify
변경할 수 없는 요청 cartId
value 또는 장바구니 항목 식별자의 값입니다.
일부 카트 속성은 항목이 특정 결제 상태인 경우에만 수정할 수 있습니다( 지급 수 명 주기 섹션에서 지급 상태에 대한 자세한 내용을 확인할 수 있으며), 나머지는 지급 상태에 관계없이 수정할 수 있습니다.
이 modify
요청 요청은 항목 상태를 변경하지 않습니다.
태그 수정하기
태그는 금액 변경과 관련이 없는 한 결제 상태와 관계없이 수정할 수 있습니다( 결제 설정 수정을 참조하십시오).
태그는 요청에 따라 적용되며, 요청에 태그가 사용된 후에는 태그와 결제 또는 타이머 설정 사이에 바인딩이 없습니다. 따라서 항목에 대해 정의된 새 설정이 없으면 항목의 설정이 유지됩니다.
오른쪽에 있는 예를 살펴보겠습니다. 카트는 다음과 같이 시작되었습니다. tower
태그에 적용된 genie
그리고 naga
항목. 그런 다음 카트가 수정되고 inferno
태그가 도입되었습니다. 새 태그는 genie
항목을 따라서 genie
전체 항목 금액은 이제 OmniCart에 의해 다음과 같이 다시 계산됩니다. inferno
태그 설정을 선택합니다. 이제 에 의해 곱해집니다. amountModifier
값 이후 amountMode
로 설정됩니다. calculated
(금액에 대한 자세한 내용은 금액 섹션 참조).
이 naga
항목은 여전히 이니셜로 표시되어 있습니다. tower
태그. 그러나 이 태그는 에서 재정의되지 않았습니다. modify
요청. 에 대한 새로운 설정이 없었기 때문에 tower
태그에 삽입하면 naga
항목이 이전 금액 설정을 유지했습니다. 사실, 에 할당된 다른 정의되지 않은 태그는 naga
항목이 동일한 효과를 생성했을 것입니다. 즉, status
요청은 해당 설정이 해당 항목에 적용되었는지 여부에 관계없이 항목에 할당된 최신 태그를 반환합니다. 그래서 여기 팁이 있습니다.
태그를 관리합니다.
//initial tag
//new tag
- init 값
- modify 값
"scope": {
"tags": [
{
"tower": {
"paymentFilter": {
"amountMode": "declared"
}
}
}
]
},
"items": [
{
"genie": {
"tag": "tower",
"amount": 3600
},
"naga": {
"tag": "tower",
"amount": 6400
}
}
]
"scope": {
"tags": [
{
"inferno": {
"modifyAmount": {
"amountMode": "calculated",
"amountModifier": 0.7
}
}
}
]
},
"items": [
{
"genie": {
"tag": "inferno",
"modifyAmount": {
"amount": 3600
}
},
"naga": {
"tag": "tower",
"amount": 6400
}
}
]
금액 수정
금액 설정 카트, 태그 또는 항목 수준에서 다음과 같이 수정할 수 있습니다. init
카트, 태그 및 항목 섹션에서 자세한 내용을 확인할 수 있습니다. 수정되는 항목은 다음 위치에 있어야 합니다. authorized
또는 완료 상태
참조 지급 수명 주기 섹션에서 자세한 내용을 참조하십시오.
전체 항목 금액은 더 큰 값으로 수정할 수 없습니다.
전체 품목 금액이 더 낮은 값으로 수정된 경우, 품목이 각각 authorized
또는 completed
상태인지에 따라 차액이 자동으로 취소되거나 환불됩니 다. 품목이 부분적으로 취소되거나 환불된 후에는 각각 authorized
또는 completed
상태로 유지됩니다.
횟수에는 제한이 없습니다. modify
요청을 사용하여 금액을 줄일 수 있습니다. 그러나 항목을 완전히 취소하거나 환불하려면 cancel
그리고 refund
OmniCart는 0 금액을 허용하지 않기 때문에 각각 메소드를 사용합니다.
자세한 내용은 다음을 참조하십시오. 취소 및 환불 섹션을 참조하십시오.
예시 #1
이 예제에서 naga
항목은 authorized
상태. 그 금액은 다음과 같이 시작되었습니다. amountMode
속성을 declared
. 즉, 의 전체 금액 naga
item은 에 지정된 값이었습니다. amount
필드(즉, 4400
).
이 modify
Request는 다음과 같은 변경 사항을 도입했 습니다.
amountMode
에서 변경되었습니다.declared
받는 사람calculated
amount
에서 변경되었습니다.4400
받는 사람1100
"quantity": 4
가 추가되었습니다.
이래 amountMode
로 변경되었습니다. calculated
, 의 총 가격 naga
item은 의 제품입니다. amount
그리고 quantity
값. 그것은 같습니다 4400
개시 가격과 다르지 않습니다. 변경된 것은 최종 품목 가격의 구성 요소와 이제 그대로 가져 오는 대신 OmniCart에 의해 계산된다는 사실입니다. amount
재산.
참고로, initiated
그리고 current
의 값 itemAmounts
항목을 수정한 후 개체가 변경되지 않았습니다.
자세한 내용은 금액 섹션을 참조하세요.
//item summary values
//values that make up the final price
- 이전 상태
- 수정 값
- 이후 상태
"items": [
{
"naga": {
"paymentStatus": "authorized",
"itemAmounts": {
"initiated": 4400,
"captured": 0,
"refunded": 0,
"current": 4400
},
"paymentSnapshot": {
"amount": 4400,
"amountMode": "declared"
}
}
}
]
"items": [
{
"naga": {
"modifyAmount": {
"amount": 1100,
"amountMode": "calculated",
"quantity": 4
}
}
}
]
"items": [
{
"naga": {
"paymentStatus": "authorized",
"itemAmounts": {
"initiated": 4400,
"captured": 0,
"refunded": 0,
"current": 4400
},
"paymentSnapshot": {
"amount": 1100,
"amountMode": "calculated",
"quantity": 4
}
}
}
]
예 #2
이 예제에서 behemoth
항목은 authorized
상태. 그 금액은 다음과 같이 시작되었습니다. amountMode
속성을 calculated
, 따라서 총 품목 가격은 의 곱이었습니다. amount
그리고 quantity
값(1500
* 3
= 4500
).
이 modify
Request는 다음과 같은 변경 사항을 도입했습니다.
amountMode
에서 변경되었습니다.calculated
받는 사람declared
amount
에서 변경되었습니다.1500
받는 사람3000
.
이래 amountMode
로 변경되었습니다. declared
, 총 품목 가격은 다음과 같습니다. amount
값에 관계없이 quantity
값. 자, 초기부터 4500
로 축소됩니다. 3000
이는 의 값입니다. current
의 속성 itemAmounts
객체. 참고로, initiated
value는 와 함께 전달된 값이므로 변경할 수 없습니다. init
요청.
이 behemoth
항목은 authorized
status 그래서 초기의 차이 4500
및 수정됨 3000
가 취소됩니다. 항목 상태가 completed
대신에 authorized
차액은 취소되는 대신 환불되었을 것입니다.
//item summary values
//values that make up the final price
- 이전 상태
- 수정 값
- 이후 상태
"items": [
{
"behemoth": {
"paymentStatus": "authorized",
"itemAmounts": {
"initiated": 4500,
"captured": 0,
"refunded": 0,
"current": 4500
},
"paymentSnapshot": {
"amount": 1500,
"amountMode": "calculated",
"quantity": 3
}
}
}
]
"items": [
{
"behemoth": {
"modifyAmount": {
"amount": 3000,
"amountMode": "declared",
"quantity": 3
}
}
}
]
"items": [
{
"behemoth": {
"paymentStatus": "authorized",
"itemAmounts": {
"initiated": 4500,
"captured": 0,
"refunded": 0,
"current": 3000
},
"paymentSnapshot": {
"amount": 3000,
"amountMode": "declared",
"quantity": 3
}
}
}
]
타이머 수정
타이머 설정은 결제 상태에 관계없이 변경할 수 있습니다.
와 함께 modify
요청 요청을 통해 다음을 수행할 수 있습니다.
- 이전에 비활성화된(설정되지 않은) 타이머 사용
- 트리거 이벤트 또는 카운트다운 값을 포함한 기존 타이머 설정 변경
- 수동 타이머 작업을 수행합니다.
시작하다
,paused
또는stop
.
타이머를 활성화하면 타이머가 시작될 때만 끝나는 수명 주기가 시작됩니다. elapsed
또는 stopped
상태.
예시 #1
이 예제에서 crusader
항목은 authorized
상태. 처음에는 이 항목에 대한 타이머가 비활성화되었으며 상태 요청에서 타이머 설정 을 반환하지 않았습니다.
이 modify
Request는 다음과 같은 변경 사항을 도입했습니다.
- 를 전달하여 타이머를 활성화했습니다.
modifyTimer
객체 - 설정
captured
상태를 트리거 이벤트로 사용합니다. - 타이머 값을 다음으로 설정
604800
초(일주일).
이후 modify
요청, 타이머가 입력되었습니다. pending
상태. 항목이 입력되자마자 타이머가 시작됩니다. captured
상태.
- 이전 상태
- 수정 값
- 이후 상태
"crusader": {
"paymentStatus": "authorized",
"itemAmounts": {
"initiated": 400,
"captured": 0,
"refunded": 0,
"current": 400
},
"paymentSnapshot": {
"amount": 400
}
}
"crusader": {
"modifyTimer": {
"triggerEvent": "captured",
"timerValue": 604800
}
}
"crusader": {
"paymentStatus": "authorized",
"itemAmounts": {
"initiated": 400,
"captured": 0,
"refunded": 0,
"current": 400
},
"paymentSnapshot": {
"amount": 400
},
"timerSnapshot": {
"triggerEvent": "captured",
"timerStatus": "pending",
"remainingSecs": 604800
}
}
예 #2
이 예제에서 unicorn
항목은 authorized
상태. 타이머는 이전에 항목이 들어갈 때 시작하도록 설정되었습니다. captured
상태. 이 modify
요청에는 다음이 포함됩니다. manualAction
속성을 start
값. 타이머를 시작하는 것은 수동 작업입니다. 요청이 처리된 후 타이머가 카운트다운됩니다
트리거 이벤트( captured
status)는 변경되지 않고 modify
요청에는 변경 지침이 포함되어 있지 않습니다. 이는 예상된 동작입니다.
만약 unicorn
item이 들어갑니다. captured
상태, 타이머는 계속 카운트다운됩니다. 그러나 타이머가 더 일찍 경과하면 elapsed
상태. 이 elapsed
상태는 타이머 수명 주기의 최종 상태입니다. 그 이후에는 결제 상태 변경이 타이머에 영향을 주지 않습니다. 자세한 내용은 아이템 타이머 및 결제 수명 주기 섹션을 참조하세요.
- 이전 상태
- 수정 값
- 이후 상태
"unicorn": {
"paymentStatus": "authorized",
"itemAmounts": {
"initiated": 850,
"captured": 0,
"refunded": 0,
"current": 850
},
"paymentSnapshot": {
"amount": 850
},
"timerSnapshot": {
"triggerEvent": "captured",
"timerStatus": "pending",
"remainingSecs": 172800
}
}
"unicorn": {
"modifyTimer": {
"manualAction": "start"
}
}
"unicorn": {
"paymentStatus": "authorized",
"itemAmounts": {
"initiated": 850,
"captured": 0,
"refunded": 0,
"current": 850
},
"paymentSnapshot": {
"amount": 850
},
"timerSnapshot": {
"triggerEvent": "captured",
"timerStatus": "started",
"remainingSecs": 172716
}
}
예 #3
이 예제에서 cerberus
항목은 authorized
상태. 타이머 설정에는 이미 트리거 이벤트가 설정되어 있습니다. captured
상태. 현재 타이머 상태는 다음과 같습니다. pending
.
이 modify
request가 트리거 이벤트를 다음으로 변경했습니다. initiated
. 이후 initiated
status가 captured
상태, 타이머가 started
상태를 확인하고 이후 카운트다운을 시작합니다. modify
요청이 처리되었습니다.
- 이전 상태
- 수정 값
- 이후 상태
"cerberus": {
"paymentStatus": "authorized",
"itemAmounts": {
"initiated": 250,
"captured": 0,
"refunded": 0,
"current": 250
},
"paymentSnapshot": {
"amount": 250
},
"timerSnapshot": {
"triggerEvent": "captured",
"timerStatus": "pending",
"remainingSecs": 259200
}
}
"cerberus": {
"modifyTimer": {
"triggerEvent": "initiated"
}
}
"cerberus": {
"paymentStatus": "authorized",
"itemAmounts": {
"initiated": 250,
"captured": 0,
"refunded": 0,
"current": 250
},
"paymentSnapshot": {
"amount": 250
},
"timerSnapshot": {
"triggerEvent": "initiated",
"timerStatus": "started",
"remainingSecs": 259112
}
}