我正在使用DoCapture并使用DoDirectPayment的交易ID。但每当我捕获付款时,它都会显示“无效的交易ID”。当我尝试从直接信用卡付款中捕获一个peyment时,会发生这种情况,此信用卡付款也是通过DoDirectPayment方法进行的。 但是如果通过转到我的PayPal帐户并完成我的交易来表达快递,这也给了我交易ID。如果我使用此交易ID捕获付款,则付款流程成功完成!我不知道发生了什么!请有人帮我解决问题! 我正在使用PayPal API版本59.0 我的示例代码
Session["stage"] = ASPDotNetSamples.Constants.ENVIRONMENT; //SandBox Environment
//here my api credentials
SetProfile.SessionProfile = SetProfile.CreateAPIProfile(ASPDotNetSamples.Constants.API_USERNAME,
ASPDotNetSamples.Constants.API_PASSWORD, ASPDotNetSamples.Constants.API_SIGNATURE, "", "",
ASPDotNetSamples.Constants.ENVIRONMENT);
//NVPCallerServices caller = PayPalAPI.PayPalAPIInitialize();
//NVPCodec encoder = new NVPCodec();
com.paypal.sdk.services.NVPCallerServices caller = PayPalAPI.PayPalAPIInitialize();
NVPCodec encoder = new NVPCodec();
encoder["METHOD"] = "DoCapture";
encoder["TRXTYPE"] = "D";
encoder["AUTHORIZATIONID"] = authorization_id.; //the authrization id i got from the dodirectpayment
encoder["COMPLETETYPE"] = CompleteCodeType; //completecodetype is completed
double dAmount = Convert.ToDouble(actualAmount);
encoder["AMT"] = String.Format("{0:0.00}", dAmount);
string pStrrequestforNvp = encoder.Encode();
string pStresponsenvp = caller.Call(pStrrequestforNvp);
NVPCodec decoder = new NVPCodec();
decoder.Decode(pStresponsenvp);
string parentTransactionID = decoder["PARENTTRANSACTIONID"];
string strAck = decoder["ACK"];
if (strAck != null && (strAck == "Success" || strAck == "SuccessWithWarning"))
{
string pStrResQue = "AUTHORIZATIONID=" + decoder["AUTHORIZATIONID"] + "&" +
//"PAYMENTSTATUS=" + decoder["PAYMENTSTATUS"] + "&" +
"PAYMENTSTATUS=" + CompleteCodeType + "&" +
"AMT=" + decoder["AMT"] + "&" +
"TRANSACTIONID=" + decoder["TRANSACTIONID"];
// if Payment is done successfully
}
else
{
// if Payment is pending
string pStrError = "ErrorCode=" + decoder["L_ERRORCODE0"] + "&" +
"Desc=" + decoder["L_SHORTMESSAGE0"] + "&" +
"Desc2=" + decoder["L_LONGMESSAGE0"];
Response.Redirect("APIError.aspx?" + pStrError);
}
提前致谢!
答案 0 :(得分:0)
答案 1 :(得分:0)
见这个
com.paypal.sdk.services.NVPCallerServices caller = PayPalAPI.PayPalAPIInitialize();
NVPCodec encoder = new NVPCodec();
encoder["METHOD"] = "DoDirectPayment";
encoder["PAYMENTACTION"] = "Authorization";
//encoder["AMT"] = hfHoldAmount.Value.ToString();
encoder["AMT"] = hfHoldAmount.Value.ToString();
encoder["CREDITCARDTYPE"] = ddlCardType.SelectedValue;
encoder["ACCT"] = txtCardNnumber.Text.Trim();
encoder["EXPDATE"] = (ddlExpMonth.SelectedValue.Length == 1 ? "0" + ddlExpMonth.SelectedValue : ddlExpMonth.SelectedValue) + ddlExpYear.SelectedValue;
encoder["CVV2"] = txtCVCode.Text.Trim();
encoder["FIRSTNAME"] = txtFirstName.Text.Trim();
encoder["LASTNAME"] = txtLastName.Text.Trim();
encoder["STREET"] = txtAddress.Text.Trim();
encoder["CITY"] = txtCity.Text.Trim();
encoder["STATE"] = ddlStateProvince.Items.FindByValue(ddlStateProvince.SelectedValue).Text;
encoder["ZIP"] = txtZipCode.Text.Trim();
encoder["COUNTRYCODE"] = "US";
encoder["CURRENCYCODE"] = "USD";