PayPal Payflow: как подтвердить в одном запросе, а затем авторизовать в другом без сохранения информации CC?

Я создаю книжный магазин и строю кассу с помощью PayPal Payflow. Это процесс оформления заказа:

Shipping info --> Billing info |verify CC using Paypal| --> Order summary --> Submit |authorize CC using Paypal|

  1. Информация о доставке: заполните адрес доставки, здесь ничего особенного

  2. Платежная информация: укажите свой платежный адрес + данные кредитной карты. Не сохраняйте информацию о кредитной карте, так как это противоречит стандартам, вместо этого просто отправьте номер CC, дату истечения срока действия и CVV непосредственно в PayPal для проверки. PayPal одобряет.

  3. Сводка заказа: Заказ видит сводку своего заказа, прежде чем он отправит заказ. Он нажимает «Отправить», и в PayPal отправляется еще один запрос на авторизацию средств.

Однако информация CC исчезает после № 2, так как мне сохранить эти данные в № 3, чтобы я мог снова отправить их в PayPal?

Могу ли я просто использовать ORIGID, чтобы указать на PNREF? В документации сказано, что я должен сделать полный запрос со всем списком параметров (включая информацию о CC, CVV, дату и т. д.).

TRXTYPE=A&TENDER=C&PWD=x1y2z3&PARTNER=PayPal&VENDOR=SuperMerchant&USER=S uperMerchant&ACCT=5555555555554444&EXPDATE=0308&AMT=123.00&COMMENT1=Seco nd purchase&COMMENT2=Low risk customer&INVNUM=123456789&STREET=5199 MAPLE&ZIP=94588

Или я просто неправильно понимаю, что означает авторизация? Разве авторизация на самом деле не резервирует средства в СС пользователя? Так что этого не следует делать, пока пользователь не нажмет «Отправить заказ», верно?


person bigpotato    schedule 31.01.2014    source источник


Ответы (1)


Я понял.

Документация здесь: https://www.paypalobjects.com/webstatic/en_US/developer/docs/pdf/pp_payflowpro_guide.pdf

на стр. 40 кратко упоминается об этом, но не вдается в подробности об этом процессе оформления заказа, хотя он кажется довольно распространенным.

Мое предположение было верным в том, что я мог просто сначала выполнить запрос на проверку адреса со всей информацией CC и использовать возвращенный PNREF. Я сохраняю идентификатор PNREF в своем сеансе и повторно использую его для отправки запроса, который выглядит следующим образом:

def authorize_transaction(pnref)
  make_request(authorization_data(pnref))
end

def authorization_data(pnref)
  {
     "TRXTYPE" => "A",
     "TENDER" => "C",
     "USER" => PAYPAL_API["user"],
     "PWD" => PAYPAL_API["pwd"],
     "VENDOR" => PAYPAL_API["user"],
     "PARTNER" => "Paypal",
     "AMT" => purchase.total_price,
     "ORIGID" => pnref,
     "VERBOSITY" => "HIGH"
   }
end

И получить желаемый ответ:

{"РЕЗУЛЬТАТ"=>"0", "PNREF"=>"A10A6A9C08E1", "RESPMSG"=>"Одобрено", "AUTHCODE"=>"752PNI", "AVSADDR"=>"Y", "AVSZIP"= >"Y", "HOSTCODE"=>"A", "PROCAVS"=>"Y", "VISACARDLEVEL"=>"12", "TRANSTIME"=>"2014-01-31 11:53:56", "FIRSTNAME"=>"net", "LASTNAME"=>"теория", "AMT"=>"15.64", "ACCT"=>"1111", "EXPDATE"=>"0115", "CARDTYPE"=> "0", "ИАВС"=>"Н"}

person bigpotato    schedule 31.01.2014