很抱歉,我们现在无法完成您的付款。请稍后再试 - PayPal Payments Pro

时间:2015-05-07 16:10:50

标签: paypal paypal-sandbox

我已经实施了Website Payments Pro Hosted的IFrame版本。我使用按钮API注册我的按钮,取回一个网址,输入IFrame,向我显示PayPal信用卡付款或登录和付款选项。

登录和使用我的PayPal帐户时,我的集成工作正常,但当我输入信用卡详细信息时,我收到错误消息:

  

很抱歉,我们现在无法完成您的付款。请再试一次   后面。

我没有得到任何其他信息,这些信息和我的通知Url未被错误代码或其他任何内容触及。

这是我用来将网址提供给IFrame的代码(注意:我已经添加了帐单地址字段,因为我可能会抛出错误,因为我需要地址详细信息用卡支付。

public PayPalPaymentProRegistrationResponse RegisterTransaction(PayPalPaymentProRequest request)
{
    CountryCodeType countryCodeType;
    if (!Enum.TryParse(request.Order.BillingContact.Address.Country.Iso2Code, true, out countryCodeType))
        return new PayPalPaymentProRegistrationResponse(PayPalPaymentProRegistrationResponseType.Error, "Billing country not supported.");

    var service = new PayPalAPIInterfaceServiceService(GetConfig(request));
    var createButtonResponse = service.BMCreateButton(new BMCreateButtonReq
    {
        BMCreateButtonRequest = new BMCreateButtonRequestType
        {
            ButtonType = ButtonTypeType.PAYMENT,
            ButtonCode = ButtonCodeType.TOKEN,
            ButtonCountry = countryCodeType,
            ButtonVar = new List<string>
            {
                String.Format("subtotal={0}", _salesOrderPriceService.GetGrossTotal(request.Order)),
                String.Format("notify_url={0}", request.NotifyUrl),
                String.Format("return={0}", request.ReturnUrl),
                String.Format("invoice={0}", request.Order.Id),
                String.Format("currency_code={0}", request.Order.Currency.Code),
                String.Format("cancel_return={0}", request.CancelReturnUrl),
                "billing_first_name=my",
                "billing_last_name=name",
                "billing_address1=address 1",
                "billing_city=town",
                "billing_state=county",
                "billing_zip=PO CODE",
                "billing_country=GB",
                "showHostedThankyouPage=true",
                "template=templateD"
            }
        }
    });

    return new PayPalPaymentProRegistrationResponse
    {
        ForwardingUrl = createButtonResponse.Email,
        Status = PayPalPaymentProRegistrationResponseType.Ok
    };
}

注意:我使用的是信用卡号4111111111111111。如果我尝试使用其他一些号码4929000000006,则会返回一个不同的错误,说明该信息无效并突出显示信用卡号码字段,因此我对使用的测试号码有信心好的。

我正在使用我的Sandbox帐户进行集成。

有没有人对可能出现的问题有任何意见?

1 个答案:

答案 0 :(得分:2)

事实证明我用于SandBox的信用卡号码是错误的。您需要登录Sandbox帐户并查看配置文件。在此范围内,您将看到允许您测试的信用卡号。

我还在我的按钮请求中添加了"paymentaction=sale"

完成这两项工作后,现在需要付款。