Create a Apple Pay sale

Credentials

Creates a sale for Apple Pay. Send the buyer to sale_url, where PayMe's page shows Apple Pay, or pass payme_sale_id as saleGuid to instance.appleSale() to show Apple Pay on your own page: see Accept Apple Pay.

The seller needs the Apple Pay service: a seller installs it from the dashboard app store (חנות אפליקציות), and a partner enables it with vas-enable. Without it, the call fails with error 720.

Apple Pay pays in a single payment: more than one installments fails with error 351.

Auth: seller_payme_id in the body. Call it from your server, never from the browser. Base URL: https://sandbox.payme.io/api in the sandbox, https://live.payme.io/api in production.

This page lists the fields a wallet sale needs. generate-sale takes more optional fields, such as transaction_id, sale_callback_url and sale_return_url: see generate-sale.

Parameters

This endpoint takes no path, query or header parameters.

Request body

Content type: application/json

Field Type Required Description
seller_payme_id string yes The seller's PayMe ID (MPL).
sale_price integer yes Amount in minor units: 1000 = 10.00.
currency string yes ISO 4217 currency code, e.g. ILS.
product_name string yes What the payment is for.
sale_payment_method string yes apple-pay.
sale_type string no Default sale. See Sale Types.
language string no Language of the payment page and the error messages: he (default) or en.

Request example

{
  "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567",
  "sale_price": 1000,
  "currency": "ILS",
  "product_name": "Order 1234",
  "sale_payment_method": "apple-pay",
  "language": "en"
}

Code samples

curl

curl -X POST 'https://sandbox.payme.io/api/generate-sale' \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567",
  "sale_price": 1000,
  "currency": "ILS",
  "product_name": "Order 1234",
  "sale_payment_method": "apple-pay",
  "language": "en"
}'

Node.js

const response = await fetch("https://sandbox.payme.io/api/generate-sale", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567",
    "sale_price": 1000,
    "currency": "ILS",
    "product_name": "Order 1234",
    "sale_payment_method": "apple-pay",
    "language": "en"
  }),
});

console.log(await response.text());

Python

import requests

response = requests.post(
    "https://sandbox.payme.io/api/generate-sale",
    json={
        "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567",
        "sale_price": 1000,
        "currency": "ILS",
        "product_name": "Order 1234",
        "sale_payment_method": "apple-pay",
        "language": "en",
    },
)

print(response.text)

PHP

<?php

$body = <<<'BODY'
{
  "seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567",
  "sale_price": 1000,
  "currency": "ILS",
  "product_name": "Order 1234",
  "sale_payment_method": "apple-pay",
  "language": "en"
}
BODY;

$ch = curl_init('https://sandbox.payme.io/api/generate-sale');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => $body,
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

Responses

200 — The sale was created. (success)

Field Type Description
status_code number 0 on success.
sale_url string PayMe's payment page for this sale. It shows Apple Pay.
payme_sale_id string The sale's ID. Pass it to instance.appleSale() as saleGuid.
payme_sale_code number A short numeric sale code, for display only.
price number The amount, in minor units.
transaction_id string Your own order ID, if you sent transaction_id; otherwise empty.
currency string The sale's currency.
sale_payment_method string apple-pay.
{
  "status_code": 0,
  "sale_url": "https://sandbox.payme.io/sale/generate/SALE1655-3843870J-NTPYLJNW-SOWRLK9X",
  "payme_sale_id": "SALE1655-3843870J-NTPYLJNW-SOWRLK9X",
  "payme_sale_code": 1032526,
  "price": 1000,
  "transaction_id": "",
  "currency": "ILS",
  "sale_payment_method": "apple-pay"
}

400 — The request is invalid. For example, error 351 when installments is more than 1. (error)

Field Type Description
status_code number 1 for a failed request.
status_error_code number PayMe's error code. See Errors.
status_error_details string The error message, in the request's language.
status_additional_info string More detail when there is any, for example the field or the site that failed; otherwise null.
{
  "status_code": 1,
  "status_error_details": "Please verify installments amount",
  "status_additional_info": "installments are not allowed for apple-pay",
  "status_error_code": 351
}

500 — The request failed. For example, error 720 "The service was not activated" when the seller has no active Apple Pay service. (error)

Field Type Description
status_code number 1 for a failed request.
status_error_code number PayMe's error code. See Errors.
status_error_details string The error message, in the request's language.
status_additional_info string More detail when there is any, for example the field or the site that failed; otherwise null.
{
  "status_code": 1,
  "status_error_details": "The service was not activated",
  "status_additional_info": "apple-pay",
  "status_error_code": 720
}