== transaction.create ==
**Note: command is available on staging env only for now. It is supported by all CC processors (RG, AR, NB, PO).**
==== Description ====
Initialize and finish transaction in one command
==== Input Parameters ====
<table>
<tr><th>Name</th><th>Type</th><th>Required</th><th>Description</th></tr>
<tr><td>pp_type</td><td>(string)</td><td>yes</td><td>Payment processor type</td></tr>
<tr><td>tracking_order</td><td>(int)</td><td>no</td><td>Order ID to be tracked on client app.</td></tr>
<tr><td>tracking_user</td><td>(int)</td><td>yes</td><td>User ID to be tracked on client app.</td></tr>
<tr><td>tracking_tag</td><td>(int)</td><td>yes</td><td>Tag ID to be tracked on client app.</td></tr>
<tr><td>first_name</td><td>(string)</td><td>yes</td><td>First Name</td></tr>
<tr><td>last_name</td><td>(string)</td><td>yes</td><td>Last Name</td></tr>
<tr><td>zipcode</td><td>(string)</td><td>yes</td><td>User ZIP code</td></tr>
<tr><td>country</td><td>(string)</td><td>yes</td><td>Country abbr.</td></tr>
<tr><td>email</td><td>(string)</td><td>yes</td><td>User email address</td></tr>
<tr><td>ip</td><td>(string)</td><td>yes</td><td>IP address from which user is making the transaction</td></tr>
<tr><td>host</td><td>(string)</td><td>yes</td><td>Host form which user is making the transaction</td></tr>
<tr><td>currency</td><td>(string)</td><td>yes</td><td>Currency abbr.</td></tr>
<tr><td>order_type</td><td>(string)</td><td>no</td><td>Allowed values '' (empty string) and `xsale`. Determine if order is Cross Sale or not.</td></tr>
<tr><td>initial_order_hash</td><td>(string)</td><td>no</td><td>Use only in case of order_type = 'xsale'. Put hash from transation.init response of initial/basic order</td></tr>
<tr><td>return_url</td><td>(string)</td><td>no</td><td>Return URL (used for PayPal like PP's)</td></tr>
<tr><td>cancel_url</td><td>(string)</td><td>no</td><td>Cancel URL (used for PayPal like PP's)</td></tr>
<tr><td>items</td><td>(array)</td><td>yes</td><td>Array of items</td></tr>
<tr><td>pp_config</td><td>(array)</td><td>no</td><td>Merchand data params to override</td></tr>
<tr><td>card_number</td><td>(string)</td><td>yes</td><td>Credit Card Number</td></tr>
<tr><td>transaction_id</td><td>(string)</td><td>no</td><td>Can be used instead of Credit Card for repeated billing transactions</td></tr>
<tr><td>card_cvv2</td><td>(string)</td><td>yes</td><td>Credit Card CVV2</td></tr>
<tr><td>card_expire</td><td>(string)</td><td>yes</td><td>Credit Card Expiration date</td></tr>
<tr><td>xsale-descriptor</td><td>(string)</td><td>no</td><td>Force descriptor value (XS only)</td></tr>
<tr><td>step_down</td><td>(int)</td><td>no</td><td>Force step down procedure (start immediately with stepped down price)</td></tr>
</table>
items
<table>
<tr><th>Name</th><th>Type</th><th>Required</th><th>Description</th></tr>
<tr><td>trial_amount</td><td>float</td><td>no</td><td>Trial Amount</td></tr>
<tr><td>trial_unit</td><td>string (day|week|month|year)</td><td>no</td><td>Trial unit</td></tr>
<tr><td>trial_period</td><td>int</td><td>no</td><td>Trial period</td></tr>
<tr><td>amount</td><td>float</td><td>yes</td><td>rebill amount</td></tr>
<tr><td>rebill_unit</td><td>string (day|week|month|year)</td><td>yes</td><td>rebill unit</td></tr>
<tr><td>rebill_period</td><td>int</td><td>yes</td><td>rebill period</td></tr>
<tr><td>max_rebill_count</td><td>int</td><td>yes</td><td>max rebill count (-1 unlimited)</td></tr>
<tr><td>description</td><td>string</td><td>yes</td><td>Item description</td></tr>
</table>
pp_config
<table>
<tr><th>Name</th><th>Type</th><th>Required</th><th>Description</th></tr>
<tr><td>ppac_id</td><td>int</td><td>no</td><td>Merchant account id (defined for partner in payment app)</td></tr>
<tr><td>force_acc</td><td>int</td><td>no</td><td>**Rocket Gate** specific, if set it will set appropriate merchantAccount parameter for API call to Rocket Gate</td></tr>
<tr><td>force_mid</td><td>int</td><td>no</td><td>**Rocket Gate** specific, if set it will set appropriate merchantSiteID parameter for API call to Rocket Gate</td></tr>
</table>
==== Return ====
<table>
<tr><th>Name</th><th>Type</th><th>Description</th></tr>
<tr><td>result</td><td>array</td><td>Result array with data</td></tr>
</table>
==== Usage Example ====
```
{
"result": {
"code": 700,
"status": "Action completed successfully",
"command": "transaction.create",
"result": {
"hash": "1554909890217532c2fe3c75da8275e3",
"redirect": "",
"success": true,
"rg_avs_response": "",
"rg_cvv2_code": "",
"authNo": "422144",
"merchantInvoiceID": "M1_4153916_49356",
"merchantAccount": "2",
"approvedAmount": "1.0",
"cardLastFour": "1881",
"version": "1.0",
"merchantCustomerID": "M1_4153916",
"reasonCode": "0",
"retrievalNo": "100016a07da07af",
"payType": "CREDIT",
"cardHash": "3RPN+a+d07r0bOlq7NcWPKvzgcyyHmPxXw+hCxxmP6k=",
"cardDebitCredit": "1",
"cardDescription": "UNKNOWN",
"cardCountry": "CA",
"cardType": "VISA",
"bankResponseCode": "0",
"approvedCurrency": "PLN",
"guidNo": "100016A07DA07AF",
"cardExpiration": "0621",
"responseCode": "0",
"remote_tran_id": "100016A07DA07AF",
"payment_tran_id": 298906,
"rg_merchant_id": "1358984622",
"rg_customer_id": "M1_4153916",
"rg_reason_code": "0",
"rg_guid_no": "100016A07DA07AF",
"rg_cc_hash": "3RPN+a+d07r0bOlq7NcWPKvzgcyyHmPxXw+hCxxmP6k=",
"items_data": [
{
"item_id": "69312",
"tracking_item": "0"
}
],
"sub_ids": [
36214
],
"ppac_id": "74"
},
"request": {
"cmd": "transaction.create",
"data": {
"tracking_user": "4153916",
"tracking_tag": "14",
"tracking_item": "13084",
"first_name": "Jeremiah",
"last_name": "Hawn",
"street": "",
"city": "",
"state": "",
"zipcode": "92691",
"country": "US",
"email": "xstest426@xstest426.net",
"ip": "68.5.187.46",
"host": "68.5.187.46",
"currency": "PLN",
"items": [
{
"amount": "1",
"description": "$1.00USD - 1 Month Premium Membership Access||13084",
"max_rebill_count": "1",
"rebill_unit": "day",
"rebill_period": "30",
"trial_period": "30",
"trial_amount": "1.00",
"trial_unit": "day"
}
],
"pp_type": "RG",
"transaction_id": "297634"
},
"token": "dating-frontend-m1@staging",
"pass": "***"
},
"ts": 1554909890,
"origin_ip": "69.61.68.253",
"errors": null
}
}
```