开发者

PayPal Payment Provider in C#

I was wondering if PayPal has a payment service which allows the users to enter their credit card details on my site (the user wouldn't even be aware they are paying by paypal). I then need to make sure it handles repeat payments and refunds. Basically i need to create a paypal service which implements the following:

public interface IPaymentService {
    Response ValidateCard(NetworkCredential credential, int transactionID, deci开发者_如何学JAVAmal amount, string ipAddress, CardDetails cardDetails, Address billingAddress, Options options);
    Response RepeatCard(NetworkCredential credential, int oldTransactionID, int newTransactionID, decimal amount);
    Response RefundCard(NetworkCredential credential, int refundedTransactionID, int newTransactionID, decimal amount);
}

public class Address {
    public virtual string Address1 { get; set; }
    public virtual string Address2 { get; set; }
    public virtual string Address3 { get; set; }
    public virtual string Town { get; set; }
    public virtual string County { get; set; }
    public virtual Country Country { get; set; }
    public virtual string Postcode { get; set; }
}

public class CardDetails {
    public string CardHolderName { get; set; }
    public CardType CardType { get; set; }
    public string CardNumber { get; set; }
    public int ExpiryDateMonth { get; set; }
    public int ExpiryDateYear { get; set; }
    public string IssueNumber { get; set; }
    public string Cv2 { get; set; }
}

public class Response {
    public bool IsValid { get; set; }
    public string Message { get; set; }
}

public class Options {
    public bool TestStatus { get; set; }
    public string Currency { get; set; }
}

Usually this is quite trivual with other other payment providers eg PayPoint (soap service) and SagePay.

Reading the paypal documentation is giving me a headache so i thought i'd ask here. Really appreciate the help. Thanks


Yes they do. Check out this documentation.

The direct payment api allows you to enter the card holder's info and then process it through the paypal system.

https://www.paypal.com/cgi-bin/webscr?cmd=_dcc_hub-outside

//process payment
            Paypal toPayment = new Paypal();
            toPayment.BillingAddress = new Address(txt_BillingAddr1.Text, txt_BillingAddr2.Text, txt_BillingCity.Text, ddl_BillingState.SelectedValue, txt_BillingZip.Text, "");
            toPayment.BillingCountry = com.paypal.soap.api.CountryCodeType.US;
            toPayment.BillingFName = txt_BillingFName.Text;
            toPayment.BillingLName = txt_BillingLName.Text;
            toPayment.BillingMName = txt_BillingMName.Text;
            toPayment.BillingPhoneNumber = txt_BillingPhone.Text;
            toPayment.BillingSuffix = txt_BillingSuffix.Text;
            toPayment.ContactPhoneNumber = txtPhone.Text;
            toPayment.CreditCardExpireMonth = Convert.ToInt32(ddl_CCExpireMonth.SelectedIndex + 1);
            toPayment.CreditCardExpireYear = Convert.ToInt32(ddl_CCExpireYear.SelectedValue);
            toPayment.CreditCardNumber = txt_CreditCard.Text;
            toPayment.CreditCardSecurityCode = txt_CCID.Text;
            switch (lst_CCTypes.SelectedValue)
            {
                case "Visa":
                    toPayment.CreditCardType = com.paypal.soap.api.CreditCardTypeType.Visa;
                    break;
                case "MasterCard":
                    toPayment.CreditCardType = com.paypal.soap.api.CreditCardTypeType.MasterCard;
                    break;
                case "AmericanExpress":
                    toPayment.CreditCardType = com.paypal.soap.api.CreditCardTypeType.Amex;
                    break;
                case "Discover":
                    toPayment.CreditCardType = com.paypal.soap.api.CreditCardTypeType.Discover;
                    break;
            }
            toPayment.UserHostAddress = Request.UserHostAddress;
            toPayment.OrderTotal = StaticMethods.getDecimal(lbl_TotalPrice_cout.Text, 0);

            //set API Profile
            toPayment.APIProfile = Master.PayPal_API_Profile;

            DoDirectPaymentResponseType toResponse = new DoDirectPaymentResponseType();
            toResponse = toPayment.processDirectPaymentTransaction();

Here is a little bit more for you... this is actual code from an actual production site that i work on that takes payments via paypal

toResponse contains an Ack property.... so you can do something like

switch(toResponse.Ack)
{
case AckCodeType.Failure;
     // The card is bad. void transaction.
     lblResponse = toResponse.Errors[0].LongMessage;
     Break;
case AckCodeType.Success
     // The card is good.  Go forward with process
}


Yes, PayPal offers this under Website Payments Pro. You can read more about it here.

PayPal Payment Provider in C#

The first flow is of Direct Payment and second is Express Checkout. Customer enters card details on your website under Direct Payment.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜