X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=api%2Fv3%2FOrder.php;h=19b4eaefe2065075d74ce04eaeebd02781c1940b;hb=ac439a0617d2a9d7bf661b615928a6f50c3ad5a9;hp=a54104e598efe8388928e01d62ad9fd2b8553994;hpb=613ec726493e9959a15342f27178b6d2bb5a7740;p=civicrm-core.git diff --git a/api/v3/Order.php b/api/v3/Order.php index a54104e598..19b4eaefe2 100644 --- a/api/v3/Order.php +++ b/api/v3/Order.php @@ -1,27 +1,11 @@ 'blah', 'contribution_status_id' => 'Pending', 'api.Payment.create => ['total_amount' => 5]]"); } + if (!empty($params['line_items']) && is_array($params['line_items'])) { $priceSetID = NULL; CRM_Contribute_BAO_Contribution::checkLineItems($params); @@ -131,7 +116,17 @@ function civicrm_api3_order_create($params) { $params['line_item'][$priceSetID] = array_merge($params['line_item'][$priceSetID], $lineItems['line_item']); } } - $contribution = civicrm_api3('Contribution', 'create', $params); + $contributionParams = $params; + foreach ($contributionParams as $key => $value) { + // Unset chained keys so the code does not attempt to do this chaining twice. + // e.g if calling 'api.Payment.create' We want to finish creating the order first. + // it would probably be better to have a full whitelist of contributionParams + if (substr($key, 0, 3) === 'api') { + unset($contributionParams[$key]); + } + } + + $contribution = civicrm_api3('Contribution', 'create', $contributionParams); // add payments if ($entity && !empty($contribution['id'])) { foreach ($entityIds as $entityId) {