рд╣рдо рдкреЗрдкреИрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреБрдЧрддрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ

рдкреЗрдкрд╛рд▓ рднреБрдЧрддрд╛рди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реА рд╕рд╛рдЗрдЯ рдХрд╛ рдПрдХреАрдХрд░рдг рд╕рдорд╛рдкреНрддред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЫреЛрдЯреА рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдереА - рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░реЛрдмреЛрдХреИрд╕рд╛ рд╕реЗ рднреБрдЧрддрд╛рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╕рдорд╛рди рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдкреЗрдкрд╛рд▓ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдПрдХреАрдХрд░рдг рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдФрд░ рд╕рдмрд╕реЗ рдмрдбрд╝реА "рдЬрдЯрд┐рд▓рддрд╛" рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдореМрдЬреВрджрд╛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред
рд╣рдорд╛рд░рд╛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:

рдирддреАрдЬрддрди, рдореЗрд░реЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░ рдЧрдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЫреЛрдЯреЗ рд╢реЙрд▓реНрд╕ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдЙрдирдХреЗ рдмрд┐рдирд╛)ред

рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП?




рдЪрд░рдг 1: рдкреЗрдкрд╛рд▓ рд╕реЗрдЯ рдХрд░реЗрдВ

рд╣рдо developer.paypal.com рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ ред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рдпрдорд┐рдд рдкреЗрдкрд╛рд▓ рдЦрд╛рддрд╛ рдЙрдкрдпреБрдХреНрдд рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВред

рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред рдЖрдкрдХреЛ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ: "рдЖрд╡реЗрджрди рд╡рд╛рдкрд╕реА URLред" рдпрд╣ рд╡рд╣ рдкрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдкреЗрдкрд╛рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рднреБрдЧрддрд╛рди (рдпрд╛ рд░рджреНрдж рдХрд░рдиреЗ) рдХреЗ рдмрд╛рдж рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдИрдбреА рдФрд░ рд╕реАрдХреНрд░реЗрдЯ рдкрд░ рднреА рдзреНрдпрд╛рди рджреЗрдВред рдпреЗ рд╡реЗ рдХреБрдВрдЬреА рд╣реИрдВ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреЗрдкрд▓ рдПрдкрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдЕрдзрд┐рдХреГрдд рдХрд░реЗрдЧрд╛ред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЦрд╛рддрд╛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдкрд░реАрдХреНрд╖рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдЦрд╛рддреЗ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ (рдЗрд╕рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╣рдо рдкрд░реАрдХреНрд╖рдг рднреБрдЧрддрд╛рди рдХрд░реЗрдВрдЧреЗ)ред рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рднреА рдкреИрджрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЪрд░рдг 2: рдЯреЗрд╕реНрдЯ рдЖрд╡реЗрджрди

рдПрд╕рдбреАрдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
Install-Package RestApiSDK 

рд╣рдо рдПрдХ рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдЦрд╛рд▓реА рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, QuickTests)ред рдФрд░ рд╣рдорд╛рд░реЗ рдЕрднреА рдмрдирд╛рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде Your_CLIENT_ID рдФрд░ Your_CLIENT_SECRET рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж , рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ ред рдХреЛрдб, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡ рдЧрд╛рдЗрдб рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рд░рдЦрд╛ рдФрд░ рдЗрд╕реЗ рд╕реБрдЦрдж рд░реВрдк рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд▓рд╛рдпрд╛ред

  var sdkConfig = new Dictionary<string, string> { { "mode", "sandbox" } }; string accessToken = new OAuthTokenCredential("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET", sdkConfig) .GetAccessToken(); var redirectUrls = new RedirectUrls { cancel_url = "http://localhost:11180/PayPalResult?cancel=true", return_url = "http://localhost:11180/PayPalResult?success=true" }; var amnt = new Amount { currency = "USD", total = "1" }; var createdPayment = new Payment { intent = "sale", payer = new Payer { payment_method = "paypal" }, transactions = new List<Transaction> { new Transaction { description = "Sample payment", amount = amnt }}, redirect_urls = redirectUrls} .Create(new APIContext(accessToken) { Config = sdkConfig }); var approvalUrl = createdPayment.links.Single(l => l.rel == "approval_url").href; var paymentId = createdPayment.id; Console.WriteLine(approvalUrl); Console.WriteLine(paymentId); 


рд╣рдо рдЕрдиреБрдореЛрджрди рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдкрд░реАрдХреНрд╖рдг рдЦрд╛рддреЗ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рднреБрдЧрддрд╛рди рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо http: // localhost: 11180 / PayPalResult рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ ; рд╕рдлрд▓рддрд╛ = рд╕рд╣реА рдФрд░ рдЯреЛрдХрди = EC-DSKFJDSKFJEO42AM рдФрд░ PayerID = DFKJDFKLGJEOR (рдпрд╣ рдЖрдкрдХреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ)

рд╣рдо рдЗрд╕ URL рд╕реЗ PayerID рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ PaymentId (рд╣рдордиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

  string payerID = "YOUR_PAYER_ID"; string paymentId = "YOUR_PAYMENT_ID"; var sdkConfig = new Dictionary<string, string> { { "mode", "sandbox" } }; string accessToken = new OAuthTokenCredential("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET", sdkConfig) .GetAccessToken(); var pymntExecution = new PaymentExecution { payer_id = payerID }; var payment = new Payment { id = paymentId } .Execute(new APIContext(accessToken) { Config = sdkConfig }, pymntExecution); 


рдпрд╣рд╛рдВ рдкреЗрдореЗрдВрдЯ.рд╕реНрдЯреИрдЯрд╕ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЬрд┐рд╕реЗ рдЕрдм "рдЕрдиреБрдореЛрджрд┐рдд" рдорд╛рди рдорд┐рд▓рд╛ рд╣реИред рд╣реБрд░реНрд░реЗ, рдкрд░реАрдХреНрд╖рд╛ рдЙрддреНрддреАрд░реНрдг рд╣реИ!
рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рд╣рдореЗрдВ рд░рд┐рдлрдВрдб рдПрдХ рдмрд┐рдХреНрд░реА (рдПрдкреАрдЖрдИ рд╕рдВрджрд░реНрдн) рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИред

рдЪрд░рдг 3: рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░реЗрдВ

рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдЖрд╡реЗрджрди рдореЗрдВ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рдЙрдирдХреЗ рдкрд╛рд╕ рдерд╛ред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рджреЛ рддрд░реАрдХреЛрдВ рдХреЗ рдмреАрдЪ рднреБрдЧрддрд╛рди рдЖрдИ рдХреЛ рдпрд╛рдж рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реА рдереАред рднреБрдЧрддрд╛рди рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рдХрд┐рд╕ рднреБрдЧрддрд╛рди рдХреЗ рддрд╣рдд рдпрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рднреБрдЧрддрд╛рди рд╣реИред рд╕рдм рдХреЗ рдмрд╛рдж, resultUrl рдореЗрдВ paypal, PayerID рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди PayerID рдХреЗ рд╕рд╛рде, рднреБрдЧрддрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЖрдк рдЗрд╕ рдорд╛рди рдХреЛ рдПрдХ рд╕рддреНрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рд▓реЗрдирджреЗрди рдХрд░рддрд╛ рд╣реИред

рдФрд░ рдЖрдк рдореБрд╢реНрдХрд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдЖрдк рднреБрдЧрддрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдИрдбреА рдЬреЗрдирд░реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреЗрдкрд╛рд▓ рдХреЛ рдЗрд╕ рдЖрдИрдбреА рдХреЛ ResultUrl рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣:
  var redirectUrls = new RedirectUrls { cancel_url = "http://localhost:11180/PayPalResult?cancel=true&InvoiceId={SOME_ID}", return_url = "http://localhost:11180/PayPalResult?success=true&InvoiceId={SOME_ID}" }; 

рдЗрд╕ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдмрдВрдзрд┐рдд рднреБрдЧрддрд╛рди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЖрдк рднреБрдЧрддрд╛рди рдХреЛ рддреБрд░рдВрдд RedirectUrls рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд╕реБрд░рдХреНрд╖рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реБрд░рдХреНрд╖рд╛ рдЧрд╛рд░реНрдб рдореЗрд░реЗ рд╕реЗ рдРрд╕рд╛ рд╣реИ, рд╢рд╛рдпрдж рдпреЗ рдореВрд▓реНрдп рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИрдВ рдФрд░ рдЙрдирд╕реЗ рдХреБрдЫ рднреА рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

рдирд┐рд╖реНрдХрд░реНрд╖

рд╡рд╣ рд╕рдм рд╣реИред рдЬрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдЙрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рдФрд░ рдЗрд╕ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЖрдПрдЧрд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЦреБрд▓реЗ рдПрдХреАрдХрд░рдг рдкреНрд░рд╢реНрди рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЙрдирдХрд╛ рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред

Source: https://habr.com/ru/post/In207446/


All Articles