Я делаю DoCapture и использую идентификатор транзакции DoDirectPayment. Но каждый раз, когда я фиксирую платеж, он показывает «Недопустимый идентификатор транзакции». Это происходит, когда я пытаюсь захватить пейджмент из прямой оплаты кредитной карты, а также этот платеж по кредитной карте осуществляется с помощью метода DoDirectPayment. Но если вы делаете expressCheckout, перейдя на мою учетную запись PayPal и выполнив мою транзакцию, это также даст мне идентификатор транзакции. Если я зафиксирую платеж с использованием этого идентификатора транзакции, процесс оплаты завершится успешно! Я не знаю, что происходит! Пожалуйста, помогите мне выйти из проблемы! Я использую PayPal API версии 59.0 Мой пример кодаНедопустимый идентификатор транзакции в методе Docapture paypal api
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);
}
Спасибо заранее!
PAYMENTACTION должен быть Разрешение на DoCapture –
ооо удивительный! Отлично! теперь работает ! – Mushfiq