0

我想制作一个网站小部件,可以让访问者向开发者的星巴克卡捐款(类似于 PayPal 捐款小部件)。我最初的幼稚实现是将用户带到星巴克的 eGift 页面,然后使用 JavaScript 自动填充大部分表单。但是,这将被视为跨站点脚本。

我是否有一种可接受的方式将数据发送到 Starbucks eGift 表单并完成我想要的?还是有其他可行的方法?一位同事提到了 PayPal API,但我不确定它是否可以用来重新加载星巴克卡。

要求:

  • 捐赠者应该能够单击小部件,输入他们的姓名/电子邮件地址(可选?)、PayPal 或帐户信息,以及他们想要捐赠的金额,然后卡将被重新加载。
4

1 回答 1

3

您可以使用以下代码执行此操作:

<div id="starbucks_container">
    <form action="https://www.starbucks.com/card/reload/one-time" class="AjaxForm required_form payment-method region size2of3" id="OneTimeReload" method="post" novalidate="novalidate">
        <input class="field_large numbers card-number required numeric" id="Card_Number" maxlength="16" name="Card.Number" title="Card Number | This 15- or 16-digit number is on the front of your card. Please enter it without spaces." type="hidden" value="6069262396927591">
        <label for="Reload_Amount">Reload Amount</label>
        <br/>
        <span class="numbers">$</span>
        <input class="field_xxsmall align_right numbers" data-validation-max="100" data-validation-min="10" id="Reload_Amount" maxlength="3" name="Reload.Amount" title="Please enter an amount." type="text" value="10">
        <input id="paymentOptionHidden" name="paymentOptionHidden" type="hidden" value="CreditCard">
        <br/>
        <label for="card-type-paypal">
            <input class="credit-card radio" id="card-type-paypal" name="paymentOption" type="radio" value="PayPal">
            PayPal
        </label>
        <br/>
        <label for="card-type-options">
            <input checked="checked" class="credit-card radio" id="card-type-options" name="paymentOption" type="radio" value="CreditCard">
            Credit/Debit Card
        </label>
        <input type="hidden" name="step" value="1">
        <br/>
        <button type="submit">Reload Card</button>
    </form>
</div>

只需将卡号替换为您自己的卡号即可。

此外,我为此制作了一个 Wordpress 小部件:http ://wordpress.org/extend/plugins/starbucks-reload/

编辑 - 网址从https://www.starbucks.com/card/manage/guest-reload更改为https://www.starbucks.com/card/reload/one-time

于 2012-09-12T13:00:39.910 回答