/**
  * Process the purchase data and send to Payeezy
  *
  * @since 1.0
  * @return void
  */
 public function process_payment($purchase_data)
 {
     global $edd_options;
     $url = edd_is_test_mode() ? 'https://api-cert.payeezy.com/v1/transactions' : 'https://api.payeezy.com/v1/transactions';
     $payeezy = new Payeezy();
     $payeezy::setApiKey(edd_get_option('payeezy_api_key'));
     $payeezy::setApiSecret(edd_get_option('payeezy_api_secret'));
     $payeezy::setMerchantToken(edd_get_option('payeezy_token'));
     $payeezy::setUrl($url);
     $month = $purchase_data['card_info']['card_exp_month'];
     $month = $month > 9 ? $month : '0' . $month;
     // Payeezy requires two digits
     $year = substr($purchase_data['card_info']['card_exp_year'], -2);
     $card_type = edd_detect_cc_type($purchase_data['card_info']['card_number']);
     switch ($card_type) {
         case 'amex':
             $card_type = 'American Express';
             break;
     }
     $response = json_decode($payeezy->purchase(array('amount' => $purchase_data['price'], 'card_number' => $purchase_data['card_info']['card_number'], 'card_type' => $card_type, 'card_holder_name' => $purchase_data['card_info']['card_name'], 'card_cvv' => $purchase_data['card_info']['card_cvc'], 'card_expiry' => $month . $year, 'currency_code' => 'USD')));
     if ('failed' === $response->validation_status) {
         foreach ($response->Error->messages as $error) {
             edd_set_error($error->code, $error->description);
         }
         edd_send_back_to_checkout('?payment-mode=payeezy');
     } elseif ('success' === $response->validation_status) {
         if ('approved' === $response->transaction_status) {
             $payment_data = array('price' => $purchase_data['price'], 'date' => $purchase_data['date'], 'user_email' => $purchase_data['post_data']['edd_email'], 'purchase_key' => $purchase_data['purchase_key'], 'currency' => edd_get_currency(), 'downloads' => $purchase_data['downloads'], 'cart_details' => $purchase_data['cart_details'], 'user_info' => $purchase_data['user_info'], 'status' => 'pending');
             // record the pending payment
             $payment_id = edd_insert_payment($payment_data);
             edd_update_payment_status($payment_id, 'publish');
             edd_set_payment_transaction_id($payment_id, $response->transaction_id);
             // Empty the shopping cart
             edd_empty_cart();
             edd_send_to_success_page();
         } else {
             edd_set_error('payeezy_error', sprintf(__('Transaction not approved. Status: %s', 'edd-payeezy'), $response->transaction_status));
             edd_send_back_to_checkout('?payment-mode=payeezy');
         }
     }
 }
Пример #2
0
echo "<br><br> ";
echo "<div class='datagrid1'>";
echo "<table><thead><tr><th>authorize-capture Credit card </th></thead></tr>";
echo "<tbody><tr><td>capture Request: ";
$secondaryTxResponse_JSON = $payeezy->capture(setSecondaryTxPayload($authr->transaction_id, $authr->transaction_tag, $authr->amount));
echo "</td></tr>";
echo "<tr class='alt'><td>authorize-capture Response :";
echo $secondaryTxResponse_JSON;
echo "</td></tr><tbody></table>";
echo "</div>";
echo "<br><br> ";
echo "<h1> Purchase-void Transactions </h1>";
echo "<div class='datagrid2'>";
echo "<table><thead><tr><th>Purchase credit card transaction ' </th></tr></thead>";
echo "<tbody><tr><td>Request for Purchase: ";
$purchaseresponse = $payeezy->purchase(setPrimaryTxPayload());
echo "</td></tr>";
echo "<tr class='alt'><td>Purchase Response :";
echo $purchaseresponse;
echo "</td></tr></tbody> </table>";
echo "</div>";
echo "<br><br> ";
echo "<div class='datagrid2'>";
echo "<table><thead><tr><th> transaction_id and transaction_tag from previous transaction</th></tr></thead><tbody><tr><td> ";
$purchasetr = json_decode($purchaseresponse);
echo "transaction_id: " . $purchasetr->transaction_id;
echo "<br>";
echo "transaction_tag: " . $purchasetr->transaction_tag;
echo "</td></tr></tbody> </table>";
echo "</div>";
echo "<br><br> ";