Siguiendo la guía en https://developer.paypal.com/webapps/developer/docs/integration/web/accept-paypal-payment/ , me han creado con éxito un pago y redirigir al usuario a aprobarlo.

La creación de pago es algo que ven como de abajo, y la guardo en la sesión del usuario para futuras consultas.

{
  "id": "PAY-6RV70583SB702805EKEYSZ6Y",
  "create_time": "2013-03-01T22:34:35Z",
  "update_time": "2013-03-01T22:34:36Z",
  "state": "created",
  "intent": "sale",
  "payer": {
    "payment_method": "paypal"
  },
  "transactions": [
    {
      "amount": {
        "total": "7.47",
        "currency": "USD",
        "details": {
          "subtotal": "7.47"
        }
      },
      "description": "This is the payment transaction description."
    }
  ],
  "links": [
    {
      "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y",
      "rel": "self",
      "method": "GET"
    },
    {
      "href": "https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=EC-60U79048BN7719609",
      "rel": "approval_url",
      "method": "REDIRECT"
    },
    {
      "href": "https://api.sandbox.paypal.com/v1/payments/payment/PAY-6RV70583SB702805EKEYSZ6Y/execute",
      "rel": "execute",
      "method": "POST"
    }
  ]
}

Después de que el usuario se aprobó el pago, Paypal te redirige al usuario a la return_url. Por ejemplo, http://<return_url>?token=EC-60U79048BN7719609&PayerID=7E7MGXCWTTKK2.

Con el fin de realizar el pago, una solicitud POST ha a hecho https://api.sandbox.paypal.com/v1/payments/payment/{payment_id}/execute/.

Pregunta

Las dos únicas piezas de la información proporcionada por Paypal en la dirección URL es token y PayerID. ¿Cómo puedo encontrar el correspondiente payment_id?

Posible Solución

La token es parte de la approval_url, analizar la dirección URL y el almacén de la token -> payment relación puede resolver el problema. Pero estoy en busca de una mejor solución que no requiere el análisis.

OriginalEl autor Greg Wang | 2013-08-31

5 Comentarios

  1. 10

    Creo que el de paypal documentación no está claro acerca de esto. Pero usted puede hacer algo simple para resolver el problema de pasar de PaymentID a través de un parámetro en la dirección url de retorno.

    Como este:
    return_url = ‘http://www.yourdomain.com/paypal/success/?paymentID=PAGAR-1234567

    Cuando el Paypal redirigir a su sitio, a continuación, se le devolverá el paymentID junto con los otros parámetros.


    Em português:

    Não acho que isso esteja claro na documentação hacer de Paypal. Un solução que la ue usei foi simples, ue passo o PaymentID como parâmetro na minha URL de retorno que informo para o Paypal. Assim, quando o Paypal redirecionar para meu site de volta ele matem o parâmetro com o PaymentID que eu tinha el passado.

    Creo que este es el mejor enfoque, el no uso de la paymentID pero un token aleatorio para conectar paypal llamada asincrónica. De esta manera usted puede separar el usuario de la sesión sin problema. Con python pirámide estoy creando el pago enviar el éxito url localhost:6543/payment_ok/….
    Sí Antonio, tienes razón! La verdad es que usted no tiene la paymentID antes de enviar la solicitud. A continuación, enviar un token aleatorio puede identificar la sesión del usuario.
    Esto no va a funcionar. La razón es que el ID de pago no es conocido HASTA DESPUÉS de que la dirección URL de retorno ya ha sido enviado a PayPal. Los recomendados en la actualidad la mejor práctica es la de almacenar el ID de pago en la sesión del usuario (sólo asegúrese de que la sesión no expirará antes de que el usuario devuelve PayPal o pago del registro es borrado). Habría sido mejor si PayPal había incluido el ID de pago además del pagador y del ID de token de transacción. No estoy segura de por qué se decidió omitirlo. Lo que es igualmente frustrante es que no lo menciona en su documentación.
    Sí usted no tiene la paymentID antes de enviar la solicitud

    OriginalEl autor Fernando Silva

  2. 5

    Usted tendría que recordar el ID de Pago en su lado (normalmente conectado con tu sesión de usuario – carrito de la compra o la orden o como una cookie de sesión) antes de redirigir al usuario a PayPal aprobación de la dirección url. Una vez que el se redirige de nuevo a su dirección de retorno junto con el PayerID – se tendría que extraer el PaymentID de tu sesión de usuario y realizar el Pago.

    no he encontrado una solución mejor que analizar y hacer algo como un arraystore vinculación CE-ficha de PAGO de TOKEN

    OriginalEl autor Praveen

  3. 1

    El Id de Pago puede ser obtenida en PHP mediante el método siguiente después de la primera solicitud de la API ha devuelto una respuesta correcta:

    $payment->getId();
    

    La línea de código de ejemplo (http://paypal.github.io/PayPal-PHP-SDK/sample/doc/payments/CreatePaymentUsingPayPal.html) muestra cómo enviar la solicitud, sin embargo no incluye el getId() método.

    Para averiguar esto, tuve que buscar en el descargado el SDK de archivos en el archivo sample\payments\CreatePayment.php que tiene el siguiente código de ejemplo que muestra el uso de este método:

    ResultPrinter::printResult('Create Payment Using Credit Card', 'Payment', $payment->getId(), $request, $payment);
    

    OriginalEl autor Andrew Van Duivenbode

  4. 0

    He encontrado este enlace, para ser extremadamente útil, en caso de que alguien quiere echarle un vistazo: https://github.com/paypal/PayPal-NET-SDK/issues/79

    Este post no es un real intento de responder a la pregunta. Por favor, tenga en cuenta que StackOverflow no funciona como un foro de discusión, es una P&Un sitio donde cada post es una pregunta o una respuesta a una pregunta. Los postes también puede tener comentarios – pequeñas frases como ésta, que puede ser utilizado para la crítica o la solicitud de aclaración de un autor. Este debe ser un comentario o un nueva pregunta

    OriginalEl autor Codet

  5. -1
    1. paymentid:

    Después de creado el pago, a cambio de un json, usted puede conseguir paymentid.
    como esta: “identificador”:”PAGAR-01K00482KX842131HKORKVKY”

    1. payerid:

    puede utilizar la API:GET /v1/pagos/pago/{paymentId} para obtener pagador id de usuario después de aprobado el pago,y usted encontrará payerid en volver json,como este:

    {
        "id":"PAY-01K00482KX842131HKORKVKY",
        "create_time":"2014-06-19T09:17:31Z",
        "update_time":"2014-06-19T09:17:31Z",
        "state":"created",
        "intent":"sale",
        "payer":{
                "payment_method":"paypal",
                "payer_info":{
                        "email":"[email protected]",
                        "first_name":"buyer",
                        "last_name":"samsung",
                        "payer_id":"H2DKRTTYWW8HS",
                        "shipping_address":{                                              "line1":"Lushan Road Num.188",                                              "line2":"JianYe",
                                                  "city":"Tucson",
                                                       "state":"AZ",   
                                                       "postal_code":"85715", 
                                                       "country_code":"US",
                                                        "recipientName":"buyer samsung"}}},
        "transactions":[{
                               "amount":{
                                            "total":"12.00",
                                            "currency":"USD",
                                            "details"{"subtotal":"12.00"}},
                     "description":"creating a payment"}],
        "links":[
                       {"href":"xxxxxxx","rel":"self","method":"GET"},
                  {"href":"xxxxxxx","rel":"approval_url","method":"REDIRECT"},
                  {"href":"xxxxxxx","rel":"execute","method":"POST"}]}
    
    Necesito el mismo número en checkout.php (ejecutado antes del pago) como en pay.php (ejecutado después del pago).. lo que se muestra aquí es sólo después de la parte…

    OriginalEl autor buming.yang

Dejar respuesta

Please enter your comment!
Please enter your name here