エクスプレスチェックアウトを実装するために以下のWebサービスを使用しています
//Demo
https://www.sandbox.paypal.com/wsdl/PayPalSvc.wsdl
//Live
https://www.paypal.com/wsdl/PayPalSvc.wsdl
ベロブログのURLから助けてもらいました。
エラーは-応答オブジェクトで、xp-64ビット(ポートとiis6の両方)、window server 2008(iis7 32ビットモード)で同じコードを実行すると、「 resp.Token is null 」を取得しています
しかし、win-7 32ビットiis7およびポートで正常に実行されています(エラーなし、トークンはnullで値を取得しています)
私のコードは以下です。
protected void btnPaypal_Click(object sender, EventArgs e)
{
CustomSecurityHeaderType type = new CustomSecurityHeaderType();
type.Credentials = new UserIdPasswordType()
{
Username = "removed",
Password = "removed",
Signature = "removed"
};
SetExpressCheckoutRequestDetailsType sdt = new SetExpressCheckoutRequestDetailsType();
sdt.NoShipping = "1";
PaymentDetailsType pdt = new PaymentDetailsType()
{
OrderDescription = "Payment Details Sushant",
OrderTotal = new BasicAmountType()
{
currencyID = CurrencyCodeType.USD,
Value = "100.00"
}
};
sdt.PaymentDetails = new PaymentDetailsType[] { pdt };
sdt.CancelURL = "http://localhost/OAT/Default.aspx";
sdt.ReturnURL = "http://localhost/OAT/ExpressCheckoutSuccess.aspx";
SetExpressCheckoutReq req = new SetExpressCheckoutReq()
{
SetExpressCheckoutRequest = new SetExpressCheckoutRequestType()
{
SetExpressCheckoutRequestDetails = sdt,
Version = "60.0"
}
};
PayPalAPIAAInterfaceClient paypalAAInt = new PayPalAPIAAInterfaceClient();
var resp = paypalAAInt.SetExpressCheckout(ref type, req);
if (resp.Errors != null && resp.Errors.Length > 0)
{
// errors occured
throw new Exception("Exception(s) occured when calling PayPal. First exception: " +
resp.Errors[0].LongMessage + resp.Errors.Length.ToString());
}
// error is here.. that resp.Token is null on xp-64 bit port and iis6 both, but running fine on win-7 32 bit iis7 and port, and w
Response.Redirect(string.Format("{0}?cmd=_express-checkout&token={1}",
"https://www.paypal.com/cgi-bin/webscr", resp.Token));
}