Integrate MyBank using the Orders API

DocsCurrent

Last updated: Feb 18th, 3:37am

Render payment buttons and process payments with the Orders API.

Know before you code

  • Make sure you're subscribed to the following webhook events:
    • PAYMENT.CAPTURE.COMPLETED - Listen for this webhook to get notified about a successful order capture.
    • PAYMENT.CAPTURE.DENIED - This webhook tells you when an order capture fails.
  • Make sure your preference for receiving payments in your PayPal business or merchant account is set to accept and convert to the currency in your account. In your profile, select Account Settings > Payment preferences > Block payments and click Update to mark this preference.
  • When processing MyBank payments, you don't need to capture payment for the order.
1

Offer MyBank on the checkout page

You'll need to create the user interface to offer MyBank and collect the buyer's information, then you'll use the API calls described in the remainder of this topic to:

  • Create the order with MyBank as the payment source and buyer's full_name and country_code
  • Redirect the buyer to MyBank

Refer to Payment method icons for icons you can use and download locations.

2

Create an order

Use the buyer information you captured from your user interface to create an order with MyBank as the payment source.

API endpoint used: Create order

Modify the code

After you copy the code in the sample request, modify the following:

  • Access-Token - Your access token.
  • PayPal-Request-Id - Replace the sample ID with a unique ID you generate. This ID helps prevent duplicate authorizations in the event that the API call is disrupted. See also: API idempotency
  • intent - To use an alternative payment method, this parameter must be set to CAPTURE as it is in this sample code.
  • payment_source - Specify mybank as the payment method and include the country code and account holder's full name.
  • purchase_units: amount - Pass the amount of the order and the currency code.
  • processing_instruction - Set this value to ORDER_COMPLETE_ON_PAYMENT_APPROVAL as it is in this sample code.
  • application_context - Specify the preferred language for returned errors, the URL the buyer is returned to after approving the purchase with their selected payment method, and the URL the buyer is returned to after canceling an approval with their selected payment method. While return_url and cancel_url are optional fields, this integration requires you specify them to handle the handoff from the payment method back to your site. You can use the cancel_url to redirect buyers when an error occurs while they're on the payment method's site, so make sure your cancel URL works for that situation as well as an actual cancellation by the buyer.
  1. Sample request
  2. Sample response
1curl -v -X POST https://api-m.sandbox.paypal.com/v2/checkout/orders \
2-H 'PayPal-Request-Id: <PayPal-Request-Id>' \
3-H 'Authorization: Bearer <Access-Token>' \
4-H "Content-Type: application/json" \
5-d '{
6 "intent": "CAPTURE",
7 "payment_source": {
8 "mybank": {
9 "country_code": "IT",
10 "name": "John Doe"
11 }
12 },
13 "processing_instruction": "ORDER_COMPLETE_ON_PAYMENT_APPROVAL",
14 "purchase_units": [
15 {
16 "reference_id": "d9f80740-38f0-11e8-b467-0ed5f89f718b",
17 "amount": {
18 "currency_code": "EUR",
19 "value": "1.00"
20 }
21 }
22 ],
23 "application_context": {
24 "locale": "en-IT",
25 "return_url": "https://example.com/returnUrl",
26 "cancel_url": "https://example.com/cancelUrl"
27 }
28 }'

Step result

A successful request results in the following:

  • A return status code of HTTP 200 OK.
  • A JSON response body that contains the order ID. You'll use the order ID and payer-action HATEOAS URL in the next step. See also: HATEOAS links.
3

Redirect buyer for purchase approval

In your user interface, attach the payer-action redirect URL returned in the Create Order response to the MyBank payment button. This sends the buyer to their bank to approve the purchase. Once the buyer approves the purchase, the payment is automatically captured.

In the sample, the redirect URL is: "https://www.sandbox.paypal.com/payment/mybank?token=1BV95196WW992540E"

Step result

After successfully completing the bank approval:

  • The buyer is redirected to the return_url mentioned in the Create Order request.
  • The PAYMENT.CAPTURE.COMPLETED webhook event is triggered, which indicates that payment capture was successful.

After unsuccessful bank approval:

  • The buyer is redirected to the cancel_url mentioned in the Create Order request.
4

Listen to webhooks for payment status

Listen to the following webhooks to get the result of order capture:

  • The PAYMENT.CAPTURE.COMPLETED webhook event indicates a successful order capture.
  • The PAYMENT.CAPTURE.DENIED webhook events indicate a failed order capture.
  • Optional: Use Show order details endpoint to determine the status of an order.
    • The up HATEOAS link indicates the order associated with this capture.

See Subscribe to checkout webhooks for more information.

Here are some additional resources as you create webhook handler code:

  1. Sample PAYMENT.CAPTURE.COMPLETED webhook
  2. Sample CHECKOUT.ORDER.DENIED webhook
  3. Sample CHECKOUT.ORDER.DECLINED webhook
1{
2 "id": "WH-2B342482FC0449155-12X09416XP387753C",
3 "event_version": "1.0",
4 "zts": 1481046241,
5 "create_time": "2022-04-05T10:37:05Z",
6 "resource_type": "capture",
7 "resource_version": "2.0",
8 "event_type": "PAYMENT.CAPTURE.COMPLETED",
9 "summary": "Payment completed for EUR 1.00 EUR",
10 "resource": {
11 "amount": {
12 "value": "1.00",
13 "currency_code": "EUR"
14 },
15 "create_time": "2022-04-05T10:37:05Z",
16 "update_time": "2022-04-05T10:37:05Z",
17 "final_capture": true,
18 "seller_receivable_breakdown": {
19 "paypal_fee": {
20 "value": "0.20",
21 "currency_code": "EUR"
22 },
23 "gross_amount": {
24 "value": "1.00",
25 "currency_code": "EUR"
26 },
27 "net_amount": {
28 "value": "0.80",
29 "currency_code": "EUR"
30 }
31 },
32 "links": [
33 {
34 "method": "GET",
35 "rel": "self",
36 "href": "https://api-m.sandbox.paypal.com/v2/payments/captures/56U00550J8319094C"
37 },
38 {
39 "method": "POST",
40 "rel": "refund",
41 "href": "https://api-m.sandbox.paypal.com/v2/payments/captures/56U00550J8319094C/refund"
42 },
43 {
44 "method": "GET",
45 "rel": "up",
46 "href": "https://api-m.sandbox.paypal.com/v2/checkout/orders/1BV95196WW992540E"
47 }
48 ],
49 "id": "56U00550J8319094C",
50 "status": "COMPLETED"
51 },
52 "links": [
53 {
54 "href": "https://api-m.sandbox.paypal.com/v1/notifications/webhooks-events/WH-2B342482FC0449155-12X09416XP387753C",
55 "rel": "self",
56 "method": "GET"
57 },
58 {
59 "href": "https://api-m.sandbox.paypal.com/v1/notifications/webhooks-events/WH-2B342482FC0449155-12X09416XP387753C/resend",
60 "rel": "resend",
61 "method": "POST"
62 }
63 ]
64}

Alternatively, you can get the order capture result from the Show order details endpoint. 

A successful request returns the HTTP 200 OK status code with a JSON response body that returns a COMPLETED status.

  1. Sample request
  2. Sample response
1curl -v -X GET https://api-m.sandbox.paypal.com/v2/checkout/orders/1BV95196WW992540E \
2 -H "Content-Type: application/json" \
3 -H "Authorization: Bearer <Access-Token>"

Step result

A successfully captured order has the following:

  • The order status as COMPLETED, which means the order was captured successfully.
  • A capture with COMPLETED status is present in the response parameter purchase_units[0].payments.captures[0].
  • The up HATEOAS link indicates the order associated with this capture.
5

Notify buyer of payment success

After a successful payment, notify the buyer of a successful transaction. You can do this by sending a confirmation email.

Next steps

Required
Test integration

Test the integration in the PayPal sandbox environment.

Wenn Sie Cookies akzeptieren, verwenden wir diese, um Ihre Erfahrung zu verbessern und anzupassen und unseren Partnern zu ermöglichen, Ihnen personalisierte PayPal-Anzeigen zu zeigen, wenn Sie andere Websites besuchen. Cookies verwalten und mehr erfahren