Payment method nonces expire after 24 hours in Brain Tree - braintree

We are making a bidding app in which highest bid will commit but after the completion of auction time (suppose 2 days).
As user may have provided me Payment method nonce 48 hours ago, than I have to save nonce and commit after 48 hours. Is there any solution to handle it?

Finally with help of Braintree Support I find a way to handle this. Payment method nonce actually expires after 24 hours but there is an alternate way to use payment method token instead of payment method nonce to commit transaction after desired time. I'm working on Rails.
First, create a customer with given payment method nonce from client
result = Braintree::Customer.create(
:first_name => "Faisal",
:last_name => "Iqbal",
:payment_method_nonce => 'fake-valid-nonce' )
It will create a customer on vault of your Braintree account and generate a payment_method_token, you can get it as
token_generated=result.customer.payment_methods[0].token
then use it to commit transaction at any time using
transation = Braintree::Transaction.sale(
:amount => "5000.00",
:payment_method_token => token_generated)

Related

How to know Validator earning solana (Testnet)

Setup the Testnet Validator funded with some SOL in Testnet (Not real )
Here is the link for the Explorer
https://explorer.solana.com/address/GfudXfSxpvSBvkyNG7K1CdFhntZw3ASvBeCiTSRV5nzr?cluster=testnet
Stake Account Identity :EjGaPZ59sycMm46VpbukVY9PnwSdPYCfeQnbRLaZaD7m
Vote Account Identoty: 7R5of8HZreWPjURAMupJuik7vx5SAGUghpwU648bWYnt
Validator Identity:GfudXfSxpvSBvkyNG7K1CdFhntZw3ASvBeCiTSRV5nzr
The blocks are getting produced well in the Testnet Enviroment for the validator identity GfudXfSxpvSBvkyNG7K1CdFhntZw3ASvBeCiTSRV5nzr,
How to know the Validator earning where to check it ?
The validator's earnings are stored in the validator's vote account, so check on the SOL balance in 7R5of8HZreWPjURAMupJuik7vx5SAGUghpwU648bWYnt. The voting commissions are paid out every epoch, so you'll have to wait until the next epoch to see rewards in the vote account and stake account.

Stripe: How to provide access during grace period

I have a couple of monthly plans where user can cancel at any moment. Whats the recommended way to handle a grace period where a user still gets access to the application. For example. If the users signup on 1st July and cancels on 15th July, I would like the provide the user access till 30th July.
i am storing the following columns, current_period_start, current_period_end, canceled_at & ended_at.
should grace period check be something like
def grace_period?
return status == 'canceled' && Time.zone.now < current_period_end
end
any clarification on this would be really helpful. thanks.
You should not "cancel" subscription.
Just update with parameter "cancel_at_period_end: true"

Without proration enabled, any changes made to a customer’s subscription mid-cycle goes into effect immediately

During the implementation of recurring payments using Braintree I encountered a problem.
In documentation I can read: “Without proration enabled, any changes made to a customer’s subscription mid-cycle will go into effect at the beginning of the next cycle.” (https://articles.braintreepayments.com/guides/recurring-billing/recurring-advanced-settings#proration)
But if I edit the subscription to a lower dollar amount in the middle of a billing cycle (without proration on downgrades enabled) e.g. from $100 to $80 and then I edit the subscription to a higher dollar amount (with proration on upgrades enabled) e.g. to $90, the gateway will immediately charge me some amount.
In this situation, I would expect that gateway will not generate any transaction, because downgrade should be effective at the beginning of the next cycle and new subscription price ($90) is lower than initial subscription price (100$).
How can I then reach scenario when transaction on proration upgrade will be generated only if new subscription price is higher than maximum subscription price at the current billing cycle?
I'm a developer at Braintree.
If you kept proration on for both price decreases and increases, in the example you give you would see a credit applied to the subscription balance for the decrease, and then a charge applied against the balance for the increase. If the charge exceeds the subscription balance credit, then your customer would be charged.
A subscription will not be charged in the middle of a billing cycle unless you choose to prorate charges. You could create the scenario you want with logic similar to below. Code snippets are in Ruby since you didn't specify what client library you were using.
First look up the subscription you want to update and find the start date of the current billing period:
subscription = Braintree::Subscription.find("subscription_id")
billing_period_start_date = Date.parse(subscription.billing_period_start_date) # convert String to Date
Then iterate over the status_history events of the subscription, and update the billing_period_max_price if the history event took place after the beginning of this billing cycle and the billing_period_max_price is greater than the previous one:
billing_period_max_price = 0.0
subscription.status_history.each do |history_event|
event_date = Date.parse(history_event.timestamp.strftime('%Y/%m/%d')) # convert Time to Date
event_price = history_event.price.to_f
if event_date >= billing_period_start_date && billing_period_max_price < event_price
billing_period_max_price = event_price
end
end
Finally, if the billing_period_max_price is less than what you want to change the subscription price to, prorate the charges:
Subscription.update(
"subscription_id",
:price => "yourHigherPrice",
:options => { :prorate_charges => true }
)
If you have additional questions, feel free to reach out to Braintree support.

Transaction declined in magento 1.9 when testing with DPS PxPay2.0

I am getting transaction declined errors (The transaction was Declined (BH)) when using a test with DPS Payment Express account (PxPay 2.0) for processing credit cards on a website.I am using test credit card no 4111111111111111, expiry date is any future date ,any name for card holder name and 3 digit csv numer.
I am getting following error(response)
Response:DECLINED
Response Code:BH
Currency:USD
Amount: 2016.92
Card:411111........11
Card Holder:MANISH KUMAR
Card Type:Visa
Date:20141007
Time:060747
Transaction Type:Purchase
Help Text:The transaction was Declined (BH)
Can any one please help me....
It is solved by change the currency to NZD.
For others that are using PXPOST "The transaction was Declined (BH)" means that the port is not configured for the Currency you are trying to charge in.
In our case we already had a multi-currency merchant account with our bank but we had to call Payment Express and ask them to enable the new currency we were sending.

How to get Fedex testing tracking number?

I'm configuring FEDEX shipping in Magento website. I got test account number, password, API key and meter number by login in test FEDEX account. I configured myself in Magento. Looks like everything fine. But I don't know how to test is Track Order.
So where can I get tracking number for shipping methods? Should I enter randomly or how can I get that? I tried some forum suggested numbers. But I got below error in my popup:
Tracking information is currently not available
I also checked my shipping_fedex log file in Magento. got logged some error codes in printed array. That's I give in below.
**ERROR log**
[result] => stdClass Object (
[HighestSeverity] => ERROR
[Notifications] => stdClass Object (
[Severity] => ERROR
[Source] => trck
[Code] => 6035
[Message] => Invalid tracking numbers. Please check the following numbers and resubmit.
[LocalizedMessage] => Invalid tracking numbers. Please check the following numbers and resubmit.
)
[Version] => stdClass Object (
[ServiceId] => trck
[Major] => 5
[Intermediate] => 0
[Minor] => 0
)
)
FEDEX help:
What Numbers Can I Track?
Track by Tracking Number: You can enter
up to 30 tracking numbers at a time. You can enter any combination of
FedEx Express, FedEx Express Freight, FedEx Ground, FedEx SmartPost,
FedEx Freight, or FedEx Custom Critical tracking numbers. Please
ensure that you enter only one tracking number per line.
Edit: I used "99999999999" as per Derek suggestion. But I got below response. Still same error in pop up. What does mean __pid =>2432?
Array
(
[request] => <?xml version="1.0" encoding="UTF-8"?>
<FDXTrack2Request xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="FDXTrack2Request.xsd"><RequestHeader><AccountNumber>510087062</AccountNumber><MeterNumber>0</MeterNumber></RequestHeader><PackageIdentifier><Value>999999999999</Value></PackageIdentifier><DetailScans>1</DetailScans></FDXTrack2Request>
[result] =>
[__pid] => 2432
)
Your question is not at all stupid. I upvoted it.
The fedex documentation is horrible and doesn't mention how to use their services while testing and after moving to production. Their support is worse.
While I was rambling in the internet, I found a page mentioning the tracking number 123456789012 as a test number. Use it with your test credentials (key, password, account number and meter number), while you're setting your service path to https://wsbeta.fedex.com:443/web-services/track, and the request will return a valid response that you can build on.
Here’s a list of static tracking numbers that can be used in the FedEx test environment:
449044304137821 = Shipment information sent to FedEx
149331877648230 = Tendered
020207021381215 = Picked Up
403934084723025 = Arrived at FedEx location
920241085725456 = At local FedEx facility
568838414941 = At destination sort facility
039813852990618 = Departed FedEx location
231300687629630 = On FedEx vehicle for delivery
797806677146 = International shipment release
377101283611590 = Customer not available or business closed
852426136339213 = Local Delivery Restriction
797615467620 = Incorrect Address
957794015041323 = Unable to Deliver
076288115212522 = Returned to Sender/Shipper
581190049992 = International Clearance delay
122816215025810 = Delivered
843119172384577 = Hold at Location
070358180009382 = Shipment Canceled
In addition to: 123456789012
You can also use: 111111111111
** Every carrier (UPS, USPS, etc...) has lots of tracking numbers for lots of use-cases, but not FedEx... I find that very strange.
* Also... I am guessing FedEx expects you to use real tracking numbers even in their test environment. It's how I have been testing for multiple use-cases.
I hope this helps anyone, I have spent a while digging around.
On their website they list the tracking numbers you can use:
https://www.fedex.com/en-us/developer/web-services/process.html#develop
Expand the Testing Environment and Mock Tracking Numbers subheading.
Short answer
Use one of the tracking numbers from the table below (copied from Mock Tracking Numbers for FedEx Express and FedEx Ground) or number 123456789012, but mind that the FedEx Sandbox environment might be unstable during your testing and you might need to use FedEx API mocks instead (either built in-house using Wiremock or ready-made by a vendor).
Scan Event
Tracking Number
Track By Reference Info.
Shipment Account Number
Ship Date
Destination Postal Code
Shipment information sent to FedEx
449044304137821
Customer Reference: 115380173Ground Shipment ID: DMWsGWdnNN
510088000
15-08-2020
33126
Tendered
149331877648230
Ground Shipment ID: 149331877648230
510088000}]
15-08-2020
28752
Picked up
020207021381215
Ground Shipment ID: 53089528
510088000
15-08-2020
30549
Arrived at FedEx location
403934084723025
Ground Shipment ID: 403934084723025Department: 31826722
510088000
15-08-2020
99206
At local FedEx facility
920241085725456
Customer Reference: 0014243047/34684523 Ground Shipment ID: 920241085725456
510088000
15-08-2020
19720
At destination sort facility
568838414941
Shipper Reference: P218101_004154359Purchase Order: P218101_004154359
510088000
15-08-2020
85388
Departed FedEx location
039813852990618
Customer Reference: 4631962Ground Shipment ID: THE HOUSEDepartment: McGeePurchase Order: 3385158
510088000
15-08-2020
24740
On FedEx vehicle for delivery
231300687629630
Customer Reference: W62283340102Ground Shipment ID: 231300687629630Purchase Order: 6228334
510088000
15-08-2020
33126
International shipment release
797806677146
N/A
Customer not available or business closed (Delivery Exception 007)
377101283611590
Ground Shipment ID: 377101283611590
510088000
15-08-2020
95815
Local delivery restriction (Delivery Exception 083)
852426136339213
Customer Reference: 118402713013
510088000
15-08-2020
11375
Incorrect address (Delivery Exception 03)
797615467620
Shipper Reference: OTHER-TK104
510088000
15-08-2020
70810
Unable to deliver (Shipment Exception 099)
957794015041323
N/A
Returned to sender/shipper
076288115212522
Invoice: 81909
510088000
15-08-2020
50323
Clearance delay (International)
581190049992
N/A
Delivered
122816215025810
Customer Reference: PO#174724
510088000
15-08-2020
24273
Hold at location
843119172384577
N/A
Shipment canceled
070358180009382
Customer Reference: 15241402Ground Shipment ID: 070358180009382
510088000
15-08-2020
94545
Duplicate Tracking Number
713062653486
Unique Identifier 1: 2457821000~713062653486~FXUnique Identifier 2: 2457835000~713062653486~FX
Long answer
The FedEx Sandbox has numerous stability and test data problems. For example, if you use tracking code 123456789012 you will get a different response status depending on the state of the FedEx Sandbox environment.
If you are performing a one-off manual test of your Magento integration with FedEx API, then using the FedEx Sandbox should be sufficient, and you can go ahead and use one of the codes provided above.
If however, you are running automated regression or integration tests on a schedule or per commit then the instability of the environment might cripple your testing. For example, you might see flaky tests and flaky builds and have to spend time investigating them even though there is nothing wrong with your code or tests, it's just an issue with the FedEx Sandbox API.
To resolve the issue with FedEx Sandbox environment stability you have three options, which are essentially about using test-doubles instead of the real FedEx Sandbox API:
Create and use mocks in your code instead of using the FedEx Sandbox. For example, Mockito in Java or uniuttest.mock in Python. This means you will have to write the FedEx Mockito mocks yourself. And it comes with several tradeoffs.
Create over-the-wire mocks with tools like Wiremock or Mountebank instead of using the FedEx Sandbox. There is a list of tools like that on Wikipedia. The issue here again is that you have to build those over-the-wire mocks yourself, which can be problematic if it's more than one API and you have a lot of work on your plate anyway.
Use ready-made FedEx API mocks like the one from Traffic Parrot instead of using the FedEx Sandbox. The advantage is they are created by experts and you can use them within minutes, just copy their mock API URL and use it instead of the FedEx one. You will have to pay for using them, which can sometimes be a downside of this option.
Here is a good one I pulled out of a code sample in the developer docs.
797843158299
The above list of tracking numbers will indeed work when pointed to the following server endpoint:
https://wsbeta.fedex.com:443/web-services/track
Note that the only time these numbers will not work is during FedEx's scheduled maintenance windows.
You may try getting the ship functionality working first. That will provide you a tracking no that can be used in testing tracking. I did it this way and it works for me!
We're trying to understand FEDEX tracking number testing too. I found this resource. But so far I'm not sure if the numbers work.
We'll update the answer later if we determine it helped or delete it if it does not:
https://www.fedex.com/us/developer/webhelp/ws/2019/US/index.htm#t=wsdvg%2FAppendix_F_Test_Server_Mock_Tracking_Numbers.htm

Resources