PayNearMe
The PayNearMe platform will be used by customers of the Merchant to make cash deposits at PayNearMe Retail Deposit Locations such as 7-Eleven, utilizing a printed or mobile phone-based PaySlip. The Customer will receive this PaySlip via SMS or email, or print the PaySlip directly.
Each PaySlip can be displayed directly on a smartphone or brought to any participating deposit location with cash to make a deposit. The Customer simply presents the PaySlip and tells the cashier how much to deposit, the cashier scans the PaySlip, and in real time PayNearMe sends PXP an (optional) Authorization Callback requesting the deposit be approved or declined.
PXP will query the merchant, and If the deposit is approved, the cash deposit is accepted. If the deposit is declined, messaging back to the Customer can be provided by way of receipt text which is printed at the register and handed to the Customer.
In either case PayNearMe sends a Confirmation Callback to PXP providing the details of the deposit (or decline). Following a successful deposit, the funds will be directed via ACH push into a US Bank Account. A settlement report provides a detailed record for each transaction contained in a given ACH deposit.
The following method IDs are covered in this section:
ID | Name | Credit/Debit State |
---|---|---|
182 | PayNearMeDeposit | DepositedByProvider (29) |
Payment method interaction type: Redirection to External Payment Provider (see Interaction Types) for voucher generation. Notification from external payment provider for payment.
Payment flow
Will be added later.
Backend2Backend Integration
Attention
In the course of the upgrade to support PayNearMe 3.0 the getPaymentInputDataRequest will be decommissioned and replace with a new call.
The following table contains the fields to be sent in the getPaymentInputDataRequest
xml section:
key (value type, account type, required) | value |
---|---|
paymentMethodID (string, required) | 182 |
SuccessURL (string) | SuccessURL |
CurrencyCode (string, required) | currency code |
CountryCode2 (string, required) | country code |
Step 1: getPaymentInputData
<?xml version="1.0" encoding="utf-8"?>
<getPaymentInputDataRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
<merchantID>Santosh_TestMerchant</merchantID>
<shopID>Santosh_TestShop</shopID>
<user>
<id>85491222-6bd1-4069-b6d9-84916c3e0e69</id>
<username>John Smith</username>
<firstname>John</firstname>
<lastname>Smith</lastname>
<currencyCode>USD</currencyCode>
<email>[email protected]</email>
<address>
<street>Broad Street</street>
<postalCode>30301</postalCode>
<city>Atlanta</city>
<state>Georgia</state>
<countryCode2>US</countryCode2>
<telephoneNumber>5627562233</telephoneNumber>
</address>
</user>
<paymentMethodID>182</paymentMethodID>
<details>
<data xsi:type="keyStringValuePair">
<key>PaymentDescription</key>
<value>A cool product</value>
</data>
<data xsi:type="keyStringValuePair">
<key>SuccessUrl</key>
<value>http://success</value>
</data>
<data xsi:type="keyStringValuePair">
<key>CurrencyCode</key>
<value>USD</value>
</data>
<data xsi:type="keyStringValuePair">
<key>CountryCode2</key>
<value>US</value>
</data>
</details>
</getPaymentInputDataRequest>
getPaymentInputDataResponse
<?xml version="1.0" encoding="utf-8"?>
<getPaymentInputDataResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
<paymentInputData>
<data xsi:type="keyStringValuePair">
<key>RedirectURL</key>
<value>https://example.com/PayNearMe/buy_now?order_currency=USD&order_is_standing=true&order_type=any&return_url=http%3a%2f%2fsuccess&site_customer_city=Atlanta&site_customer_email=johnsmith%40test.com&site_customer_identifier=85491222-6bd1-4069-b6d9-84916c3e0e69&site_customer_name=John+Smith&site_customer_phone=5627562233&site_customer_postal_code=30301&site_customer_state=Georgia&site_customer_street=&site_identifier=S2940939018&site_order_description=A+cool+product&site_order_identifier=14465115&timestamp=1558428447&version=2.0&signature=aaf198472c58b69f4abf81b72cb49d92</value>
</data>
</paymentInputData>
</getPaymentInputDataResponse>
Payment execution
When a payment is created, the merchant has to accept or deny the payment. Hence the payment is logged in the state NotifyPaymentStateRequestSentToMerchant:
The merchant is sent the following handlePaymentStateChangedNotificationRequest:
<handlePaymentStateChangedNotificationRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment xsi:type="paymentWithPaymentAccount">
<merchantID>B2BTestMerchant</merchantID>
<shopID>150001</shopID>
<paymentMethod>
<key>182</key>
<value>PayNearMeDeposit</value>
</paymentMethod>
<merchantTransactionID>0297aa1b-f886-4dfd-8c62-b242b77e5029</merchantTransactionID>
<paymentID>464e2550-b979-4ded-80c4-ce761c75cb5a</paymentID>
<userID>d539763a-52fc-4539-ad8d-6c4eb8dbf925</userID>
<paymentProvider>
<key>135</key>
<value>PayNearMe</value>
</paymentProvider>
<amount currencyCode="USD">10.0100</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>10.155.20.131</userIP>
<state>
<id>380acaad-3290-4b67-aaab-83e4a3c2b693</id>
<definition>
<key>232</key>
<value>Created</value>
</definition>
<createdOn>2019-05-21T10:21:11.453</createdOn>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderResponseMessage</key>
<value>
&amp;lt;t:payment_confirmation_response xsi:schemaLocation=&amp;quot;http://www.paynearme.com/api/pnm_xmlschema_v2_0 pnm_xmlschema_v2_0.xsd&amp;quot;
xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;
version=&amp;quot</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>true</isExecuted>
<baseAmount currencyCode="EUR">7.5200</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>f42deda0-6115-4c8f-9eca-81c64362608a</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderTransactionID</key>
<value>11601b1f-3</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>cd09191c-c613-4765-bd0d-01e3087162d3</paymentAccountID>
</paymentAccount>
</payment>
</handlePaymentStateChangedNotificationRequest>
The merchant can respond with either ProcessedSuccessfully or "NotAccepted*:
<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<resultCode>
<key xmlns="http://www.cqrpayments.com/PaymentProcessing">0</key>
<value xmlns="http://www.cqrpayments.com/PaymentProcessing">ProcessedSuccessfully</value>
</resultCode>
<resultMessage>Request processed by mock service</resultMessage>
</handlePaymentStateChangedNotificationResponse
<?xml version="1.0" encoding="utf-16"?>
<handlePaymentStateChangedNotificationResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<resultCode>
<key xmlns="http://www.cqrpayments.com/PaymentProcessing">1</key>
<value xmlns="http://www.cqrpayments.com/PaymentProcessing">NotAcceptedState</value>
</resultCode>
<resultMessage>Request processed by mock service</resultMessage>
</handlePaymentStateChangedNotificationResponse>
After the merchant has respond, the payment will go to the following states:
Merchant Response | State | Description |
---|---|---|
ProcessedSuccessfully | DepositedByProvider | Successful payment |
ProcessedSuccessfully | AbortedOnProvider | For Cash this could be the customer not having the right amount of cash with them and the clerk needs to void the transaction, for debit, this could be the customer is trying to pay more than their limit on their card. |
NotAcceptedState | AbortedOnProvider | Merchant has denied the payment and transaction is aborted. |
Notifications
The standard notification mechanism is used for notifying the merchant in the background (asynchronously) about payment state changes. For more information see PaymentStateChangedNotification.
Successful Payment Notification
<?xml version="1.0" encoding="utf-8"?>
<handlePaymentStateChangedNotificationRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cqrpayments.com/PaymentProcessing">
<payment xsi:type="paymentWithPaymentAccount">
<merchantID>B2BTestMerchant</merchantID>
<shopID>150001</shopID>
<paymentMethod>
<key>182</key>
<value>PayNearMeDeposit</value>
</paymentMethod>
<merchantTransactionID>0297aa1b-f886-4dfd-8c62-b242b77e5029</merchantTransactionID>
<paymentID>464e2550-b979-4ded-80c4-ce761c75cb5a</paymentID>
<userID>d539763a-52fc-4539-ad8d-6c4eb8dbf925</userID>
<paymentProvider>
<key>135</key>
<value>PayNearMe</value>
</paymentProvider>
<amount currencyCode="USD">10.0100</amount>
<creationType>
<key>1</key>
<value>User</value>
</creationType>
<userIP>10.155.20.131</userIP>
<state>
<id>380acaad-3290-4b67-aaab-83e4a3c2b693</id>
<definition>
<key>29</key>
<value>DepositedByProvider</value>
</definition>
<createdOn>2019-05-21T10:21:11.453</createdOn>
<paymentStateDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderResponseMessage</key>
<value>
&amp;lt;t:payment_confirmation_response xsi:schemaLocation=&amp;quot;http://www.paynearme.com/api/pnm_xmlschema_v2_0 pnm_xmlschema_v2_0.xsd&amp;quot;
xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;
version=&amp;quot</value>
</detail>
</paymentStateDetails>
</state>
<isExecuted>true</isExecuted>
<baseAmount currencyCode="EUR">7.5200</baseAmount>
<paymentDetails>
<detail xsi:type="keyStringValuePair">
<key>ProviderExternalID</key>
<value>f42deda0-6115-4c8f-9eca-81c64362608a</value>
</detail>
<detail xsi:type="keyStringValuePair">
<key>ProviderTransactionID</key>
<value>11601b1f-3</value>
</detail>
</paymentDetails>
<paymentAccount>
<paymentAccountID>cd09191c-c613-4765-bd0d-01e3087162d3</paymentAccountID>
</paymentAccount>
</payment>
</handlePaymentStateChangedNotificationRequest>
Updated over 4 years ago