integrate-onpoint #5
			
				
			
		
		
		
	| 
						 | 
				
			
			@ -20,19 +20,33 @@ const (
 | 
			
		|||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	VehicleTypeID50ccAbove    = 1
 | 
			
		||||
	VehicleTypeID50ccBelow    = 2
 | 
			
		||||
	VehicleTypeIDElectricBike = 3
 | 
			
		||||
	MotorbikeProductCode = "bbxm"
 | 
			
		||||
	MotorbikeProviderID  = 4
 | 
			
		||||
	MotorbikeProductID   = 18
 | 
			
		||||
 | 
			
		||||
	CarProductCode = "bbot"
 | 
			
		||||
	CarProviderID  = 10
 | 
			
		||||
	CarProductID   = 35
 | 
			
		||||
 | 
			
		||||
	NumOfSeatsMinValue = 25
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	CarOccupantAccidentInsurance0   = 1
 | 
			
		||||
	CarOccupantAccidentInsurance10m = 2
 | 
			
		||||
	CarOccupantAccidentInsurance20m = 3
 | 
			
		||||
)
 | 
			
		||||
type InsuranceConfig struct {
 | 
			
		||||
	ProductCode string
 | 
			
		||||
	ProviderID  int
 | 
			
		||||
	ProductID   int
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	productCodeDefault = "bbxm"
 | 
			
		||||
	providerIDDefault  = 4
 | 
			
		||||
	productIDDefault   = 18
 | 
			
		||||
var (
 | 
			
		||||
	CarConfig = InsuranceConfig{
 | 
			
		||||
		ProductCode: CarProductCode,
 | 
			
		||||
		ProviderID:  CarProviderID,
 | 
			
		||||
		ProductID:   CarProductID,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	MotorbikeConfig = InsuranceConfig{
 | 
			
		||||
		ProductCode: MotorbikeProductCode,
 | 
			
		||||
		ProviderID:  MotorbikeProviderID,
 | 
			
		||||
		ProductID:   MotorbikeProductID,
 | 
			
		||||
	}
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -54,17 +54,8 @@ func NewClient(env ENV, privateKey, publicKey string, natsClient natsio.Server)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
// CreateOrder ...
 | 
			
		||||
func (c *Client) CreateOrder(p CreateOrderPayload) (*CreateOrderResponseDecoded, error) {
 | 
			
		||||
func (c *Client) CreateOrder(data CreateOrderPayload) (*CreateOrderResponseDecoded, error) {
 | 
			
		||||
	url := c.getBaseURL() + apiPathCreateOrder
 | 
			
		||||
	data := createOrderData{
 | 
			
		||||
		ProductCode: productCodeDefault,
 | 
			
		||||
		ProviderID:  providerIDDefault,
 | 
			
		||||
		ProductID:   productIDDefault,
 | 
			
		||||
		PartnerID:   p.PartnerOrderCode,
 | 
			
		||||
		VehicleInfo: p.VehicleInfo,
 | 
			
		||||
		InsuredInfo: p.InsuredInfo,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	dataString := base64.Encode(pjson.ToBytes(data))
 | 
			
		||||
	sign, err := c.signData(dataString)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,9 @@
 | 
			
		|||
package globalcare
 | 
			
		||||
 | 
			
		||||
import "time"
 | 
			
		||||
import (
 | 
			
		||||
	"encoding/json"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// CommonRequestBody ...
 | 
			
		||||
type CommonRequestBody struct {
 | 
			
		||||
| 
						 | 
				
			
			@ -10,12 +13,6 @@ type CommonRequestBody struct {
 | 
			
		|||
 | 
			
		||||
// CreateOrderPayload ...
 | 
			
		||||
type CreateOrderPayload struct {
 | 
			
		||||
	PartnerOrderCode string      `json:"partnerOrderCode"`
 | 
			
		||||
	VehicleInfo      VehicleInfo `json:"vehicleInfo"`
 | 
			
		||||
	InsuredInfo      InsuredInfo `json:"insuredInfo"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type createOrderData struct {
 | 
			
		||||
	ProductCode string      `json:"productCode"`
 | 
			
		||||
	ProviderID  int         `json:"providerId"`
 | 
			
		||||
	ProductID   int         `json:"productId"`
 | 
			
		||||
| 
						 | 
				
			
			@ -28,10 +25,36 @@ type createOrderData struct {
 | 
			
		|||
type VehicleInfo struct {
 | 
			
		||||
	TypeID   int    `json:"typeId"`
 | 
			
		||||
	TypeName string `json:"typeName"`
 | 
			
		||||
	CarOccupantAccidentInsurance int    `json:"carOccupantAccidentInsurance"`
 | 
			
		||||
	License  string `json:"license"`
 | 
			
		||||
	Chassis  string `json:"chassis"`
 | 
			
		||||
	Engine   string `json:"engine"`
 | 
			
		||||
 | 
			
		||||
	// V2 = true if TypeID = 1 and insurance type is car
 | 
			
		||||
	V2 bool `json:"v2,omitempty"`
 | 
			
		||||
	// CarOccupantAccidentInsurance type int for motorbike, type CarOccupantAccidentInsuranceObj for car insurance
 | 
			
		||||
	CarOccupantAccidentInsurance interface{} `json:"carOccupantAccidentInsurance"`
 | 
			
		||||
	NumberOfSeatsOver25          int         `json:"numberOfSeatsOver25"`
 | 
			
		||||
	NumberOfSeatsOrTonnageName   string      `json:"numberOfSeatsOrTonnageName"`
 | 
			
		||||
	NumberOfSeatsOrTonnage       int         `json:"numberOfSeatsOrTonnage"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// CarOccupantAccidentInsuranceObj ...
 | 
			
		||||
type CarOccupantAccidentInsuranceObj struct {
 | 
			
		||||
	NumberOfSeats int `json:"numberOfSeats"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *CarOccupantAccidentInsuranceObj) MarshalJSON() ([]byte, error) {
 | 
			
		||||
	buy := 1
 | 
			
		||||
	if c.NumberOfSeats <= 0 {
 | 
			
		||||
		buy = 2
 | 
			
		||||
	}
 | 
			
		||||
	return json.Marshal(&struct {
 | 
			
		||||
		Buy           int `json:"buy"`
 | 
			
		||||
		NumberOfSeats int `json:"numberOfSeats"`
 | 
			
		||||
	}{
 | 
			
		||||
		Buy:           buy,
 | 
			
		||||
		NumberOfSeats: c.NumberOfSeats,
 | 
			
		||||
	})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// InsuredInfo ...
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue