Our application uses Uber API to book rides for users and charge an Uber Business Account for these rides. But a few weeks back, we received an error - The rider's payment method is invalid and they must update their billing info.. So, we updated the access token and payment method id for this rider, and rides were getting booked again. But they are not showing up in Uber Business Account anymore and only showing up in rider's personal account. Got it checked that none of the payment methods of these accounts have been revoked due to too many cancellations.
Also, while a ride is booked through Uber's native app from this rider's account, by choosing Business profile, the ride gets reflected in trips taken in Business Account.
It shows Business Profile selected in Uber's native app, when we book a ride through Uber API and pass payment method of Business Account, but the ride isn't reflected in Business Account.
Here is the request we are making -
Endpoint - https://api.uber.com/v1/requests
Headers - Authorization:Bearer <access token>
Content-Type:application/json
Body - {
"start_latitude": 30.7056149,
"start_longitude": 76.6895002,
"end_latitude": 30.7069548,
"end_longitude": 76.7080182,
"payment_method_id": "<payment method id for Business Account>",
"expense_memo": "Checking Ride on Business Account"
}
The response we are getting -
Body -
{
"status": "processing",
"product_id": "<uber product id>",
"request_id": "<uber ride request id>",
"driver": null,
"eta": null,
"location": null,
"vehicle": null,
"surge_multiplier": 1,
"shared": false
}
Is there something that has changed in taking rides through Business Profile using Uber API?
Related
I'm back with a paypal issue. I've managed to finally capture payments where I've set a platform_fee to be deducted from the total sale. It does deduct the set platform_fee from the amount that the seller receives (listed as platform fee). The completed transaction's response (as well as the GET order's response) show that the transaction fee was sent to the merchant_id of the marketplace platform's sandbox account. However it looks strange to me that the email address attached to it is correct except it is prefixed with "cs-".
Here's a snippet from the response when I capture the payment:
"payment_instruction": {
"platform_fees": [
{
"amount": {
"currency_code": "GBP",
"value": "50.00"
},
"payee": {
"email_address": "cs-sb-5ncon7179067#business.example.com",
"merchant_id": "3P2BRV2QKVZ22"
}
}
],
"disbursement_mode": "INSTANT"
},
Now, the money is all accounted for EXCEPT for the platform fee; I can't see it in my expected sandbox account. I've tried this on a fresh developer account/platform as well, with the same result. One of the accounts I've tried this on is also an approved paypal partner.
I've also tried changing the parameters (as it solved my previous issue) by setting the payee to email, to merchant id, and to default. It all points to the platform's sandbox account, but it doesn't appear in the wallet. I've also made sure my sellers are onboarded with the PARTNER_FEE feature.
Do you have an idea of where I can check this? I don't see it in the activities area of the sandbox account. Thank you.
In the sandbox environment, the partner fee disappears. It goes nowhere and you won't see it end up anywhere.
For the live environment, the partner fee does not go to the partner PayPal account. Rather, it goes directly to the bank account that the partner has set up for this settlement. Contact your partner relationship manager at PayPal for details on changing the bank if needed.
I am setting up a payment integration with PayPal Checkout Buttons and Paypal Orders API V2, which I test in the sandbox environment (no fancy shop system in use).
When an order is paid and status is completed, the Paypal Orders API V2 returns a valid response, but I do not completely receive the payer address from my sandbox buyer account.
Payer looks like this:
"payer": {
"name": {
"given_name": "<given_name>",
"surname": "<surname>"
},
"email_address": "<email>",
"payer_id": "HEU6X43KU231",
"address": {
"country_code": "DE"
}
}
but the payer definition says that the payer should also contain:
address_line_1,
address_line_2,
admin_area_1,
postal code
I would like to use this information to send an invoice to the customer after payment is completed.
First, I thought, the address information is not available in my sandbox buyer account, because you do not find this information in the paypal dashboard (in the details of the respective sandbox account), but the address information is available at https://www.sandbox.paypal.com/businessprofile/settings/address
The whole thing would work with a shipping address, but this look like conceptual mismatch. My order item has the "category": 'DIGITAL_GOODS' and I've set the "shipping_preference": 'NO_SHIPPING', because I sell a digital product, which is automatically delivered after the payment process.
As a workaround I could also ask for the address information in the dialog in our part of the order process (in our GUI, before checkout), and prefill the paypal payment dialog with the userdata entered in our GUI, but in terms of user experience I would prefer to use the paypal data.
Does someone have a clue how to receive the payer address data?
Thanks a lot in advance
I will get the documentation clarified.
But to just answer your question, by default the address of the payer is not shared, just the country_code - to get the complete payer.address you will need to call your account manager or merchant support and they can enable it for your account if you meet their criteria.
I'm trying to make a pay out to my service's users. I'm using Node.js SDK and choose Mass Payments to make automatical pay outs, since looks like it's only possible choise for me (user presses "withdraw" button inside mobile application, application sends request to our server and then our server makes call to PayPal NVP API to transfer money from our paypal account to user's paypal account). I'm making requests through NVP API.
PayPal responses with this error:
{
"TIMESTAMP": "2015-02-17T20:20:29Z",
"CORRELATIONID": "5a949b0257755",
"ACK": "Failure",
"VERSION": "2.3",
"BUILD": "15295733",
"L_ERRORCODE0": "10329",
"L_SHORTMESSAGE0": "User is blocked",
"L_LONGMESSAGE0": "We're sorry, but your PayPal account isn't currently eligible to send mass payments. Please contact either PayPal Customer Service or your account manager.",
"L_SEVERITYCODE0": "Error"
}
What are possible reasons for such error? Maybe I'm using not appropriate type of account for making mass payments? What kind of account should I have? Or maybe I'm just using not appropriate API for making pay outs?
UPD this error occures when I'm trying to use live paypal servers. On sandbox servers mass payment works completely fine.
I am moving from REST to classic API (and I'm new to both). As a developer, I want to record unique identifier of the payment to relate sales in site to Paypal payment IDs, such as in case I want to do refunds.
The REST API used to give me payment IDs in the return URL while classic API gives me transaction IDs in the response.
What is the difference? Or are they aliases to same resource? Is storing the PAYMENTINFO_0_TRANSACTIONID sufficient to lookup the payment?
Examples of both:
paymentId PAY-0CN62912EY171514DKSECBXA
PAYMENTINFO_0_TRANSACTIONID 4KY08572SD6526629
Web interface for merchant shows transaction IDs, never payment IDs:
PayPal Express Checkout Payment Received (Unique Transaction ID 4KY08572SD6526629)
Transaction ID is the identifier of PayPal transactions once it is completed, regardless of which API it comes from (Classic API, REST API, Adaptive Payment API etc). It will be issued if and only if the transaction has been completed.
In contrast, Payment ID is identifier of payment in REST API which does not necessarily indicates a completed payment. For example, let say you use REST API for PayPal payment with /v1/payments/payment endpoint:
POST /v1/payments/payment
{
"intent":"sale",
"redirect_urls":{
"return_url":"http://ashrafishak.com",
"cancel_url":"http://google.com"
},
"payer":{
"payment_method":"paypal"
},
"transactions":[
{
"amount":{
"total":"7.47",
"currency":"USD"
},
"description":"This is the payment transaction description."
}
]
}
You will receive Payment ID from the above request, but it is not completed yet since transaction ID is not issued. You need to execute the transaction using /v1/payments/payment//execute endpoint for it to be completed.
In your case, since you want to keep track of transaction for future refund, I think it is sufficient to just store Transaction ID.
***Transaction ID is the identifier of PayPal transactions once it is completed,it will be issued if and only if the transaction has been completed.
***Payment ID is identifier of payment which doesn't necessarily indicates a completed payment.
When querying the paypal sale get api I am receiving this from the sandbox. I am using a sandbox txn_id
{
"name":"INVALID_RESOURCE_ID",
"message":"The requested resource ID was not found",
"information_link":"https://developer.paypal.com/webapps/developer/docs/api/#INVALID_RESOURCE_ID",
"debug_id":"9daca12551fa8"
}
Am I using wrong Transaction id?
When receiving an IPN it is important to notice the "transaction_entity". This value will communicate what type of API call needs to get made, there are multiple types:
"auth", "sale", "capture", "refund", etc.
While this was a "sale" the transaction itself was only authorized, therefore I had to do an authorization api call. Not a Sale API call.