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.
We're building a marketplace in NEAR. We have two smart contracts for token and marketplace. Same as NEAR example.
In our platform, we have successfully implemented below features:
Token mint (used contract method: nft_mint)
Token listing for sale in marketplace (used contract methods: storage_deposit nft_approve)
Token purchase (used contract method: offer)
Everything is working fine.
Now, we want to charge the transaction fee (2.5%) on each sales for our marketplace.
--
I did one mint and buy test with Paras Marketplace to observe the royalty and transaction fee distribution. Here is the test details:
With seller.near account, I minted an NFT in Paras Marketplace. And added 3% royalty. And listed it #1 Ⓝ for sale.
With buyer.near account, bought it with another account.
NFT Details:
Name : My Non-fungible token #1
Listed Price : 1 Ⓝ
Royalty : 3%
Sale Breakdown:
Receive (Seller) : 0.95 Ⓝ
Royalty (Creator) : 0.03 Ⓝ
Fee (Paras) : 0.02 Ⓝ
Before purchase - Account Balance
buyer.near : 50.03995 Ⓝ
seller.near : 4.896 Ⓝ
After purchase (1st sale after minted) - Account Balance
buyer.near : 49.03388 Ⓝ | Difference : -1.00607 Ⓝ
seller.near : 5.82587 Ⓝ | Difference : +0.92987 Ⓝ
# NFT Create Transaction
This is nft_create_series transaction. Where Paras is sending "transaction_fee": "200" to charge 2% service fee on each sale:
# NFT Buy Transaction
This is buy transaction. Where Paras charged 2% service fee:
Question:
We want to charge 2.5% service fee on each sales.
We want to implement "transaction_fee": "250" object in our marketplace contract.
How to do the same with our marketplace?
There are several ways that you can go about doing this. The two that I would recommend are the following (I saw you were following along with the zero to hero tutorial):
Option A (simplest) - store your account in the perpetual royalties object for the token when it is minted.
This is the easiest to implement as you don't need to change anything in your contracts and you simply need to alter what is passed into the royalties object on mint.
This requires that you have control over the NFT contract.
This allows you to receive royalties on whatever marketplace the token is sold on since the royalties are stored on the token level in the NFT contract.
This allows you to specify which account should receive the royalties instead of forcing the marketplace contract to store the funds.
Option B - before calling nft_transfer_payout in your marketplace contract, subtract 2.5% from the price object. This will result in your marketplace contract keeping the 2.5% and paying out the remaining 97.5% to the respective accounts.
With this approach, since many accounts are paying for storage, your contract has funds that aren't all withdraw-able by you. You should keep a tally on how much $NEAR you've received so that you can withdraw that amount and not accidentally withdraw too many funds that may have "belonged" to someone else via storage deposits.
i'm quite struggling understanding how we can deposit and withdraw funds from smart contract on NEAR blockchain.
I'm currently using near-sdk-as with AssemblyScript. According to documentation I do have the
ContractPromiseBatch.create(recipient).transfert(amount)
But how can we lock funds into the smart contract and withdraw it from allowed accounts ?
When you call your method with --amount <some amount here> you have deposited these amounts to your contract balance. For example:
near call $CONTRACT add '{"url":"http://EXAPMLE.com", "title":"hello world"}' --accountId $AUTHOR --amount 3 //this is 3 NEARS you deposit to contract balance
When you want to send an amount from your contract balance to another person's balance you can use the contractPromiseBatch API as follows:
const toAnotherPerson = ContractPromiseBatch.create("anotherPerson.testnet");
toAnotherPerson.transfer(<some amount here>);
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.
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