paynetworx core support functions, core interface to paynetworx api (OLD) https://docs.paynetworx.com/reference/test-data/ https://payment-api-docs.paynetworx.com/overview/ https://payment-api-docs.paynetworx.com/ PayNetWorx ("PNX") also has an SDK that we will be integrating into the apps, which I assume will work just like Paynetworx, i.e., credit card or ACH info is captured in the app and sent to PNX, and they return a token. We will store the token (i.e. "patron_payment_profiles" table) and use it for subsequent transactions. Please start reviewing the API docs and then we will talk later today. -------------------------------------------------------------------------------- test env base url = https://api.qa.paynetworx.net/v0/ prod env base url = https://api.prod.paynetworx.net/v0/ -------------------------------------------------------------------------------- canabis conference in miami sdk for mobile was cc only and ach only for loading mobile wallet now, cc and/or ach for everything, switchable with enable* flags -------------------------------------------------------------------------------- Key Concepts Method of Communication Json Messages via TLS 1.2+ URLs. diff urls for test and production #KSUIDs uses KSUIDs (opens new window)(K-Sortable Unique IDentifiers) for all IDs. All KSUIDs are 27 character string implementations to remain HTTP compliant. #Request-ID Header This is a unique KSUID from the merchant and mandatory for each request. Request-ID is provided as a header by the merchant, it must be unique per request (but it should be repeated in the event that they have an error sending to us and are repeating the event as a whole). It exists almost entirely to allow for unique identification when they don't know if we got the request in the first place. #Content-Type Header This must be 'application/json'. #TransactionID TransactionID is generated by Paynetworx, and it uniquely identifies a 'transaction', so an AUTH and then a CAPTURE and then a REFUND might all have the same TransactionID, because they are referring to the same transaction. This is the only permitted way to identify an AUTH that you want to CAPTURE for example. #EventID EventID is like Request-ID, except that it is generated by Paynetworx. In the above example, the AUTH, the CAPTURE, and the REFUND will all have unique EventIDs, but the same TransactionID. There may be future events that are reported and which do not originate from the merchant. (Such as settlement events, chargebacks, that kind of thing). #Authentication with the Paynetworx Gateway #HTTP Basic Authentication The Paynetworx Payment API uses HTTP Basic Auth (opens new window)for all requests. Authentication tokens are generated at the time of merchant onboarding, usually relayed as an Access Token User and Access Token Password. #Authorization Header Depending on your API client abilities, you might need to provide the full Authorization header if you are not be able to provide the HTTP auth username and password (Access Token User and Access Token Password respectively). Syntax: Authorization: Basic The authorization parameter is a Base64 encoded concatenation of the Access Token User, :, Access Token Password. Example Authorization header with an Access Token User of 1fHfjpw86udrDQHRMKabypEmhY4 and an Access Token Password of 1fHfkJrOs7iVBnC07HDxCPZuPsK: Authorizaton: Basic MWZIZmpwdzg2dWRyRFFIUk1LYWJ5cEVtaFk0OjFmSGZrSnJPczdpVkJuQzA3SER4Q1BadVBzSw== Initial Setup and OnboardingKey Data Structures → ================================================================================ Skip to content Using Gmail with screen readers Conversations FW: Sandbox acct Inbox Dan Giacopelli Co-CEO | Ember Processing Office: +1.631.940.4052 Cell + Text: +1.516.848.5044 Email: dan@emberprocessing.com · Connect: LinkedIn Ember LICA 2022 Top Innovator ---------- Forwarded message --------- Along with the QA payment information Alex sent, below is information to connect to the TaaS (Terminals as a Service) solution. I am also attaching an TaaS API doc and flow chart to help understand the data flow. Let me know if you have any questions: QA Merchant ID: 2OhI269dkCqBVSJWgHhpIfG4LKs QA POS ID: EMBERPOS QA API Token: EMBER42340 QA POS Device Token: fbd535c3-0697-48c0-b22b-7999c64ef292 QA credentials attached. -------------------------------------- Card Payment Solutions & Business Services Card Payment Machines | Online Payment Gateway | Virtual Terminal | Cash Advance | Business Energy ================================================================================ dan.giacopelli@emberprocessing.com Nick Van Halderen Nickolas Van Halderen Senior Software Engineer nick@paynetworx.com phone : (903) 702-1008 www.paynetworx.com www.paynetworx.co.uk trent@paynetworx.com Mark Lewis mark.lewis@emberprocessing.com Co-CEO | Ember Processing Office: +1.561-208-1674 Ext 103 Cell + Text: +1.978.337.5279 mark@emberprocessing.com Connect: LinkedIn www.EmberProcessing.com - High Risk Accounts www.EmberServices.net - Traditional low risk accts Chris chris@paynetworx.com Alex Gage Jr. Software Engineer PayNetWorx O: (903) 708-5024 www.paynetworx.com www.paynetworx.co.uk alex.gage@paynetworx.com ============================================================================================== Ember Processing : QA Terminal 1 : Virtual Terminal https://payment-api-docs.paynetworx.com/ Entity KSUID: 2OhI269dkCqBVSJWgHhpIfG4LKs Device KSUID: 2OhI2Y6GFVQ4jU51BmPJnCQQWNB Access token user: 2OhI2VpxdwcLQ6KTB3JzNmOBDCB Access token password: 2OhI2UIbB08gYNVPxjA8bUEEkLS Parent entity name: Paynetworx Parent entity KSUID: 1qMKpZftfS5VFz4z6J5mIPScCki https://payment-api-docs.paynetworx.com/payments/AuthCapture.html#request-example-ecommerce ============================================================================================== Good talking with you both today. Here is a recap of the information you need to run payment tests through our QA payment API: Payment API Documentation: https://payment-api-docs.paynetworx.com/ QA Payment URL: https://api.qa.paynetworx.net/v0/ QA Payment Access Token Username: 2OhI2VpxdwcLQ6KTB3JzNmOBDCB QA Payment Access Token Password: 2OhI2UIbB08gYNVPxjA8bUEEkLS These are the access credentials for the test account: [base_url] => https://api.qa.paynetworx.net/v0/ [access_user] => 2OhI2VpxdwcLQ6KTB3JzNmOBDCB [access_password] => 2OhI2UIbB08gYNVPxjA8bUEEkLS Test Cards: 5204730000001003, 12/25, 321 4005529999000123, 12/31, 196 Tom, I've also set you up in our QA Dashboard so you can review transactions as you test. You should receive an invitation email from 'paynetworx.ninja'. If you run into any issues don't hesitate to reach out, Nick ============================================================================================== Username: tkirby2605@gmail.com Temporary Password: ?ed6IytWpnaQ YvsPnq1M7U2n7XDL invitation from 'paynetworx.ninja'. https://www.merchantportal-dev.paynetworx.ninja/ ============================================================================================== BALANCE Inquiry transactions request the related balance amount fields for the card through the appropriate card association. But there are no amounts in the response data. What does Balance do? ============================================================================================== wbapp getPaymentDetails getPaymentDetails.php (misnomer for getPaymentInfo) companion to setPaymentInfo? mix of gateway and payment-profile 'get' operations setPaymentInfo "D:\myJobs\Skoop\clone7\skooprewards7\wbapp\api\setPaymentInfo.php" "D:\myJobs\Skoop\clone7\skooprewards7\wbapp\api\setPaymentInfo.php.bak" "D:\myJobs\Skoop\clone7\skooprewards7\wbapp\api\setPaymentInfo-notes.txt" "D:\myJobs\Skoop\clone7\skooprewards7\wbapp\test_scripts\send_setPaymentInfo.php" -------------------------------------------------------------------------------- olo_app_api "D:\myJobs\Skoop\clone7\OLOSkoopRewards7\app\webroot\admin\olo_app_api\ OLOPaymentInformation olo_getpaymentinformation.php Gets payment information from authorizenet and usaepay, all others not supported. olo_updatepaymentinformation.php.v1 NOT USED replaced by olo_updatepaymentinformation.php olo_updatepaymentinformation.php handles OLOUpdatePaymentProfile THIS IS "PROBABLY" NOT USED BY THE APPS - so needs to be supported until a definite answer is available. test_scripts\send_oloPaymentInformation.php sends OLOPaymentInformation test xxxxxxxxxxx getpaymentinfo does not exist? getpaymentinformation olo_app_api ============================================================================================== Hi Melissa. 1. Customer API updated document 2. Set and Get Payment Info APIs to accept setting ACH details per store 3. New API treezProcessPayment 4. This is more for you, but Dan will be needed here as well. Planning of whether 1) we will include and 2) how we will implement following functionalities: - adding an order to our Orders table and returning it to the app via APIs GetOrderHistory and ViewOrder - marking an existing order as a favorite (and whether we should allow re-ordering it) - re-ordering an existing order (this is the most complex - if we're doing this, we need some Treez properties to be returned by API ViewOrder, then think about the cart creation, what would happen if a product is not available, etc...) Feel free to use the document with app questions I sent to Dan if you need any help with the app processes such as review order and re-order. ============================================================================================== Elena, Tom is working on the "treezProcessPayment" API and I am focused on the Customer API. You can expect to hear from Tom to coordinate with you. Tom is also working on the issue of GetOrderHistory. (list of order ticket id's) The server will return to you a list of ticket_id's that originated with Treez, and then you can retrieve the orders from them using their API method. For the Reorder issue, we will do the same thing. You will get ticket_id's from the server and use the Treez API to get the order details and repopulate the cart. You can work out the details with Tom re: server-side APIs required. ============================================================================================== Elena, has Dan discussed with you these three inputs to setPaymentInfo? preferred_payment_method, mp_funding_method, payment_type I see they have been added to the code, but without explanation. ============================================================================================== OLOPaymentInformation method - Gets payment information from authorizenet and usaepay, all others not supported. use_location_gateway different gateway for each store use_common_gateway same gateway for all stores (where is this stored?) ============================================================================================== can there be more than one favorite order? any max limit? do you want the treez-specific api methods to be extensions of wbapp, or in their own special treez api? or does it matter? ============================================================================================== paynetworx_base_url paynetworx_access_user paynetworx_access_password paynetworx_country_code paynetworx_currency_code $paynetworx = new PayNetworx( $gatewayInfo ); where is the gateway information stored (e.g. paynetworx_* above) by location/store/restaurant in restaurants table or by corporate gateway in communities table -------------------------------------------------------------------------------- function getgatewayinfo $com_row->use_location_gateways $com_row->use_common_gateway = this is present but rarely used zGateway.php function getGatewayInfo( $restaurantID=false ) { getGatewayInfo uses use_location_gateways gateway_functions.php function getGatewayInfoRewards( $id, $merchant_id='' ) { uses contents of MerchantId to switch, does not use_location_gateways used without merchant_id argument here: egift/process_payment.php -------------------------------------------------------------------------------- These are the 'amount' fields supported by Paynetworx. Total is the only one being used currently. Total decimal Total transaction amount Tip decimal Tip associated with the transaction (optional) Fee decimal Fee associated with the transaction (optional) Tax decimal Tax associated with the transaction (optional) Taxable decimal Tax associated with the transaction (optional) Shipping decimal Shipping associated with the transaction (optional) Duty decimal Duty associated with the transaction (optional) Discount decimal Discount associated with the transaction (optional) Currency string ISO 3-letter currency code -------------------------------------------------------------------------------- OLD TEST CARDS 5204730000001003, 12/25, 321 4005529999000123, 12/31, 196 NEW TEST CARDS (10/4/2024) Looks like that card is no longer active with MasterCard. Give this one a try: 5204910211482784 EXP: 12/25 CVV: 321 See if that is any better. MasterCard is the pickiest of the associations to test with as well, trying a different brand might get you more mileage: 4005529999000255 EXP: 12/31 CVV: 786 6011492100001000 EXP: 12/25 CVV: 123