芝麻web文件管理V1.00
编辑当前文件:/home/royashxg/bit-alphas-ltd.com/user/project/vendor/authorizenet/authorizenet/doc/CIM.markdown
CIM API ======= Basic Overview -------------- The AuthorizeNetCIM class creates a request object for submitting transactions to the Authorize.Net CIM API. Creating a Customer Profile --------------------------- To create a new cusomter profile, first create a new AuthorizeNetCustomer object. ```PHP $customerProfile = new AuthorizeNetCustomer; $customerProfile->description = "Description of customer"; $customerProfile->merchantCustomerId = 123; $customerProfile->email = "user@domain.com"; ``` You can then create an add payment profiles and addresses to this customer object. ```PHP // Add payment profile. $paymentProfile = new AuthorizeNetPaymentProfile; $paymentProfile->customerType = "individual"; $paymentProfile->payment->creditCard->cardNumber = "4111111111111111"; $paymentProfile->payment->creditCard->expirationDate = "2015-10"; $customerProfile->paymentProfiles[] = $paymentProfile; // Add another payment profile. $paymentProfile2 = new AuthorizeNetPaymentProfile; $paymentProfile2->customerType = "business"; $paymentProfile2->payment->bankAccount->accountType = "businessChecking"; $paymentProfile2->payment->bankAccount->routingNumber = "121042882"; $paymentProfile2->payment->bankAccount->accountNumber = "123456789123"; $paymentProfile2->payment->bankAccount->nameOnAccount = "Jane Doe"; $paymentProfile2->payment->bankAccount->echeckType = "WEB"; $paymentProfile2->payment->bankAccount->bankName = "Pandora Bank"; $customerProfile->paymentProfiles[] = $paymentProfile2; // Add shipping address. $address = new AuthorizeNetAddress; $address->firstName = "john"; $address->lastName = "Doe"; $address->company = "John Doe Company"; $address->address = "1 Main Street"; $address->city = "Boston"; $address->state = "MA"; $address->zip = "02412"; $address->country = "USA"; $address->phoneNumber = "555-555-5555"; $address->faxNumber = "555-555-5556"; $customerProfile->shipToList[] = $address; // Add another shipping address. $address2 = new AuthorizeNetAddress; $address2->firstName = "jane"; $address2->lastName = "Doe"; $address2->address = "11 Main Street"; $address2->city = "Boston"; $address2->state = "MA"; $address2->zip = "02412"; $address2->country = "USA"; $address2->phoneNumber = "555-512-5555"; $address2->faxNumber = "555-523-5556"; $customerProfile->shipToList[] = $address2; ``` Next, create an AuthorizeNetCIM object: ```PHP $request = new AuthorizeNetCIM; ``` Finally, call the createCustomerProfile method and pass in your customer object: ```PHP $response = $request->createCustomerProfile($customerProfile); ``` The response object provides some helper methods for easy access to the results of the transaction: ```PHP $new_customer_id = $response->getCustomerProfileId(); ``` The response object also stores the XML response as a SimpleXml element which you can access like so: ```PHP $new_customer_id = $response->xml->customerProfileId ``` You can also run xpath queries against the result: ```PHP $array = $response->xpath('customerProfileId'); $new_customer_id = $array[0]; ``` Deleting a Customer Profile --------------------------- To delete a customer profile first create a new AuthorizeNetCIM object: ```PHP $request = new AuthorizeNetCIM; ``` Then call the deleteCustomerProfile method: ```PHP request->deleteCustomerProfile($customer_id); ``` Retrieving a Customer Profile ----------------------------- To retrieve a customer profile call the getCustomerProfile method: ```PHP $response = $request->getCustomerProfile($customerProfileId); ``` Validation Mode --------------- Validation mode allows you to generate a test transaction at the time you create a customer profile. In Test Mode, only field validation is performed. In Live Mode, a transaction is generated and submitted to the processor with the amount of $0.00 or $0.01. If successful, the transaction is immediately voided. To create a customer profile with Validation mode, simply pass in the a value for the validation mode parameter on the createCustomerProfile method: ```PHP $response = $request->createCustomerProfile($customerProfile, "testMode"); ``` You can access the validation response for each payment profile via xpath, the SimpleXML element or the getValidationResponses method: ```PHP $validationResponses = $response->getValidationResponses(); foreach ($validationResponses as $vr) { echo $vr->approved; } ``` Updating a Customer Profile --------------------------- Call the updateCustomerProfile method with the customerProfileId and customerProfile parameters: ```PHP $response = $request->updateCustomerProfile($customerProfileId, $customerProfile); ``` Adding a Payment Profile ------------------------ ```PHP $paymentProfile = new AuthorizeNetPaymentProfile; $paymentProfile->customerType = "individual"; $paymentProfile->payment->creditCard->cardNumber = "4111111111111111"; $paymentProfile->payment->creditCard->expirationDate = "2015-10"; $response = $request->createCustomerPaymentProfile($customerProfileId, $paymentProfile); ``` Updating a Payment Profile -------------------------- ```PHP $paymentProfile->payment->creditCard->cardNumber = "4111111111111111"; $paymentProfile->payment->creditCard->expirationDate = "2017-11"; $response = $request->updateCustomerPaymentProfile($customerProfileId,$paymentProfileId, $paymentProfile); ``` Adding a Shipping Address ------------------------- ```PHP $address = new AuthorizeNetAddress; $address->firstName = "john"; $address->lastName = "Doe"; $address->company = "John Doe Company"; $address->address = "1 Main Street"; $address->city = "Boston"; $address->state = "MA"; $address->zip = "02412"; $address->country = "USA"; $address->phoneNumber = "555-555-5555"; $address->faxNumber = "555-555-5556"; $response = $request->createCustomerShippingAddress($customerProfileId, $address); $customerAddressId = $response->getCustomerAddressId(); ``` Updating a Shipping Address --------------------------- ```PHP // Update shipping address. $address->address = "2 First Street"; $response = $request->updateCustomerShippingAddress($customerProfileId, $customerAddressId, $address); ``` Creating Transactions --------------------- ```PHP // Create Auth & Capture Transaction $transaction = new AuthorizeNetTransaction; $transaction->amount = "9.79"; $transaction->customerProfileId = $customerProfileId; $transaction->customerPaymentProfileId = $paymentProfileId; $transaction->customerShippingAddressId = $customerAddressId; $lineItem = new AuthorizeNetLineItem; $lineItem->itemId = "4"; $lineItem->name = "Cookies"; $lineItem->description = "Chocolate Chip"; $lineItem->quantity = "4"; $lineItem->unitPrice = "1.00"; $lineItem->taxable = "true"; $lineItem2 = new AuthorizeNetLineItem; $lineItem2->itemId = "4"; $lineItem2->name = "Cookies"; $lineItem2->description= "Peanut Butter"; $lineItem2->quantity = "4"; $lineItem2->unitPrice = "1.00"; $lineItem2->taxable = "true"; $transaction->lineItems[] = $lineItem; $transaction->lineItems[] = $lineItem2; $response = $request->createCustomerProfileTransaction("AuthCapture", $transaction); $transactionResponse = $response->getTransactionResponse(); $transactionId = $transactionResponse->transaction_id; ``` Voiding a Transaction --------------------- ```PHP $transaction = new AuthorizeNetTransaction; $transaction->transId = $transactionId; $response = $request->createCustomerProfileTransaction("Void", $transaction); ``` Deleting a Shipping Address --------------------------- ```PHP $response = $request->deleteCustomerShippingAddress($customerProfileId, $customerAddressId); ``` Deleting a Payment Profile -------------------------- ```PHP $response = $request->deleteCustomerPaymentProfile($customerProfileId, $paymentProfileId); ``` Getting Customer Profile IDs ---------------------------- ```PHP $response = $request->getCustomerProfileIds(); ```