简体   繁体   English

如何使用C#在Paypal中实现DoDirectPayment

[英]How to implement DoDirectPayment in paypal using c#

I am newbie to paypal. 我是贝宝的新手。 I want to implement direct payment api for my website. 我想为我的网站实施直接付款API。 Means i will be having a buy button when i click on that it will expand and in that iframe i will be having the url for paypal direct payment. 意味着当我单击它时,我将拥有一个购买按钮,它将扩展,在iframe中,我将拥有用于贝宝直接付款的网址。 I have written the code like 我写的代码像

     string address = "https://api-3t.sandbox.paypal.com/nvp?USER=user&COUNTRYCODE=US&ZIP=95131&STATE=CA&CITY=San Jose&FIRSTNAME=John&LASTNAME=Smith&STREET=1asfasdfSt&CVV2=123&ACCT=4683075410516684&IPADDRESS=192.168.0.62&PWD=1357635822&EXPDATE=042011&VERSION=58.0&SIGNATURE=signature&METHOD=DoDirectPayment&CREDITCARDTYPE=Visa&AMT=10.00&PAYMENTACTION=Sale&RETURNURL=http://returnurl&CANCELURL=http://cancnelurl";

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
        HttpWebResponse response2 = (HttpWebResponse)request.GetResponse();
        Stream stream = response2.GetResponseStream();
        StreamReader rdr = new StreamReader(stream);
        string req = rdr.ReadToEnd();

But the req contains the failure message. 但是req包含失败消息。 I don't know what credentials i am missing. 我不知道我缺少什么凭证。 Any help is appreciated. 任何帮助表示赞赏。

The error message states that its the expiry date thats the problem. 该错误消息指出其有效期限就是问题所在。

You are passing EXPDATE=042011 which looks to me like a date in the past. 您正在传递EXPDATE = 042011,在我看来,这就像过去的日期。

Edit: 编辑:

10500 Invalid Configuration This transaction cannot be processed due to an invalid merchant configuration. 10500无效的配置由于无效的商家配置,无法处理此交易。 Occurs when you have not agreed to the billing agreement. 在您尚未同意结算协议时发生。

10501 Invalid Configuration This transaction cannot be processed due to an invalid merchant configuration. 10501无效的配置由于无效的商家配置,无法处理此交易。

Occurs when the billing agreement is disabled or inactive. 在记帐协议被禁用或无效时发生。

As it was already mentioned, the error that you are getting is because pro is not enabled on the account you are using the credentials for. 如前所述,您收到的错误是因为您使用凭据的帐户未启用pro。 Express Checkout does not require any special billing agreement, this is why your Express Checkout calls were working. Express Checkout不需要任何特殊的计费协议,这就是为什么您的Express Checkout通话正常的原因。

I have enabled to pro service on your test sandbox account, and you should be able to test with it now. 我已经为您的测试沙箱帐户启用了Pro服务,您现在应该可以对其进行测试。

<html>
<head>
<title>PayPal Merchant SDK - DoDirectPayment API</title>
<link rel="stylesheet" href="../Common/sdk.css"/>
<script language="JavaScript">
    function generateCC(){
        var cc_number = new Array(16);
        var cc_len = 16;
        var start = 0;
        var rand_number = Math.random();

        switch(document.DoDirectPaymentForm.creditCardType.value)
        {
            case "Visa":
                cc_number[start++] = 4;
                break;
            case "Discover":
                cc_number[start++] = 6;
                cc_number[start++] = 0;
                cc_number[start++] = 1;
                cc_number[start++] = 1;
                break;
            case "MasterCard":
                cc_number[start++] = 5;
                cc_number[start++] = Math.floor(Math.random() * 5) + 1;
                break;
            case "Amex":
                cc_number[start++] = 3;
                cc_number[start++] = Math.round(Math.random()) ? 7 : 4 ;
                cc_len = 15;
                break;
        }

        for (var i = start; i < (cc_len - 1); i++) {
            cc_number[i] = Math.floor(Math.random() * 10);
        }

        var sum = 0;
        for (var j = 0; j < (cc_len - 1); j++) {
            var digit = cc_number[j];
            if ((j & 1) == (cc_len & 1)) digit *= 2;
            if (digit > 9) digit -= 9;
            sum += digit;
        }

        var check_digit = new Array(0, 9, 8, 7, 6, 5, 4, 3, 2, 1);
        cc_number[cc_len - 1] = check_digit[sum % 10];

        document.DoDirectPaymentForm.creditCardNumber.value = "";
        for (var k = 0; k < cc_len; k++) {
            document.DoDirectPaymentForm.creditCardNumber.value += cc_number[k];
        }
    }
</script>
</head>
<body>
    <div id="wrapper">
        <div id="header">
            <h3>DoDirectPayment</h3>
            <div id="apidetails">Process a credit card payment.</div>
        </div>
        <div id="request_form">     
            <form method="POST" action="DoDirectPayment.php"
                name="DoDirectPaymentForm">
                <div class="params">
                    <div class="param_name">Payment type</div>
                    <div class="param_value">
                        <select name="paymentType">
                            <option value="Sale" selected="selected">Sale</option>
                            <option value="Authorization">Authorization</option>
                        </select>
                    </div>
                </div>
                <div class="params">
                    <div class="param_name">First name</div>
                    <div class="param_value">
                        <input type="text" name="firstName" value="John"/>
                    </div>
                </div>
                <div class="params">
                    <div class="param_name">Last name</div>
                    <div class="param_value">
                        <input type="text" name="lastName" value="Doe"/>
                    </div>
                </div>          
                <div class="params">
                    <div class="param_name">Card type</div>
                    <div class="param_value">
                        <select name="creditCardType"
                            onChange="javascript:generateCC(); return false;">
                                <option value="Visa" selected="selected">Visa</option>
                                <option value="MasterCard">MasterCard</option>
                                <option value="Discover">Discover</option>
                                <option value="Amex">American Express</option>
                        </select>               
                    </div>
                </div>
                <div class="params">
                    <div class="param_name">Card number</div>
                    <div class="param_value">
                        <input type="text" size="19" maxlength="19" name="creditCardNumber">
                    </div>
                </div>
                <div class="params">
                    <div class="param_name">Expiry date</div>
                    <div class="param_value">
                        <select name="expDateMonth">
                            <option value="01">01</option>
                            <option value="02">02</option>
                            <option value="03">03</option>
                            <option value="04">04</option>
                            <option value="05">05</option>
                            <option value="06">06</option>
                            <option value="07">07</option>
                            <option value="08">08</option>
                            <option value="09">09</option>
                            <option value="10">10</option>
                            <option value="11">11</option>
                            <option value="12">12</option>
                        </select>
                        <select name="expDateYear">                 
                            <option value="2013">2013</option>
                            <option value="2014" selected>2014</option>
                            <option value="2015">2015</option>
                            <option value="2016">2016</option>
                            <option value="2017">2017</option>
                            <option value="2018">2018</option>
                            <option value="2019">2019</option>
                            <option value="2020">2020</option>                      
                        </select>
                    </div>
                </div>
                <div class="params">
                    <div class="param_name">CVV</div>
                    <div class="param_value">
                        <input type="text" size="3" maxlength="4" name="cvv2Number" value="962">
                    </div>
                </div>
                <div class="params">
                    <div class="param_name">Amount</div>
                    <div class="param_value">
                         <input type="text" size="5" maxlength="7" name="amount" value="1.00"> USD
                    </div>
                </div>              
                <div class="section_header">Billing address</div>
                <div class="params">
                    <div class="param_name">Address 1</div>
                    <div class="param_value">
                        <input type="text" size="25" maxlength="100" name="address1" value="1 Main St">
                    </div>
                </div>
                <div class="params">
                    <div class="param_name">Address 2 (optional)</div>
                    <div class="param_value">
                        <input type="text" size="25" maxlength="100" name="address2" value="">
                    </div>
                </div>
                <div class="params">
                    <div class="param_name">City</div>
                    <div class="param_value">
                        <input type="text" size="25" maxlength="40" name="city" value="San Jose">
                    </div>
                </div>
                <div class="params">
                    <div class="param_name">State</div>
                    <div class="param_value">
                        <select id=state name="state">
                            <option value=""></option>
                            <option value="AK">AK</option>
                            <option value="AL">AL</option>
                            <option value="AR">AR</option>
                            <option value="AZ">AZ</option>
                            <option value="CA" selected>CA</option>
                            <option value="CO">CO</option>
                            <option value="CT">CT</option>
                            <option value="DC">DC</option>
                            <option value="DE">DE</option>
                            <option value="FL">FL</option>
                            <option value="GA">GA</option>
                            <option value="HI">HI</option>
                            <option value="IA">IA</option>
                            <option value="ID">ID</option>
                            <option value="IL">IL</option>
                            <option value="IN">IN</option>
                            <option value="KS">KS</option>
                            <option value="KY">KY</option>
                            <option value="LA">LA</option>
                            <option value="MA">MA</option>
                            <option value="MD">MD</option>
                            <option value="ME">ME</option>
                            <option value="MI">MI</option>
                            <option value="MN">MN</option>
                            <option value="MO">MO</option>
                            <option value="MS">MS</option>
                            <option value="MT">MT</option>
                            <option value="NC">NC</option>
                            <option value="ND">ND</option>
                            <option value="NE">NE</option>
                            <option value="NH">NH</option>
                            <option value="NJ">NJ</option>
                            <option value="NM">NM</option>
                            <option value="NV">NV</option>
                            <option value="NY">NY</option>
                            <option value="OH">OH</option>
                            <option value="OK">OK</option>
                            <option value="OR">OR</option>
                            <option value="PA">PA</option>
                            <option value="RI">RI</option>
                            <option value="SC">SC</option>
                            <option value="SD">SD</option>
                            <option value="TN">TN</option>
                            <option value="TX">TX</option>
                            <option value="UT">UT</option>
                            <option value="VA">VA</option>
                            <option value="VT">VT</option>
                            <option value="WA">WA</option>
                            <option value="WI">WI</option>
                            <option value="WV">WV</option>
                            <option value="WY">WY</option>
                            <option value="AA">AA</option>
                            <option value="AE">AE</option>
                            <option value="AP">AP</option>
                            <option value="AS">AS</option>
                            <option value="FM">FM</option>
                            <option value="GU">GU</option>
                            <option value="MH">MH</option>
                            <option value="MP">MP</option>
                            <option value="PR">PR</option>
                            <option value="PW">PW</option>
                            <option value="VI">VI</option>
                        </select>
                    </div>
                </div>
                <div class="params">
                    <div class="param_name">Zip code</div>
                    <div class="param_value">
                        <input type="text" size="10" maxlength="10" name="zip" value="95131"> (5 or 9 digits)
                    </div>
                </div>
                <div class="params">
                    <div class="param_name">Country</div>
                    <div class="param_value">
                        <input type="text" size="10" maxlength="10" name="country" value="US">
                    </div>
                </div>
                <div class="params">
                    <div class="param_name">Phone</div>
                    <div class="param_value">
                        <input type="text" size="10" maxlength="10" name="phone" value="">
                    </div>
                </div>
                <div class="params">
                    <div class="param_name">IPN listener URL</div>
                    <div class="param_value">
                        <input type="text" size="80" maxlength="200" name="notifyURL" value="">
                    </div>
                </div>

                <div class="params">
                    <div class="param_name"></div>
                    <div class="param_value">
                    </div>
                </div>
                <div class="submit">
                    <input type="submit" name="DoDirectPaymentBtn"
                        value="DoDirectPayment" />
                </div>                          
            </form>
            <a href="../index.php">Home</a>
        </div>
    </div>
    <script language="javascript">
        generateCC();
    </script>
</body>
</html>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM