由于现在公司在做一个国外的项目
在线支付现在在做的是 Pay pal pro 的接口方式
用到了2种:
Direct Payment 和 Express Checkout
但是要是短短三天内看完文档并集成到系统中
我感觉还是有点紧
所以希望有做过的高人能够在这里提供点经验或是一些相关的代码
最好是自己在实际中用到的
或是用过的朋友遇到的问题以及解决方法
希望都能够贴在这里
这样我就可以少走弯路了
希望大家不要吝啬自己的经验!!
^_^
在线支付现在在做的是 Pay pal pro 的接口方式
用到了2种:
Direct Payment 和 Express Checkout
但是要是短短三天内看完文档并集成到系统中
我感觉还是有点紧
所以希望有做过的高人能够在这里提供点经验或是一些相关的代码
最好是自己在实际中用到的
或是用过的朋友遇到的问题以及解决方法
希望都能够贴在这里
这样我就可以少走弯路了
希望大家不要吝啬自己的经验!!
^_^
解决方案 »
- 如何页面加载完成后,等待5秒关闭某控件??
- asp 怎么设置 标记片段
- 那些控件不能在层中居中显示
- <asp:ServiceReference>标签
- (int) 和convert.int32 区别
- MessageBox.Show("对不起,标题不能为空", "浪曦提醒");
- Web服务器的问题
- ASP.NET打包请教!!!!!
- CS1502: 与“System.IO.StreamWriter.StreamWriter(System.IO.Stream, System.Text.Encoding)”最匹配的重载方法具有一些无效参数
- [帮忙看看][在线等待] 简单的SQL语句的问题!
- 数据绑定控件与DataTable进行绑定和与DataView有什么不同?
- 关于web页调用的处理
注册paypal账户
在控制面板去“商家工具”
里面有详细说明
只是三天的时间就用进去
担心有什么纰漏
毕竟这个和 dollar 扯上关系了
也会和我的 money 扯上关系
所以不敢随便
在里面可以建立测试账户买家和卖家
在程序中:
//using com.paypal.sdk.core.nvp;
//using com.paypal.sdk.core;
//using com.paypal.sdk.profiles;
//using com.paypal.sdk.util;
//using com.paypal.sdk.services;
//验证卖家信息,申请后激活开通就有这个了
IAPIProfile profile = ProfileFactory.createSignatureAPIProfile();
profile.APIUsername = "sdk-three_api1.sdk.com";
profile.APIPassword = "QFZCWN5HZM8VBG7Q";
profile.APISignature = "A21eW1ch..NEqJJ-glaLhqkBMlzeAsWqX0ycck-CTc0tKI4pa1u.rgNF";
profile.Environment = "sandbox";
// SSL 证书,还不会玩,只用上面的简单验证(签名方式)
//profile.CertificateFile = "sdk-seller.p12";
//profile.PrivateKeyPassword = "password";
TestConnection test = new TestConnection();
string result = test.testServerConnection(profile);
//测试链接,如果正常,应该是返回 successful
Response.Write("<hr/>"+result+"<hr/>");
NVPCallerServices caller = new NVPCallerServices();
caller.APIProfile = profile;
NVPCodec encoder = new NVPCodec();
encoder["METHOD"] = "DoDirectPayment";
encoder["PAYMENTACTION"] = "Authorization"; //or "Sale"
encoder["AMT"] = "99.99";
encoder["CREDITCARDTYPE"] = "Visa";
encoder["ACCT"] = "4595258908900506";
encoder["EXPDATE"] = "082018";
encoder["CVV2"] = "962";
encoder["FIRSTNAME"] = "John";
encoder["LASTNAME"] = "Doe";
encoder["STREET"] = "123 Fake St";
encoder["CITY"] = "Omaha";
encoder["STATE"] = "NE";
encoder["ZIP"] = "68104";
encoder["COUNTRYCODE"] = "US";
encoder["CURRENCYCODE"] = "USD"; string pStrrequestforNvp = encoder.Encode();
string pStresponsenvp = caller.Call(pStrrequestforNvp); NVPCodec decoder = new NVPCodec();
decoder.Decode(pStresponsenvp); string strAck = decoder["ACK"];
if (strAck != null && (strAck == "Success" || strAck == "SuccessWithWarning"))
{
string pStrResQue = "TRANSACTIONID=" + decoder["TRANSACTIONID"] + "<br>" +
"AMT=" + decoder["AMT"] + "<br>" +
"AVSCODE=" + decoder["AVSCODE"] + "<br>" +
"CVV2MATCH=" + decoder["CVV2MATCH"];
Response.Write(pStrResQue);
}
else
{
string pStrError = "ErrorCode=" + decoder["L_ERRORCODE0"] + "<br>" +
"Desc=" + decoder["L_SHORTMESSAGE0"] + "<br>" +
"Desc2=" + decoder["L_LONGMESSAGE0"];
Response.Write(pStrError);
}至此 DoDirectPayment 基本算是能够用了,不过
string pStresponsenvp = caller.Call(pStrrequestforNvp) 这个地方要等很长时间,看来还是得用 ajax 做一下,页面放个 waiting for proecessing...
贴出来希望做过这个的给个意见
接下来研究 Express Checkout
也希望大家能够帮一下!
http://www.sandbox.paypal.com/wsdl/PayPalSvc.wsdl
public void ProcessDirectPayment( PayPalInformation paypalinformation )//PayPalInformation 结构体类型,我写在一个操作类里。
{
DoDirectPaymentRequestType DoDirectPmtReqType = new DoDirectPaymentRequestType();
DoDirectPmtReqType.DoDirectPaymentRequestDetails = new DoDirectPaymentRequestDetailsType(); // set payment action DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentAction = PaymentActionCodeType.Sale; //set IP
DoDirectPmtReqType.DoDirectPaymentRequestDetails.IPAddress = HttpContext.Current.Request.UserHostAddress; DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard = new CreditCardDetailsType();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CreditCardNumber = paypalinformation.Order.CreditCard.Number; //信用卡号
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CreditCardType = (CreditCardTypeType)StringToEnum(typeof(CreditCardTypeType), paypalinformation.Order.CreditCard.CardType); DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CVV2 = paypalinformation.Order.CreditCard.SecurityCode;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.ExpMonth = paypalinformation.Order.CreditCard.ExpMonth;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.ExpYear = paypalinformation.Order.CreditCard.ExpYear; // Set the billing address 付款人的信息。
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CardOwner = new PayerInfoType();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.PayerName = new PersonNameType();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.PayerName.FirstName = paypalinformation.Order.EndUser.FirstName;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.PayerName.LastName = paypalinformation.Order.EndUser.LastName;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address = new AddressType();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.Street1 = paypalinformation.Order.CreditCard.Address.AddressLine;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.Street2 = paypalinformation.Order.CreditCard.Address.AddressLine2;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.CityName = paypalinformation.Order.CreditCard.Address.City;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.StateOrProvince = paypalinformation.Order.CreditCard.Address.State;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.PostalCode = paypalinformation.Order.CreditCard.Address.PostalCode;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.CountrySpecified = true;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.Country = CountryCodeType.US;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.CreditCard.CardOwner.Address.Phone = paypalinformation.Order.EndUser.ContactInformation.Phone; PaymentDetailsItemType[] itemArray = new PaymentDetailsItemType[paypalinformation.Order.OrderDetails.Products.Length];
PaymentDetailsItemType items = null; // Loop through all items that were added to the shopping cart.
for (int i = 0; i < paypalinformation.Order.OrderDetails.Products.Length; i++)
{
items = new PaymentDetailsItemType();
items.Amount = new BasicAmountType();
items.Amount.Value = paypalinformation.Order.OrderDetails.Products[i].Price.ToString();
items.Amount.currencyID = CurrencyCodeType.USD;
items.Quantity = paypalinformation.Order.OrderDetails.Products[i].Quantity.ToString(); //items.Tax = new BasicAmountType();
//items.Tax.Value = CalculationManager.CalcSalesTax( Convert.ToDecimal( items.Amount.Value ) ).ToString();
//items.Tax.currencyID = CurrencyCodeType.USD; items.Name = paypalinformation.Order.OrderDetails.Products[i].Name;
items.Number = paypalinformation.Order.OrderDetails.Products[i].ProductID.ToString(); itemArray.SetValue(items, i);
} // set payment Details
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails = new PaymentDetailsType();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.Custom = System.DateTime.Now.ToLongTimeString();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.OrderDescription = ""; DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.PaymentDetailsItem = new PaymentDetailsItemType[itemArray.Length];
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.PaymentDetailsItem = itemArray; for (int ii = 0; ii < itemArray.Length; ii++)
{
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.PaymentDetailsItem.SetValue(itemArray[ii], ii);
} // Order summary.
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.OrderTotal = new BasicAmountType();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.OrderTotal.currencyID = CurrencyCodeType.USD;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.OrderTotal.Value = paypalinformation.Order.OrderTotal.ToString();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.ShippingTotal = new BasicAmountType();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.ShippingTotal.currencyID = CurrencyCodeType.USD;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.ShippingTotal.Value = paypalinformation.Order.ShippingTotal.ToString();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.TaxTotal = new BasicAmountType();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.TaxTotal.currencyID = CurrencyCodeType.USD;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.TaxTotal.Value = paypalinformation.Order.Tax.ToString();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.ItemTotal = new BasicAmountType();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.ItemTotal.currencyID = CurrencyCodeType.USD;
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.ItemTotal.Value = paypalinformation.Order.SubTotal.ToString(); //set ship to address
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.ShipToAddress = new AddressType();
DoDirectPmtReqType.DoDirectPaymentRequestDetails.PaymentDetails.ShipToAddress.Name = paypalinformation.Order.EndUser.FirstName + " " + paypalinformation.Order.EndUser.LastName;
}
一小部分代码,里面有很多我自己写的公共层中的类,不能全部解释。希望对楼主有帮助。
希望能够给一些地址验证,支付金额验证的思路或是代码
再就是客户付款,我在后台该如何去取款?如果是 order,怎么去发货?