Как мы должны передать информацию о корзине Amazon Checkout? - PullRequest
0 голосов
/ 30 ноября 2011

Я пытаюсь создать базовую реализацию проверки Amazon.Этот код был взят из моего контроллера.

public function amazAction()
{
    // Key from Amazon
    $merchant_id = 'xxxxx';
    $aws_access_key_id = 'xxxxx'; 
    $aws_secret_access_key = 'xxxxx';

    // Set up cart
    $form['aws_access_key_id'] = $aws_access_key_id;
    $form['currency_code'] = 'USD';
    $form['item_merchant_id_1'] = $merchant_id;
    $form['item_price_1'] = 10;
    $form['item_quantity_1'] = 1;
    $form['item_sku_1'] = 11;
    $form['item_title_1'] = test;
    ksort($form);

    // Encode order as string and calculate signature
    $order = '';
    foreach ($form as $key => $value) {
        $order .= $key . "=" . rawurlencode($value) . "&";
    }
    $form['merchant_signature'] = base64_encode(hash_hmac('sha1', $order, $aws_secret_access_key, true));

    // Return string with Amazon javascript and HTML form
    // Assumes you already have jQuery loaded elsewhere on page
    // URL's link to live site, not sandbox!
    $this->view->amazon_order_html = '<script type="text/javascript" src="https://images-na.ssl-images-amazon.com/images/G/01/cba/js/widget/widget.js"></script>
    <form target="_blank" method="post" action="https://payments-sandbox.amazon.com/checkout/' . $merchant_id . '">';
    foreach ( $form as $key => $value ) {   
        $this->view->amazon_order_html .= '<input type="hidden" name="' . $key . '" value="' . $value . '" />';
    }
    $this->view->amazon_order_html .= '<input alt="Checkout with Amazon Payments" src="https://payments-sandbox.amazon.com/gp/cba/button?ie=UTF8&color=orange&background=white&cartOwnerId=' . $merchant_id . '&size=large" type="image"></form>';
}

когда я запустил эту страницу, я получил следующую ошибку от amazon

Приносим извинения, но есть проблема сэтот заказ.Обратитесь напрямую к продавцу за помощью в оформлении заказа.

Как я могу исправить эту ошибку?Также мне нужно знать, как я могу передать сумму для цены со скидкой, название доставки и стоимость доставки в скрытых полях?

Добрый совет по этому вопросу

1 Ответ

1 голос
/ 23 марта 2012

Для доставки попробуйте добавить что-нибудь, что выдаст следующее:

<input type="hidden" name="shipping_method_price_per_shipment_amount_1" value="0.00" />
<input type="hidden" name="shipping_method_price_per_unit_rate_1" value="0.00" />
<input type="hidden" name="shipping_method_price_type_1" value="weight_based" />
<input type="hidden" name="shipping_method_region_1" value="world_all" />
<input type="hidden" name="shipping_method_service_level_1" value="standard" />

На основе вашего кода вы сможете добавить что-то вроде (измените, если необходимо):

$form['shipping_method_price_per_shipment_amount_1'] = 0.00;
$form['shipping_method_price_per_unit_rate_1'] = 0.00;
$form['shipping_method_price_type_1'] = 'weight_based';
$form['shipping_method_region_1'] = 'world_all';
$form['shipping_method_service_level_1'] = 'standard';

Я надеюсь, что это работает для вас ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...