@@ -41,8 +41,9 @@ func genericOrderSchema(withOptions bool) map[string]*schema.Schema {
4141 },
4242 "payment_mean" : {
4343 Type : schema .TypeString ,
44- Required : true ,
44+ Optional : true ,
4545 ForceNew : true ,
46+ Deprecated : "This field is not anymore used since the API has been deprecated in favor of /payment/mean. Now, the default payment mean is used." ,
4647 Description : "Ovh payment mode" ,
4748 ValidateFunc : func (v interface {}, k string ) (ws []string , errors []error ) {
4849 err := helpers .ValidateStringEnum (strings .ToLower (v .(string )), []string {
@@ -303,6 +304,16 @@ func orderCreate(d *schema.ResourceData, meta interface{}, product string) error
303304 }
304305 }
305306
307+ // get defaultPayment
308+ paymentIds := []int64 {}
309+ endpoint = "/me/payment/method?default=true"
310+ if err := config .OVHClient .Get (endpoint , & paymentIds ); err != nil {
311+ return fmt .Errorf ("calling Get %s \n \t %q" , endpoint , err )
312+ }
313+ if len (paymentIds ) == 0 {
314+ return fmt .Errorf ("no default payment found" )
315+ }
316+
306317 // Create Order
307318 log .Printf ("[DEBUG] Will create order %s for cart: %s" , product , cart .CartId )
308319 order := & MeOrder {}
@@ -313,33 +324,18 @@ func orderCreate(d *schema.ResourceData, meta interface{}, product string) error
313324 }
314325
315326 // Pay Order
316- log .Printf ("[DEBUG] Will pay order %d" , order .OrderId )
317-
318- var paymentMeanOpts * MeOrderPaymentOpts
319- paymentMean := d .Get ("payment_mean" ).(string )
320-
321- switch strings .ToLower (paymentMean ) {
322- case "default-payment-mean" :
323- paymentMeanOpts , err = MePaymentMeanDefaultPaymentOpts (config .OVHClient )
324- if err != nil {
325- return fmt .Errorf ("Could not order product: %v." , err )
326- }
327- if paymentMeanOpts == nil {
328- return fmt .Errorf ("Could not find any default payment mean to order product." )
329- }
330- case "ovh-account" :
331- paymentMeanOpts = MePaymentMeanOvhAccountPaymentOpts
332- case "fidelity" :
333- paymentMeanOpts = MePaymentMeanFidelityAccountPaymentOpts
334- default :
335- return fmt .Errorf ("Unsupported payment mean. This is a bug with the provider." )
336- }
327+ log .Printf ("[DEBUG] Will pay order %d with PaymentId %d" , order .OrderId , paymentIds [0 ])
337328
338329 endpoint = fmt .Sprintf (
339- "/me/order/%d/payWithRegisteredPaymentMean " ,
330+ "/me/order/%d/pay " ,
340331 order .OrderId ,
341332 )
342- if err := config .OVHClient .Post (endpoint , paymentMeanOpts , nil ); err != nil {
333+ var paymentMethodOpts = & MeOrderPaymentMethodOpts {
334+ PaymentMethod : PaymentMethod {
335+ Id : paymentIds [0 ],
336+ },
337+ }
338+ if err := config .OVHClient .Post (endpoint , paymentMethodOpts , nil ); err != nil {
343339 return fmt .Errorf ("calling Post %s:\n \t %q" , endpoint , err )
344340 }
345341
0 commit comments