2017-05-14 6 views
0

私は2つのパートのフォームを持っています。パート1は電子メールアドレス、物理アドレスを要求します。パート2は、一度提出され、データは次のようになります。Authorize.net Hosted Paymentフォームプレフィルアドレスと電子メール情報

[name_first] => John 
[name_last] => Doe 
[email] => [email protected] 
[invoice] => 12345 
[price] => 35 
[address_street address] => PO Box 123 
[address_address line 2] => 
[address_city] => Anytown 
[address_state] => NY 
[address_zip] => 12345 
[address_country] => USA 

私は訪問者がそれを2回に記入する必要がないように、そして、ホストお支払いフォームに住所と請求書番号を事前入力します。私は、トークンを生成するAuth.netサンプルコードを使用していると私は支払い金額を渡すことができますが、私はどのように他のフォームを生成するためにデータを通過するのですか?

<?php 
     require dirname(__FILE__).'/../vendor/autoload.php'; 
     use net\authorize\api\contract\v1 as AnetAPI; 
     use net\authorize\api\controller as AnetController; 
     use net\authorize\api\constants as ANetEnvironment; 

     define("AUTHORIZENET_LOG_FILE", "phplog"); 

     function getAnAcceptPaymentPage($values = array()) 
     { 
     // Common setup for API credentials 
     $merchantAuthentication = new AnetAPI\MerchantAuthenticationType(); 
     $merchantAuthentication->setName('5KP3u95bQpv'); 
     $merchantAuthentication->setTransactionKey("xxxxxxxx"); 

     //create a transaction 
     $transactionRequestType = new AnetAPI\TransactionRequestType(); 
     $transactionRequestType->setTransactionType("authCaptureTransaction"); 
     $transactionRequestType->setAmount($values['price']); 

     echo '<P> :: ' . $transactionRequestType->getCustomer() . '</p>'; 

     // Set Hosted Form options 
     $setting1 = new AnetAPI\SettingType(); 
     $setting1->setSettingName("hostedPaymentButtonOptions"); 
     $setting1->setSettingValue("{\"text\": \"Pay\"}"); 

     $setting2 = new AnetAPI\SettingType(); 
     $setting2->setSettingName("hostedPaymentOrderOptions"); 
     $setting2->setSettingValue("{\"show\": true}"); 

     $setting3 = new AnetAPI\SettingType(); 
     $setting3->setSettingName("hostedPaymentReturnOptions"); 
     $setting3->setSettingValue("{\"url\": \"$values[receipt_url]\", \"cancelUrl\": \"$values[cancel_url]\", \"showReceipt\": true}"); 

     // Build transaction request 
     $request = new AnetAPI\GetHostedPaymentPageRequest(); 
     $request->setMerchantAuthentication($merchantAuthentication); 
     $request->setTransactionRequest($transactionRequestType); 

     $request->addToHostedPaymentSettings($setting1); 
     $request->addToHostedPaymentSettings($setting2); 
     $request->addToHostedPaymentSettings($setting3); 

     //execute request 
     $controller = new AnetController\GetHostedPaymentPageController($request); 
     $response = $controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX); 

     if (($response != null) && ($response->getMessages()->getResultCode() == "Ok")) 
     { 
      return $response->getToken()."\n"; 
     } 
     else 
     { 
      echo "ERROR : Failed to get hosted payment page token\n"; 
      $errorMessages = $response->getMessages()->getMessage(); 
      echo "RESPONSE : " . $errorMessages[0]->getCode() . " " .$errorMessages[0]->getText() . "\n"; 
     } 
     return $response; 
     } 

    ?> 

答えて

1

トークンをリクエストするときは、リクエストの「transactionRequest」要素に事前入力するものを含めます。

"transactionRequest": { 
       "transactionType": "authCaptureTransaction", 
       "amount": "25.00", 
       "customer": { 
        "email": "[email protected]" 
       }, 
       "billTo": { 
        "firstName": "John", 
        "lastName": "Jones", 
        "company": "Microsoft", 
        "address": "100 Sunrise Way", 
        "city": "Palm Springs", 
        "state": "CA", 
        "zip": "92234", 
        "country": "USA" 
       } 

ところで、私はあなたの本当のトランザクションキーではないことを願っています。それはあなたがそれを変更する必要があります。

+0

これはauth.netのサンプルコードに含まれているテストです – TH1981

+0

非常に良いです。 – NexusWebDevelopment

関連する問題